一种多CPU环境下网卡数据处理方法和装置制造方法及图纸

技术编号:14849043 阅读:83 留言:0更新日期:2017-03-17 22:50
本申请提供了一种多CPU环境下网卡数据处理方法和装置,该方法包括:获取位于内存的接收队列中存储的网卡数据,所述网卡数据包含报文;确定所述多CPU中与所述报文对应的处理CPU;将所述报文发送至所述处理CPU对应的处理队列,以使所述处理CPU从处理队列中获取并处理所述报文。本申请的方案能够充分利用多核处理器中各CPU的资源,优化系统整体处理性能,同时兼容具有不同数量CPU的多核处理器。

【技术实现步骤摘要】

本申请涉及计算机
,尤其涉及一种多CPU环境下网卡数据处理方法和装置
技术介绍
在多CPU环境下,多核处理器自带的专用以太网卡,由于硬件支持,数据报文可以根据要求分发到预期的多CPU进行处理。但是多核处理器通常还需要兼容通用以太网卡,现有的多核处理器兼容通用以太网卡的方案包括以下两种:方案一:通用以太网卡具有一个硬件队列,网卡将接收的数据报文发送至多核处理器中的一个CPU进行处理,其他CPU不参与网卡数据的处理。方案二:由通用以太网卡自身提供多个硬件队列,经配置后,网卡可将接收到的数据报文按报文特征分发到自身的多个硬件队列中,再由多个CPU分别对应处理各网卡硬件队列中的数据报文。现有技术方案一的不足在于,网卡数据中的一个报文在某一时刻只能发送至一个CPU进行处理,对称多处理结构(SMP,SymmetricMulti-Processing)方式下无法通过硬件的支持把数据报文分发到多个CPU处理,因此除参与网卡数据处理的一个CPU外,多核处理器的其他CPU资源被浪费,限制了系统整体的处理性能。现有技术方案二的不足在于,现有技术中自身能够提供多硬件队列的通用网卡,其硬件队列的数量通常是有限并且固定的,因此只能兼容CPU数目与所述通用网卡中硬件队列数量相同的多核处理器,即不能灵活兼容具有不同数量CPU的多核处理器。
技术实现思路
本申请实施例提出了解决上述问题的技术方案,能够使网卡充分利用多核处理器中各CPU的资源,优化系统整体处理性能,同时兼容具有不同数量CPU的多核处理器。在一个方面,本申请实施例提供了一种多CPU环境下网卡数据处理方法,其特征在于,所述方法包括:获取位于内存的接收队列中存储的网卡数据,所述网卡数据包含报文;确定所述多CPU中与所述报文对应的处理CPU;将所述报文发送至所述处理CPU对应的处理队列,以使所述处理CPU从处理队列中获取并处理所述报文。优选的,所述接收队列为环形队列,并且,所述接收队列的写指针由网卡通过硬件方式更新,所述接收队列的读指针通过软件方式更新。优选的,所述确定所述多CPU中与所述报文对应的处理CPU,包括:对所述报文进行哈希计算,根据计算结果确定所述多CPU中与所述报文对应的处理CPU。优选的,所述将所述报文发送至所述处理CPU对应的处理队列,包括:创建所述报文的描述符;将所述报文和所述描述符发送至所述处理CPU对应的处理队列。优选的,在执行所述获取位于内存的接收队列中存储的网卡数据步骤之前,还包括:创建接收进程;在所述接收进程中执行获取位于内存的接收队列中存储的网卡数据,所述网卡数据包含报文;确定所述多CPU中与所述报文对应的处理CPU;将所述报文发送至所述处理CPU对应的处理队列,以使所述处理CPU从处理队列中获取并处理所述报文的步骤。在另一个方面,本申请实施例提供了一种多CPU环境下网卡数据处理装置,其特征在于,所述装置包括:获取模块,用于获取位于内存的接收队列中存储的网卡数据,所述网卡数据包含报文;确定模块,用于确定所述多CPU中与所述报文对应的处理CPU;发送模块,用于将所述报文发送至所述处理CPU对应的处理队列,以使所述处理CPU从处理队列中获取并处理所述报文。优选的,所述接收队列为环形队列,并且,所述接收队列的写指针由网卡通过硬件方式更新,所述接收队列的读指针通过软件方式更新。优选的,所述确定模块,具体用于对所述报文进行哈希计算,根据计算结果确定所述多CPU中与所述报文对应的处理CPU。优选的,所述发送模块,具体用于:创建所述报文的描述符;将所述报文和所述描述符发送至所述处理CPU对应的处理队列,以使所述处理CPU从处理队列中获取并处理所述报文。优选的,所述装置还包括创建模块,用于创建接收进程;所述获取模块,具体用于在所述接收进程中执行获取位于内存的接收队列中存储的网卡数据,所述网卡数据包含报文;所述确定模块,具体用于在所述接收进程中确定所述多CPU中与所述报文对应的处理CPU;所述发送模块,具体用于在所述接收进程中将所述报文发送至所述处理CPU对应的处理队列,以使所述处理CPU从处理队列中获取并处理所述报文的步骤。本申请的有益效果如下:通过在多CPU环境下,由位于内存的接收队列获取网卡数据后,将网卡数据中的报文分别转发至各报文对应的CPU的处理队列,以使各CPU参与网卡数据的处理,本申请的方案能够使网卡充分利用多核处理器中各CPU的资源,优化系统整体处理性能,同时兼容具有不同数量CPU的多核处理器。附图说明下面将参照附图描述本申请的具体实施例,其中:图1示出了本申请实施例中多CPU环境下网卡数据处理方法的流程示意图;图2示出了本申请实施例中多CPU环境下网卡数据处理方法的场景示意图;图3示出了本申请实施例中多CPU环境下网卡数据处理装置的结构示意图;具体实施方式为了使本申请的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。并且在不冲突的情况下,本说明中的实施例及实施例中的特征可以互相结合。专利技术人在专利技术过程中注意到:现有技术中仅具有一个硬件队列的通用以太网卡,仅能将数据报文发送至多核处理器中的一个CPU进行处理,多核处理器的其他CPU资源被浪费,限制了系统整体的处理性能;而自身具有多个硬件队列的通用以太网卡虽然可将接收到的数据报文分发到自身硬件队列中,再由多个CPU分别对应的处理每个网卡硬件队列中的数据报文,但其硬件队列的数量通常是有限并且固定的,即不能灵活兼容CPU数量与其硬件队列数量不同的多核处理器。基于此,本申请实施例提出了在多CPU环境下,由位于内存的接收队列获取网卡数据后,将网卡数据中的报文分别转发至各报文对应的CPU的处理队列,以使各CPU参与网卡数据的处理,进而能够使网卡充分利用多核处理器中各CPU的资源,优化系统整体处理性能,同时兼容具有不同数量CPU的多核处理器。下面结合实施例对本申请的具体实施方式进行描述。实施例一图1示出了本申请实施例一中的多CPU环境下网卡数据处理方法的流程示意图,如图所示,包括:S101,获取位于内存的接收队列中存储的网卡数据,所述网卡数据包含报文;本文档来自技高网...

【技术保护点】
一种多CPU环境下网卡数据处理方法,其特征在于,所述方法包括:获取位于内存的接收队列中存储的网卡数据,所述网卡数据包含报文;确定所述多CPU中与所述报文对应的处理CPU;将所述报文发送至所述处理CPU对应的处理队列,以使所述处理CPU从处理队列中获取并处理所述报文。

【技术特征摘要】
1.一种多CPU环境下网卡数据处理方法,其特征在于,所述方法包括:
获取位于内存的接收队列中存储的网卡数据,所述网卡数据包含报文;
确定所述多CPU中与所述报文对应的处理CPU;
将所述报文发送至所述处理CPU对应的处理队列,以使所述处理CPU从处
理队列中获取并处理所述报文。
2.如权利要求1所述的方法,其特征在于,所述接收队列为环形队列,并
且,所述接收队列的写指针由网卡通过硬件方式更新,所述接收队列的读指针
通过软件方式更新。
3.如权利要求1所述的方法,其特征在于,所述确定所述多CPU中与所述
报文对应的处理CPU,包括:
对所述报文进行哈希计算,根据计算结果确定所述多CPU中与所述报文对
应的处理CPU。
4.如权利要求1至3中任一项所述的方法,其特征在于,所述将所述报文
发送至所述处理CPU对应的处理队列,包括:
创建所述报文的描述符;
将所述报文和所述描述符发送至所述处理CPU对应的处理队列。
5.如权利要求1至3中任一项所述的方法,其特征在于,在执行所述获取
位于内存的接收队列中存储的网卡数据步骤之前,还包括:
创建接收进程;
在所述接收进程中执行获取位于内存的接收队列中存储的网卡数据,所述
网卡数据包含报文;确定所述多CPU中与所述报文对应的处理CPU;将所述报
文发送至所述处理CPU对应的处理队列,以使所述处理CPU从处理队列中获取
并处理所述报文的步骤。
6.一种多CPU环境下网卡数据处理装置,其特征在...

【专利技术属性】
技术研发人员:姜彦君
申请(专利权)人:曙光信息产业北京有限公司
类型:发明
国别省市:北京;11

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

1