一种提升应用交付通讯平台多进程程序性能的方法技术

技术编号:10918318 阅读:97 留言:0更新日期:2015-01-15 11:50
本发明专利技术公开了一种提升应用交付通讯平台多进程程序性能的方法,所述方法包括:根据源IP将数据包哈希到网卡队列;绑定所述网卡队列中的数据包到相应的CPU核;将所述CPU核上接收的数据包绑定相应的进程进行处理;为每个进程分别创建服务程序,设置所述服务进程为REUSEPORT选项,并绑定IP和端口;运行修改后的服务程序,根据服务进程的数量调整多队列网卡启用的队列数;所述每个服务进程分别绑定在一个CPU核上。本发明专利技术能够均衡网卡硬中断、软中断,保证接收和发送数据包的CPU核是同一个CPU核,从而提高CPU的缓存命中率。

【技术实现步骤摘要】
【专利摘要】本专利技术公开了,所述方法包括:根据源IP将数据包哈希到网卡队列;绑定所述网卡队列中的数据包到相应的CPU核;将所述CPU核上接收的数据包绑定相应的进程进行处理;为每个进程分别创建服务程序,设置所述服务进程为REUSEPORT选项,并绑定IP和端口;运行修改后的服务程序,根据服务进程的数量调整多队列网卡启用的队列数;所述每个服务进程分别绑定在一个CPU核上。本专利技术能够均衡网卡硬中断、软中断,保证接收和发送数据包的CPU核是同一个CPU核,从而提高CPU的缓存命中率。【专利说明】
本专利技术涉及计算机网络技术,尤其涉及。
技术介绍
CPU缓存是位于CPU与内存之间的临时存储器,主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾。CPU缓存按照数据读取顺序与CPU结合的紧密程度,可分为一级缓存、二级缓存。其中,一级缓存又可以分为数据缓存和指令缓存,用来存放数据及对执行这些数据的指令进行及时解码。 通常多核处理器的每个核有一个较小的独立的一级缓存,另外所有的核共享一个较大的二级缓存。程序访问数据的速度如下: 如果程序访问的数据在本核的一级缓存中,则访问该数据的速度最快。 如果程序访问的数据在二级缓存中,则访问该数据较快。 如果程序访问的数据不在一、二级缓存中,因CPU运算速度比内存读写速度快,CPU需花费很长时间来从内存调取数据,访问很慢。 同一个数据存储在多个核的一级缓存上时,有一个核修改该数据,会导致其他核上的该数据的缓存失效。 目前,多核处理器环境下,单队列网卡和多队列网卡都有不同程度上提高CPU缓存命中率的机制。 单队列网卡下提高CPU缓存命中率的机制 单队列网卡机制采用RPS (Receive Packet Steering接收数据包转向)+RFS (Receive Flow Steering接收数据流转向)机制优化数据流。RPS实现了数据流的哈希归类,同时把软中断负载均衡到各个CPU。由于RPS只是单纯的把同一流的数据包分发给同一个CPU核来处理,可能会造成分发数据流的CPU核和执行处理该数据流的应用程序的核不是同一个,此时,数据包均衡到不同的CPU,应用程序所在的CPU和软中断处理的CPU不同,严重影响CPU缓存效率。RFS解决了该问题,它把接收到的数据包送达应用所在的CPU上,提高CPU缓存命中率。其中,RPS与RFS的示意图如图1a和图1b所示。 单队列网卡机制的RPS、RFS虽然能均衡网卡软中断处理,但硬中断会成为系统性能的瓶颈。 多队列网卡下提高CPU缓存命中率的机制 多队列网卡机制米用RSS(Receive-side Scaling 接收端扩展)、XPS(TransmitPacket Steering发送数据包转向)、REUSEP0RT (端口重用)等方法优化数据流。多网卡下,有多个收、发队列。网卡收到数据包后,使用网络层RSS哈希算法(基于IP的算法)或者传输层RSS哈希算法(基于端口的算法)把数据包发到各个队列,然后发送中断信号到队列中处理队列中断的CPU核上,从而使得该核执行驱动指令,收取数据包到系统。RSS原理如图2所示。 XPS机制中,为每个CPU准备一个发送队列映射表,表示该CPU发送的数据包,只能用该发送队列映射表上设置的队列发送,用户可以设置每个CPU的发送队列映射表。通过限定CPU发送队列的数量,相当于绑定CPU到发送队列,提高了 CPU缓存效率。图3是XPS的实例图,图中每个处理器只能用一个队列发送数据包。 传统的多进程模型中,这些进程共享服务器socket (套接字)。客户端请求到达时,各个进程竞争获得该请求,此时客户端请求由哪个进程处理是不确定的。为了解决这一问题,为创建的socket设置REUSEP0RT (端口重用)选项,使得多个进程可同时绑定同一个IP和端口,客户端请求根据(源IP,源端口,目的IP,目的端口)哈希到达服务器进程,消除了 accept (接收)惊群问题,提高了系统效率。图4所示REUSEP0RT的实例图,4个进程绑定相同的IP和端口对客户端外提供服务。 在多核处理器、多队列网卡环境下,采用以上方法虽然能提高程序的处理效率,但确不能保证接收数据包的CPU核和发送数据包的CPU核是同一个CPU核,会导致CPU缓存效率低,系统性能下降。
技术实现思路
为解决上述技术问题,本专利技术的目的是提供一种多核处理器、多队列网卡环境下提升应用交付通讯平台多进程程序性能的方法,应用交付通讯平台中处理网卡队列硬中断、软中断、协议栈收发数据包、应用程序处理等在一个核上完成,并通过集中数据包的处理,提高系统CPU缓存效率,最终提高整个系统的性能。 本专利技术的目的通过以下的技术方案来实现: ,该方法包括: 根据源IP将数据包哈希到网卡队列; 绑定所述网卡队列中的数据包到相应的CPU核; 将所述CPU核上接收的数据包绑定相应的进程进行处理; 为每个进程分别创建服务程序,设置所述服务进程为REUSEP0RT选项,并绑定IP和端口 ; 运行修改后的服务程序,根据服务进程的数量调整多队列网卡启用的队列数;所述每个服务进程分别绑定在一个CPU核上。 与现有技术相比,本专利技术的一个或多个实施例可以具有如下优点: 能够均衡网卡硬中断、软中断,保证接收和发送数据包的CPU核是同一个CPU核,从而提高CPU的缓存命中率。 【专利附图】【附图说明】 图1a和图1b是现有技术提供的RPS/RFS和RPS结构示意图; 图2是现有技术提供的RSS结构原理图; 图3是现有技术提供的XPS实例图; 图4是现有技术提供的REUSEP0RT实例结构图; 图5是本专利技术提供的方法流程图; 图6是本专利技术建立连接时的示意图; 图7是本专利技术建立连接后的示意图。 【具体实施方式】 为使本专利技术的目的、技术方案和优点更加清楚,下面将结合实施例及附图对本专利技术作进一步详细的描述。 如图5所示,为提升应用交付通讯平台多进程程序性能的方法,该方法包括: 步骤10根据源IP将数据包哈希到网卡队列; 为了保证同一个源IP的数据包硬中断、软中断都交由同一个处理器核处理,替换Linux内核网卡驱动模块中默认基于源IP、源端口、目的IP、目的端口的RSS哈希算法为源IP地址哈希算法。 步骤20绑定所述网卡队列中的数据包到相应的CPU核; 第N个网卡队列上的网卡硬中断、软中断交给第N个CPU处理。设置网卡的第N个队列的硬中断到第N个CPU核;软中断默认与硬中断运行在同一个CPU核上。 步骤30将所述CPU核上接收的数据包绑定相应的进程进行处理; 第N个CPU上接收的数据包交给第N个进程处理。修改REUSEP0RT哈希算法,使其哈希的结果与步骤10中哈希算法的哈希结果相同。 步骤40为每个进程分别创建服务程序,设置所述服务进程为REUSEP0RT选项,并绑定IP和端口 ;然后调用accept等待客户端连接。 步骤50运行修改后的服务程序,根据服务进程的数量调整多队列网卡启用的队列数;所述每个服务进程分别绑定在一个CPU核上。 在修改后的Linux系统上运行修改后的服务程序,假设进程数量为N,则调整多队列本文档来自技高网
...

【技术保护点】
一种提升应用交付通讯平台多进程程序性能的方法,其特征在于,所述方法包括:根据源IP将数据包哈希到网卡队列;绑定所述网卡队列中的数据包到相应的CPU核;将所述CPU核上接收的数据包绑定相应的进程进行处理;为每个进程分别创建服务程序,设置所述服务进程为REUSEPORT选项,并绑定IP和端口;运行修改后的服务程序,根据服务进程的数量调整多队列网卡启用的队列数;所述每个服务进程分别绑定在一个CPU核上。

【技术特征摘要】

【专利技术属性】
技术研发人员:高明张广龙彭建章
申请(专利权)人:般固北京科技股份有限公司
类型:发明
国别省市:北京;11

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

1