CN105630731A - 一种多cpu环境下网卡数据处理方法和装置 - Google Patents
一种多cpu环境下网卡数据处理方法和装置 Download PDFInfo
- Publication number
- CN105630731A CN105630731A CN201510983045.XA CN201510983045A CN105630731A CN 105630731 A CN105630731 A CN 105630731A CN 201510983045 A CN201510983045 A CN 201510983045A CN 105630731 A CN105630731 A CN 105630731A
- Authority
- CN
- China
- Prior art keywords
- cpu
- message
- queue
- receiving
- card data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供了一种多CPU环境下网卡数据处理方法和装置,该方法包括:获取位于内存的接收队列中存储的网卡数据,所述网卡数据包含报文;确定所述多CPU中与所述报文对应的处理CPU;将所述报文发送至所述处理CPU对应的处理队列,以使所述处理CPU从处理队列中获取并处理所述报文。本申请的方案能够充分利用多核处理器中各CPU的资源,优化系统整体处理性能,同时兼容具有不同数量CPU的多核处理器。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种多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,获取位于内存的接收队列中存储的网卡数据,所述网卡数据包含报文;
S102,确定所述多CPU中与所述报文对应的处理CPU;
S103,将所述报文发送至所述处理CPU对应的处理队列,以使所述处理CPU从处理队列中获取并处理所述报文。
本申请中,多核处理器中有一个CPU用于从网卡获取网卡数据,并将网卡数据中的报文分发给多核处理器的其他CPU,其中从网卡获取网卡数据,并将网卡数据中的报文分发给其他CPU的CPU为接收CPU,所述多核处理器的其他CPU为处理CPU。多核处理器中包括一个接收CPU和至少一个处理CPU,这些CPU具有共享内存(或具有各自的内存),用于存储数据。接收CPU对应接收队列,多个处理CPU分别对应处理队列,对于每个接收队列和处理队列,都在内存中为其分配了独立的数据缓冲区。
在S101中,网卡接收到网卡数据后,将网卡数据发送至接收CPU对应的接收队列,所述接收队列位于内存中,所述网卡数据包含至少一个报文。接收CPU创建与接收CPU绑定的接收进程,在接收进程中执行获取位于内存的接收队列中存储的网卡数据。所述接收进程利用系统的亲和性(affinity)与所述接收CPU实现绑定
优选的,在S101中,所述接收队列为环形队列,并且,所述接收队列的写指针由网卡通过硬件方式更新,所述接收队列的读指针通过软件方式更新。
因接收队列采用了环形队列的数据结构,因此其可采用无锁算法,避免了加锁对性能的影响。同时,网卡接收到网卡数据后可通过直接内存存取(DMA)方式将网卡数据存储至位于内存的接收队列中,并更新硬件写指针(硬件Wptr),网卡通过中断通知接收CPU的接收进程,所述接收进程获取位于内存的接收队列中存储的网卡数据;或者接收CPU的接收进程基于轮询机制获取位于内存的接收队列中存储的网卡数据。接收CPU的接收进程基于软件控制的读指针(软件Rptr)读取位于内存的,与接收CPU对应的接收队列中存储的网卡数据。
在S102中,接收CPU的接收进程获取网卡数据中的至少一个报文,分别确定每个报文对应的处理CPU。
优选的,在S102中,对所述报文进行哈希计算,根据计算结果确定所述多CPU中与所述报文对应的处理CPU。
接收CPU的接收进程获取网卡数据中的至少一个报文后,提取报文的五元组信息,所述五元组信息为源IP地址、目的IP地址、协议号、源端口和目的端口,通过计算五元组信息的哈希值确定所述报文对应的处理CPU;当所述报文为分片报文时,提取报文的三元组信息,所述三元组信息为源IP地址、目的IP地址和协议号,通过计算三元组信息的哈希值确定所述报文对应的处理CPU。
在S103中,在S102确定了与每个报文对应的处理CPU后,接收CPU的接收进程将每个报文分别发送至对应的处理CPU在内存中对应的处理队列,以使处理CPU从其对应的处理队列中获取并处理报文。因为接收队列和处理队列均位于内存中,因此可通过软件方式实现数据转移,不依赖网卡通过硬件手段实现。同时因为接收CPU可以将各报文分别发送至任意数量的处理CPU对应的处理队列,因此本实施例的方案可兼容具有任意数量CPU的多核处理器。
优选的,在S103中,创建所述报文的描述符;将所述报文和所述描述符发送至所述处理CPU对应的处理队列。
接收CPU的接收进程还创建每个报文的描述符,所述描述符为所述报文的缓冲区描述符。在S102确定了与每个报文对应的处理CPU后,将每个报文的描述符随报文一同发送至对应的处理CPU在内存中对应的处理队列。所述描述符用于标识所述报文,以使处理CPU能够根据描述符从其对应的处理队列中获取并处理相关报文。
优选的,在S103中,处理队列为环形队列,位于内存。每个处理CPU均通过与自身绑定的处理进程处理自身对应的处理队列中的报文,每个所述处理进程利用系统的亲和性(affinity)分别与处理CPU实现绑定。
接收CPU的接收进程基于软件控制的写指针(软件Wptr)将报文数据分别写入报文对应的处理CPU对应的内存中的处理队列,与处理CPU绑定的处理进程基于软件控制的读指针(软件Rptr)读取相应处理队列中的报文数据进行处理。因接收队列采用了环形队列的数据结构,因此其可采用无锁算法,避免了加锁对性能的影响,便于实现接收进程和处理进程之间的数据交换。
本实施例通过在多CPU环境下,由位于内存的接收队列获取网卡数据后,将网卡数据中的报文分别转发至各报文对应的CPU的处理队列,以使各CPU参与网卡数据的处理,本实施例能够使网卡充分利用多核处理器中各CPU的资源,优化系统整体处理性能,同时兼容具有不同数量CPU的多核处理器。
本实施例中的接收队列和处理队列均位于内存中,报文在所述接收队列和处理队列间的传输均基于软件,易于实现并且不受限于网卡硬件队列数量,也不受限于网卡与多核处理器的硬件隔离;本实施例中的接收队列和处理队列均可以为环形队列的数据结构,读写指针可分别更新,读和写为不同进程,避免了加锁对性能的影响,提高了处理性能;本实施例通过对报文进行哈希计算以便根据计算结果确定所述报文对应的处理CPU,使报文能够分发至对应的处理CPU进行处理;本实施例中接收CPU的接收进程向各处理CPU对应的处理队列分发报文时还同时分发了所述报文对应的描述符,使各处理CPU能够根据所述描述符准确的获取所述报文以便进行处理;本实施例中接收进程与接收CPU绑定,接收CPU基于接收进程处理接收队列中的网卡数据,处理进程与处理CPU绑定,各处理CPU基于各自绑定的处理进程处理各自对应的处理队列中的报文,即多CPU中的各CPU均基于各自绑定的进程实现网卡数据的分发或者处理,充分利用了多CPU中各CPU的资源,提高了处理性能。
实施例二
图2示出了本申请实施例二中的多CPU环境下网卡数据处理方法场景示意图,如图2所示。
多核处理器中包括多个CPU,其中一个CPU用于从网卡获取网卡数据,并将网卡数据中的报文分发给多核处理器的其他CPU,其中从网卡获取网卡数据,并将网卡数据中的报文分发给其他CPU的CPU为接收CPU,所述多核处理器的其他CPU为处理CPU。多核处理器中包括一个接收CPU和至少一个处理CPU(图2中以n个处理CPU为例,实际上处理CPU的数量可以为任意自然数,本申请中不再列举不同数量CPU的场景)。
多核处理器的接收CPU和n个处理CPU具有共享内存(各CPU也可具有各自的内存,本申请不再举例),用于存储数据。接收CPU对应接收队列,处理CPU1-n分别对应处理队列1-n,对于每个接收队列和处理队列,都在内存中为其分配了独立的数据缓冲区。
数据处理流程包括以下步骤:
步骤1,网卡将接收到的网卡数据通过DMA发送至位于内存中的接收队列,同时更新硬件写指针(硬件Wptr),所述网卡数据中包括至少一个报文,所述接收队列为环形队列
步骤2,网卡通过中断通知接收CPU的接收进程获取网卡数据,或者接收进程通过接收CPU的自身轮询机制获取网卡数据。具体的,所述接收进程基于软件读指针(软件Rprt)读取接收队列中包括至少一个报文的网卡数据。因为接收队列为环形队列的数据结构,因此其基于硬件写指针实现的数据写入与基于软件读指针实现的数据读取为相互独立的过程,同时避免了加锁对性能的影响。
步骤3,接收进程获取接收队列中的至少一个报文后,分别提取每个报文中的五元组信息,所述五元组信息为源IP地址、目的IP地址、协议号、源端口和目的端口,通过计算五元组信息的哈希值确定所述报文对应的处理CPU(当所述报文为分片报文时,提取所述分片报文的三元组信息,所述三元组信息为源IP地址、目的IP地址和协议号,通过计算三元组信息的哈希值确定所述报文对应的处理CPU)。
根据确定的每个报文对应的处理CPU进一步确定所述处理CPU对应的处理队列,并将每个报文分别发送至对应的处理队列中,所述处理队列为环形队列。具体的,所述接收进程基于软件写指针(软件Wprt)将各个报文写入对应的处理CPU对应的处理队列中。
例如当接收进程根据某一报文的五元组信息计算哈希值后确定所述报文应当对应的由处理CPU2处理,因为处理CPU2对应处理队列2,所以将所述报文发送至处理队列2中。
具体的,在将每个报文分别发送至对应的处理队列时,还生成每个报文的描述符,所述描述符为缓冲区描述符,将所述描述符与报文一同发送至对应的处理队列。
步骤4,各处理CPU的处理进程从各自对应的处理队列中读取报文,并进行处理。具体的,各处理CPU的处理进程根据各自对应的处理队列中报文的描述符读取和处理报文。具体的,所述处理进程基于软件读指针(软件Rprt)读取对应的处理队列中的报文。因为各处理队列为环形队列的数据结构,因此接收进程基于软件写指针实现的数据写入与处理进程基于软件读指针实现的数据读取为相互独立的过程,同时避免了加锁对性能的影响。
本实施例通过在多CPU环境下,由位于内存的接收队列获取网卡数据后,将网卡数据中的报文分别转发至各报文对应的CPU的处理队列,以使各CPU参与网卡数据的处理,本实施例能够使网卡充分利用多核处理器中各CPU的资源,优化系统整体处理性能,同时兼容具有不同数量CPU的多核处理器。
本实施例中的接收队列和处理队列均位于内存中,报文在所述接收队列和处理队列间的传输均基于软件,易于实现并且不受限于网卡硬件队列数量,也不受限于网卡与多核处理器的硬件隔离;本实施例中的接收队列和处理队列均可以为环形队列的数据结构,读写指针可分别更新,读和写为不同进程,避免了加锁对性能的影响,提高了处理性能;本实施例通过对报文进行哈希计算以便根据计算结果确定所述报文对应的处理CPU,使报文能够分发至对应的处理CPU进行处理;本实施例中接收CPU的接收进程向各处理CPU对应的处理队列分发报文时还同时分发了所述报文对应的描述符,使各处理CPU能够根据所述描述符准确的获取所述报文以便进行处理;本实施例中接收进程与接收CPU绑定,接收CPU基于接收进程处理接收队列中的网卡数据,处理进程与处理CPU绑定,各处理CPU基于各自绑定的处理进程处理各自对应的处理队列中的报文,即多CPU中的各CPU均基于各自绑定的进程实现网卡数据的分发或者处理,充分利用了多CPU中各CPU的资源,提高了处理性能。
基于同一发明构思,本申请实施例中还提供了一种多CPU环境下网卡数据处理装置,由于这些设备解决问题的原理与一种多CPU环境下网卡数据处理方法相似,因此这些设备的实施可以参见方法的实施,重复之处不再赘述。
实施例三
图3为本申请实施例三中多CPU环境下网卡数据处理装置的结构示意图。
如图3所示,本申请实施例三中多CPU环境下网卡数据处理装置300包括:
获取模块301,用于获取位于内存的接收队列中存储的网卡数据,所述网卡数据包含报文;
确定模块302,用于确定所述多CPU中与所述报文对应的处理CPU;
发送模块303,用于将所述报文发送至所述处理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的资源,提高了处理性能。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
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环境下网卡数据处理装置,其特征在于,所述装置包括:
获取模块,用于获取位于内存的接收队列中存储的网卡数据,所述网卡数据包含报文;
确定模块,用于确定所述多CPU中与所述报文对应的处理CPU;
发送模块,用于将所述报文发送至所述处理CPU对应的处理队列,以使所述处理CPU从处理队列中获取并处理所述报文。
7.如权利要求6所述的装置,其特征在于,所述接收队列为环形队列,并且,所述接收队列的写指针由网卡通过硬件方式更新,所述接收队列的读指针通过软件方式更新。
8.如权利要求6所述的装置,其特征在于,所述确定模块,具体用于对所述报文进行哈希计算,根据计算结果确定所述多CPU中与所述报文对应的处理CPU。
9.如权利要求6至8中任一项所述的装置,其特征在于,所述发送模块,具体用于:创建所述报文的描述符;将所述报文和所述描述符发送至所述处理CPU对应的处理队列,以使所述处理CPU从处理队列中获取并处理所述报文。
10.如权利要求6至8中任一项所述的装置,其特征在于,所述装置还包括创建模块,用于创建接收进程;
所述获取模块,具体用于在所述接收进程中执行获取位于内存的接收队列中存储的网卡数据,所述网卡数据包含报文;
所述确定模块,具体用于在所述接收进程中确定所述多CPU中与所述报文对应的处理CPU;
所述发送模块,具体用于在所述接收进程中将所述报文发送至所述处理CPU对应的处理队列,以使所述处理CPU从处理队列中获取并处理所述报文的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510983045.XA CN105630731A (zh) | 2015-12-24 | 2015-12-24 | 一种多cpu环境下网卡数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510983045.XA CN105630731A (zh) | 2015-12-24 | 2015-12-24 | 一种多cpu环境下网卡数据处理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105630731A true CN105630731A (zh) | 2016-06-01 |
Family
ID=56045694
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510983045.XA Pending CN105630731A (zh) | 2015-12-24 | 2015-12-24 | 一种多cpu环境下网卡数据处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105630731A (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106527653A (zh) * | 2016-10-12 | 2017-03-22 | 东软集团股份有限公司 | 调整cpu频率的方法及装置 |
CN108259369A (zh) * | 2018-01-26 | 2018-07-06 | 迈普通信技术股份有限公司 | 一种数据报文的转发方法及装置 |
CN109039944A (zh) * | 2018-11-01 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种数据包的分流方法、装置及设备 |
CN109729024A (zh) * | 2018-12-29 | 2019-05-07 | 中盈优创资讯科技有限公司 | 数据包处理系统及方法 |
CN110012025A (zh) * | 2019-04-17 | 2019-07-12 | 浙江禾川科技股份有限公司 | 一种图像采集过程中的数据传输方法、系统及相关装置 |
CN110231977A (zh) * | 2018-03-05 | 2019-09-13 | 中兴通讯股份有限公司 | 数据库的处理方法、装置、存储介质及电子装置 |
CN110928604A (zh) * | 2019-11-11 | 2020-03-27 | 北京天融信网络安全技术有限公司 | 基于无锁环状队列的密码卡异步调用方法 |
CN111030844A (zh) * | 2019-11-14 | 2020-04-17 | 中盈优创资讯科技有限公司 | 流量处理框架建立方法及装置 |
CN111083075A (zh) * | 2019-12-20 | 2020-04-28 | 盛科网络(苏州)有限公司 | 多核SoC处理报文的方法及应用其的SoC |
CN111277514A (zh) * | 2020-01-21 | 2020-06-12 | 新华三技术有限公司合肥分公司 | 一种报文队列分配方法、报文转发方法及相关装置 |
CN111614794A (zh) * | 2020-04-24 | 2020-09-01 | 南京南瑞继保工程技术有限公司 | 报文传输方法、装置、电子设备及存储介质 |
CN111669374A (zh) * | 2020-05-25 | 2020-09-15 | 成都安恒信息技术有限公司 | 一种IPsec VPN单条隧道软件加解密性能扩展方法 |
CN112073332A (zh) * | 2020-08-10 | 2020-12-11 | 烽火通信科技股份有限公司 | 报文分发方法、多核处理器及可读存储介质 |
WO2021073473A1 (zh) * | 2019-10-16 | 2021-04-22 | 中兴通讯股份有限公司 | 数据包处理方法、装置、通信设备及存储介质 |
CN112948313A (zh) * | 2021-03-01 | 2021-06-11 | 杭州迪普科技股份有限公司 | 一种会话数据的管理方法和装置 |
CN114338548A (zh) * | 2020-10-12 | 2022-04-12 | 迈普通信技术股份有限公司 | 报文分流方法、装置、网络设备及计算机可读存储介质 |
CN114553938A (zh) * | 2022-02-25 | 2022-05-27 | 苏州浪潮智能科技有限公司 | 一种通信报文的处理方法、装置、电子设备及存储介质 |
CN115442183A (zh) * | 2022-08-02 | 2022-12-06 | 天翼云科技有限公司 | 一种数据转发方法及装置 |
CN115499387A (zh) * | 2022-09-13 | 2022-12-20 | 北京天融信网络安全技术有限公司 | 报文处理方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080205113A1 (en) * | 2007-02-27 | 2008-08-28 | Kang Uk-Song | Inter-transmission multi memory chip, system including the same and associated method |
CN101616083A (zh) * | 2009-08-06 | 2009-12-30 | 杭州华三通信技术有限公司 | 一种报文转发方法和装置 |
CN102571580A (zh) * | 2011-12-31 | 2012-07-11 | 曙光信息产业股份有限公司 | 数据接收方法和计算机 |
CN102970244A (zh) * | 2012-11-23 | 2013-03-13 | 上海寰创通信科技股份有限公司 | 一种多cpu核间负载均衡的网络报文处理方法 |
US20140244975A1 (en) * | 2013-02-27 | 2014-08-28 | Rdc Semiconductor Co., Ltd. | Multi-core processor, controlling method thereof and computer system with such processor |
-
2015
- 2015-12-24 CN CN201510983045.XA patent/CN105630731A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080205113A1 (en) * | 2007-02-27 | 2008-08-28 | Kang Uk-Song | Inter-transmission multi memory chip, system including the same and associated method |
CN101616083A (zh) * | 2009-08-06 | 2009-12-30 | 杭州华三通信技术有限公司 | 一种报文转发方法和装置 |
CN102571580A (zh) * | 2011-12-31 | 2012-07-11 | 曙光信息产业股份有限公司 | 数据接收方法和计算机 |
CN102970244A (zh) * | 2012-11-23 | 2013-03-13 | 上海寰创通信科技股份有限公司 | 一种多cpu核间负载均衡的网络报文处理方法 |
US20140244975A1 (en) * | 2013-02-27 | 2014-08-28 | Rdc Semiconductor Co., Ltd. | Multi-core processor, controlling method thereof and computer system with such processor |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106527653A (zh) * | 2016-10-12 | 2017-03-22 | 东软集团股份有限公司 | 调整cpu频率的方法及装置 |
CN108259369A (zh) * | 2018-01-26 | 2018-07-06 | 迈普通信技术股份有限公司 | 一种数据报文的转发方法及装置 |
CN108259369B (zh) * | 2018-01-26 | 2022-04-05 | 迈普通信技术股份有限公司 | 一种数据报文的转发方法及装置 |
CN110231977A (zh) * | 2018-03-05 | 2019-09-13 | 中兴通讯股份有限公司 | 数据库的处理方法、装置、存储介质及电子装置 |
CN110231977B (zh) * | 2018-03-05 | 2024-09-13 | 金篆信科有限责任公司 | 数据库的处理方法、装置、存储介质及电子装置 |
CN109039944A (zh) * | 2018-11-01 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种数据包的分流方法、装置及设备 |
CN109729024A (zh) * | 2018-12-29 | 2019-05-07 | 中盈优创资讯科技有限公司 | 数据包处理系统及方法 |
CN110012025B (zh) * | 2019-04-17 | 2020-10-30 | 浙江禾川科技股份有限公司 | 一种图像采集过程中的数据传输方法、系统及相关装置 |
CN110012025A (zh) * | 2019-04-17 | 2019-07-12 | 浙江禾川科技股份有限公司 | 一种图像采集过程中的数据传输方法、系统及相关装置 |
WO2021073473A1 (zh) * | 2019-10-16 | 2021-04-22 | 中兴通讯股份有限公司 | 数据包处理方法、装置、通信设备及存储介质 |
CN110928604A (zh) * | 2019-11-11 | 2020-03-27 | 北京天融信网络安全技术有限公司 | 基于无锁环状队列的密码卡异步调用方法 |
CN111030844A (zh) * | 2019-11-14 | 2020-04-17 | 中盈优创资讯科技有限公司 | 流量处理框架建立方法及装置 |
CN111030844B (zh) * | 2019-11-14 | 2023-03-14 | 中盈优创资讯科技有限公司 | 流量处理框架建立方法及装置 |
CN111083075A (zh) * | 2019-12-20 | 2020-04-28 | 盛科网络(苏州)有限公司 | 多核SoC处理报文的方法及应用其的SoC |
CN111083075B (zh) * | 2019-12-20 | 2022-01-11 | 苏州盛科通信股份有限公司 | 多核SoC处理报文的方法及应用其的SoC |
CN111277514A (zh) * | 2020-01-21 | 2020-06-12 | 新华三技术有限公司合肥分公司 | 一种报文队列分配方法、报文转发方法及相关装置 |
CN111614794A (zh) * | 2020-04-24 | 2020-09-01 | 南京南瑞继保工程技术有限公司 | 报文传输方法、装置、电子设备及存储介质 |
CN111669374A (zh) * | 2020-05-25 | 2020-09-15 | 成都安恒信息技术有限公司 | 一种IPsec VPN单条隧道软件加解密性能扩展方法 |
CN112073332A (zh) * | 2020-08-10 | 2020-12-11 | 烽火通信科技股份有限公司 | 报文分发方法、多核处理器及可读存储介质 |
CN114338548A (zh) * | 2020-10-12 | 2022-04-12 | 迈普通信技术股份有限公司 | 报文分流方法、装置、网络设备及计算机可读存储介质 |
CN112948313B (zh) * | 2021-03-01 | 2023-11-21 | 杭州迪普科技股份有限公司 | 一种会话数据的管理方法和装置 |
CN112948313A (zh) * | 2021-03-01 | 2021-06-11 | 杭州迪普科技股份有限公司 | 一种会话数据的管理方法和装置 |
CN114553938B (zh) * | 2022-02-25 | 2023-08-15 | 苏州浪潮智能科技有限公司 | 一种通信报文的处理方法、装置、电子设备及存储介质 |
CN114553938A (zh) * | 2022-02-25 | 2022-05-27 | 苏州浪潮智能科技有限公司 | 一种通信报文的处理方法、装置、电子设备及存储介质 |
CN115442183A (zh) * | 2022-08-02 | 2022-12-06 | 天翼云科技有限公司 | 一种数据转发方法及装置 |
CN115442183B (zh) * | 2022-08-02 | 2024-01-02 | 天翼云科技有限公司 | 一种数据转发方法及装置 |
CN115499387A (zh) * | 2022-09-13 | 2022-12-20 | 北京天融信网络安全技术有限公司 | 报文处理方法、装置、电子设备及存储介质 |
CN115499387B (zh) * | 2022-09-13 | 2024-04-09 | 北京天融信网络安全技术有限公司 | 报文处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105630731A (zh) | 一种多cpu环境下网卡数据处理方法和装置 | |
CN112204513B (zh) | 多租户存储系统中的基于组的数据复制 | |
EP3028162B1 (en) | Direct access to persistent memory of shared storage | |
US8478926B1 (en) | Co-processing acceleration method, apparatus, and system | |
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
US8996755B2 (en) | Facilitating, at least in part, by circuitry, accessing of at least one controller command interface | |
JP2017208145A (ja) | ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを提供および管理するためのシステムおよび方法 | |
US8171267B2 (en) | Method and apparatus for migrating task in multi-processor system | |
US20160117277A1 (en) | Collaborative hardware interaction by multiple entities using a shared queue | |
US8578132B2 (en) | Direct injection of data to be transferred in a hybrid computing environment | |
JP2018531465A (ja) | メッセージデータを格納するためのシステム及び方法 | |
CN104994032B (zh) | 一种信息处理的方法和装置 | |
US9424027B2 (en) | Message management system for information transfer within a multitasking system | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
US20190303344A1 (en) | Virtual channels for hardware acceleration | |
US20130117755A1 (en) | Apparatuses, systems, and methods for distributed workload serialization | |
US11500693B2 (en) | Distributed system for distributed lock management and method for operating the same | |
WO2020156797A1 (en) | Handling an input/output store instruction | |
US20170018050A1 (en) | Communication between integrated graphics processing units | |
US10776012B2 (en) | Lock-free datapath design for efficient parallel processing storage array implementation | |
US10652094B2 (en) | Network traffic management for virtualized graphics devices | |
CN109597697B (zh) | 一种资源撮合处理方法及装置 | |
US10678744B2 (en) | Method and system for lockless interprocessor communication | |
CN106911739B (zh) | 一种信息分发方法及装置 | |
US9990303B2 (en) | Sharing data structures between processes by semi-invasive hybrid approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160601 |
|
RJ01 | Rejection of invention patent application after publication |