一种多路服务器多缓冲区并行发包的性能优化方法技术

技术编号:5450135 阅读:397 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种多路服务器多缓冲区并行发包的性能优化方法。驱动软件负责分配发送报文使用的缓冲区,需要在内核中为每一个线程申请一个报文缓冲区,因为在内核中申请,所以申请内存时,可以通过参数指定内存的相连的CPU号为线程编号,也就是说,为线程0申请0号CPU上的本地内存,为线程1申请1号CPU上的本地内存。接口库软件在每个线程第一次调用发送报文的API接口时,把线程绑定到与线程号相对应的CPU上。有效避免了CPU访问远地内存和线程在多个CPU上调度的开销,提高了多线程发包的效率。

【技术实现步骤摘要】

本专利技术涉及网络数据处理领域,具体涉及一种多路服务器多缓冲区并行发包的性 能优化方法。
技术介绍
在多路服务器(主板上有多个CPU的服务器)运行的网络数据处理系统,一般需 要使用多线程模式,启动和CPU个数相同的多个线程并行处理,每个线程处理一部分流量, 以便把每个CPU都利用起来。目前常用的技术方案中每个线程申请自己的报文缓冲区,每个线程要发送的报 文,放到该线程的缓冲区中,发送出去。另外,在一般多路CPU的服务器上,每个CPU的内存控制器直接连到一些内存条 上,称为本地内存,主板上没有和本地内存直接相连的内存,称为远地内存。对服务器主板 上每个CPU来说,访问本地内存的效率要比远地内存高得多。在一般技术方案中,每个线程 申请报文缓冲区时,是在所有内存中随机申请的,无法保证尽量使用本地内存提高效率。在一般操作系统中,应用软件的多个线程是在多个CPU上随机调度的,线程调度 会引起线程数据迁移和上下文切换的开销,会影响到服务器系统性能。
技术实现思路
本专利技术的目的是提供来提升 多线程多缓冲区应用在多路服务器上的性能。—种多路服务器多缓冲区并行发包的性能优化方法,包括内核驱动和应用接口库 文件,实现方法如下A、驱动加载时,根据预先设定的线程个数,为每个线程从对应的CPU上申请本地 内存,作为报文缓冲区;B、应用软件的线程第一次调用接口库中的API接口时,首先把内核空间的对应编 号的缓冲区映射到该应用的用户空间,然后把自己绑定到对应编号的CPU上;C、每个线程发送报文时,在自己对应的缓冲区中写入报文,这个过程中,线程与 CPU绑定,不会在CPU之间迁移,报文缓冲区为该CPU的本地内存,不会产生访问远地内存的 开销。本专利技术的一种优选技术方案在于在所述A步骤中线程编号与CPU编号是固定的 对应关系,把线程编号对CPU个数取模,作为该线程对应的CPU编号,使得线程个数大于CPU 个数时,一个CPU上的多个线程和多个报文缓冲区的编号,仍然与CPU编号有固定对应关系。本专利技术有效避免了 CPU访问远地内存和线程在多个CPU上调度的开销,提高了多 线程发包的效率。附图说明图1是本专利技术系统逻辑结构 具体实施方案本专利技术是基于多路CPU的服务器,包含内核驱动和应用接口库的系统,可实现 CPU、缓冲区和线程的紧密结合。驱动软件负责分配发送报文使用的缓冲区,需要在内核中为每一个线程申请一个 报文缓冲区,因为在内核中申请,所以申请内存时,可以通过参数指定内存的相连的CPU号 为线程编号,也就是说,为线程0申请0号CPU上的本地内存,为线程1申请1号CPU上的 本地内存。接口库软件在每个线程第一次调用发送报文的API接口时,把线程绑定到与线程 号相对应的CPU上。该专利技术的实现方法和过程如下(1)驱动为每个线程对应的CPU申请本地内存作为报文缓冲区。驱动加载时,根据预先设定的线程个数,为每个线程从对应的CPU上申请本地内 存,作为报文缓冲区。线程编号与CPU编号是固定的对应关系,把线程编号对CPU个数取模, 作为该线程对应的CPU编号,这样使得线程个数大于CPU个数时,一个CPU上的多个线程和 多个报文缓冲区的编号,仍然与CPU编号有固定对应关系。(2)接口库映射报文缓冲区,绑定对应的CPU。应用软件的线程第一次调用接口库中的API接口时,首先把内核空间的对应编号 的缓冲区映射到该应用的用户空间,然后把自己绑定到对应编号的CPU上。(3)线程并行发送报文。每个线程发送报文时,在自己对应的缓冲区中写入报文,这个过程中,线程与CPU 绑定,不会在CPU之间迁移,报文缓冲区是该CPU的本地内存,不会产生访问远地内存的开 销。本文档来自技高网...

【技术保护点】
一种多路服务器多缓冲区并行发包的性能优化方法,其特征在于:包括内核驱动和应用接口库文件,实现方法如下:A、驱动加载时,根据预先设定的线程个数,为每个线程从对应的CPU上申请本地内存,作为报文缓冲区;B、应用软件的线程第一次调用接口库中的API接口时,首先把内核空间的对应编号的缓冲区映射到该应用的用户空间,然后把自己绑定到对应编号的CPU上;C、每个线程发送报文时,在自己对应的缓冲区中写入报文,这个过程中,线程与CPU绑定,不会在CPU之间迁移,报文缓冲区为该CPU的本地内存,不会产生访问远地内存的开销。

【技术特征摘要】
1.一种多路服务器多缓冲区并行发包的性能优化方法,其特征在于包括内核驱动和 应用接口库文件,实现方法如下A、驱动加载时,根据预先设定的线程个数,为每个线程从对应的CPU上申请本地内存, 作为报文缓冲区;B、应用软件的线程第一次调用接口库中的API接口时,首先把内核空间的对应编号的 缓冲区映射到该应用的用户空间,然后把自己绑定到对应编号的CPU上;C、每个线程发送报文时,在自己对应的缓冲区中写入报文,这个...

【专利技术属性】
技术研发人员:刘朝辉窦晓光刘兴奎李锋伟刘灿
申请(专利权)人:天津曙光计算机产业有限公司
类型:发明
国别省市:12[中国|天津]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1