发明名称 一种多路服务器多缓冲区并行收包的性能优化方法
摘要 本发明提供了一种多路服务器多缓冲区并行收包的性能优化方法。驱动软件负责分配接收报文使用的缓冲区,需要在内核中为每一个线程申请一个报文缓冲区,因为在内核中申请,所以申请内存时,可以通过参数指定内存的相连的CPU号为线程编号,也就是说,为线程0申请0号CPU上的本地内存,为线程1申请1号CPU上的本地内存。接口库软件在每个线程第一次调用接收报文的API接口时,把线程绑定到与线程号相对应的CPU上。有效避免了CPU访问远地内存和线程在多个CPU上调度的开销,提高了多线程收包的效率。
申请公布号 CN102073547B 申请公布日期 2013.08.28
申请号 CN201010611827.8 申请日期 2010.12.17
申请人 国家计算机网络与信息安全管理中心;曙光信息产业(北京)有限公司 发明人 云晓春;杜跃进;王丽宏;汪立东;陈训逊;包秀国;杜兰;王勇;刘朝辉
分类号 G06F9/50(2006.01)I 主分类号 G06F9/50(2006.01)I
代理机构 北京安博达知识产权代理有限公司 11271 代理人 徐国文
主权项 一种多路服务器多缓冲区并行收包的性能优化方法,其特征在于:所述服务器包括内核驱动和应用接口库系统,所述方法包括如下步骤:A、驱动加载时,根据预先设定的线程个数,为每个线程从对应的CPU上申请本地内存,作为报文缓冲区;B、应用软件的线程第一次调用接口库中的API接口时,首先把内核空间的对应编号的缓冲区映射到所述应用软件的用户空间,然后把自己绑定到对应编号的CPU上;C、每个线程循环从自己对应的缓冲区中接收报文,这个过程中,线程与CPU绑定,不会在CPU之间迁移,报文缓冲区是该CPU的本地内存,不会产生访问远地内存的开销;所述A步骤中线程编号与CPU编号是固定的对应关系,把线程编号对CPU个数取模,作为该线程对应的CPU编号,使得线程个数大于CPU个数时,一个CPU上的多个线程和多个报文缓冲区的编号,仍然与CPU编号有固定对应关系。
地址 100029 北京市朝阳区裕民路甲3号