CN113037649A - 网络中断数据包的收发方法和装置、电子设备和存储介质 - Google Patents
网络中断数据包的收发方法和装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN113037649A CN113037649A CN202110562529.2A CN202110562529A CN113037649A CN 113037649 A CN113037649 A CN 113037649A CN 202110562529 A CN202110562529 A CN 202110562529A CN 113037649 A CN113037649 A CN 113037649A
- Authority
- CN
- China
- Prior art keywords
- target
- kernel
- data packet
- network
- thread
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种网络中断数据包的收发方法和装置、电子设备和存储介质,其中,该方法包括:通过目标服务器的第一目标内核接收目标中断信号,其中,目标中断信号为目标服务器的多队列网卡在接收到第一目标数据包之后发送的,第一目标内核为目标服务器上允许绑定网卡中断的多个第一内核中的一个;响应目标中断信号,通过第一目标内核从多队列网卡的目标队列中读取第一目标数据包;通过第一目标内核将第一目标数据包发送给目标服务器的第二目标内核,其中,第二目标内核为目标服务器上用于处理数据包的多个第二内核中的一个;通过第二目标内核对第一目标数据包进行处理,得到第一目标数据包的目标处理结果。
Description
技术领域
本申请涉及通信领域,尤其涉及一种网络中断数据包的收发方法和装置、电子设备和存储介质。
背景技术
目前,许多服务器架构采用NUMA(Non-Uniform Memory Access,非一致性内存访问)架构,一台主机有多个CPU(Central Processing Unit,中央处理器),每个CPU有多个核,每个核有两个超线程。网卡一般是多队列网卡,即有多个网卡中断(InterruptRequest,简称为IRQ)号。操作系统有irqbalance(即,中断均衡)程序运行,负责中断平衡。确保多核CPU能够均匀的处理网卡的网络中断,均匀的处理网卡接收的数据报文和发送的报文。
在高并发下,CPU负载比较高,大量的网络中断会导致CPU不断发生调度,需要不断进行线程调度,CPU会因为处理中断而导致处理速度变慢。
由此可见,相关技术中的网络中断数据包的收发方式,存在由于需要不断发生调度导致的CPU处理速度变慢的问题。
发明内容
本申请提供了一种网络中断数据包的收发方法和装置、电子设备和存储介质,以至少解决相关技术中的网络中断数据包的收发方式存在由于需要不断发生调度导致的CPU处理速度变慢的问题。
根据本申请实施例的一个方面,提供了一种网络中断数据包的收发方法,包括:通过目标服务器的第一目标内核接收目标中断信号,其中,所述目标中断信号为所述目标服务器的多队列网卡在接收到第一目标数据包之后发送的,所述第一目标内核为所述目标服务器上允许绑定网卡中断的多个第一内核中的一个;响应所述目标中断信号,通过所述第一目标内核从所述多队列网卡的目标队列中读取所述第一目标数据包;通过所述第一目标内核将所述第一目标数据包发送给所述目标服务器的第二目标内核,其中,所述第二目标内核为所述目标服务器上用于处理数据包的多个第二内核中的一个;通过所述第二目标内核对所述第一目标数据包进行处理,得到所述第一目标数据包的目标处理结果。
可选地,所述多队列网卡包含多个队列,所述多个队列中的每个队列的网卡中断号与所述多个第一内核中的一个内核绑定;在通过所述目标服务器的所述第一目标内核接收所述目标中断信号之前,所述方法还包括:将所述第一目标数据包缓存到所述目标队列中,其中,所述目标队列为所述多个队列中的一个;确定所述多个第一内核中,所述目标队列的目标网卡中断号所绑定的所述第一目标内核;将所述目标中断信号发送给所述第一目标内核,以触发所述第一目标内核从所述目标队列中读取所述第一目标数据包。
可选地,在将所述第一目标数据包缓存到所述目标队列中之前,所述方法还包括:分别将所述每个队列的网卡中断号与所述多个第一内核中的一个内核绑定,其中,所述多个第一内核中的任意两个内核所绑定的网卡中断号的数量差小于或者等于1。
可选地,通过所述第一目标内核将所述第一目标数据包发送给所述目标服务器的所述第二目标内核包括:通过所述第一目标内核将所述第一目标数据包输入到第一存储对象中,其中,所述第一存储对象用于存储所述多个第一内核输入的数据包;通过所述目标服务器的所述第二目标内核从所述第一存储对象中读取出所述第一目标数据包。
可选地,所述第一存储对象中的各个第一数据包按照所述各个第一数据包的连接标识的哈希值进行存放,所述目标服务器上建立有多个网络连接中,所述各个第一数据包的连接标识为所述多个网络连接中接收所述各个第一数据包的网络连接的连接标识,所述多个网络连接中的各个网络连接的连接标识与所述多个第二内核中的一个内核绑定;在通过所述第一目标内核将所述第一目标数据包输入到所述第一存储对象中之后,所述方法还包括:通过所述第一目标内核通知所述第二目标内核从所述第一存储对象中读取数据包,其中,所述第二目标内核为所述多个第二内核中所述第一目标数据包的第一连接标识所绑定的内核;通过所述第二目标内核从所述第一存储对象中读取出所述第一目标数据包包括:通过所述第二目标内核使用所述第一连接标识从所述第一存储对象中读取出所述第一目标数据包。
可选地,通过所述第一目标内核通知所述第二目标内核从所述第一存储对象中读取数据包包括:通过所述第一目标内核将所述第一连接标识发送给第一激活线程,其中,所述第一激活线程用于激活应用线程;通过所述第一激活线程向与所述第一连接标识绑定的目标应用线程发送第一激活信号,其中,所述目标应用线程为所述第二目标内核中用于从所述第一存储对象中读取数据包、并对读取到的数据包进行处理的应用线程,所述第一激活信号用于激活所述目标应用线程。
可选地,在通过所述第二目标内核对所述第一目标数据包进行处理之后,所述方法还包括:通过所述第二目标内核将第二目标数据包输入到第二存储对象中,其中,所述第二存储对象用于存储所述多个第二内核输入的数据包,所述第二目标数据包中携带有所述目标处理结果;通过第三目标内核从所述第二存储对象中读取出所述第二目标数据包,其中,所述第三目标内核为所述多个第一内核中的一个;通过所述第三目标内核将所述第二目标数据包发送给目标接收端。
可选地,所述第二存储对象中的各个第二数据包按照所述各个第二数据包的连接标识的哈希值进行存放,所述目标服务器上建立有多个网络连接中,所述各个第二数据包的连接标识为所述多个网络连接中发送所述各个第二数据包的网络连接的连接标识,所述多个网络连接中的各个网络连接的连接标识与所述多个第一内核中的一个内核绑定;在通过所述第三目标内核从所述第二存储对象中读取出所述第二目标数据包之前,所述方法还包括:通过所述第二目标内核通知所述第三目标内核从所述第二存储对象中读取数据包,其中,所述第三目标内核为所述多个第一内核中所述第二目标数据包的第二连接标识所绑定的内核;通过所述第三目标内核从所述第二存储对象中读取出所述第二目标数据包包括:通过所述第三目标内核使用所述第二连接标识从所述第二存储对象中读取出所述第二目标数据包。
可选地,通过所述第二目标内核通知所述第三目标内核从所述第二存储对象中读取数据包包括:通过所述第二目标内核将所述第二连接标识发送给第二激活线程,其中,所述第二激活线程用于激活网络收发线程;通过所述第二激活线程向与所述第二连接标识绑定的目标网络收发线程发送第二激活信号,其中,所述目标网络收发线程为所述第三目标内核中用于从所述第二存储对象中读取数据包、并发送读取到的数据包的网络收发线程,所述第二激活信号用于激活所述目标网络收发线程。
根据本申请实施例的另一个方面,还提供了一种网络中断数据包的收发装置,包括:接收单元,用于通过目标服务器的第一目标内核接收目标中断信号,其中,所述目标中断信号为所述目标服务器的多队列网卡在接收到第一目标数据包之后发送的,所述第一目标内核为所述目标服务器上允许绑定网卡中断的多个第一内核中的一个;第一读取单元,用于响应所述目标中断信号,通过所述第一目标内核从所述多队列网卡的目标队列中读取所述第一目标数据包;第一发送单元,用于通过所述第一目标内核将所述第一目标数据包发送给所述目标服务器的第二目标内核,其中,所述第二目标内核为所述目标服务器上用于处理数据包的多个第二内核中的一个;处理单元,用于通过所述第二目标内核对所述第一目标数据包进行处理,得到所述第一目标数据包的目标处理结果。
可选地,所述多队列网卡包含多个队列,所述多个队列中的每个队列的网卡中断号与所述多个第一内核中的一个内核绑定;所述装置还包括:缓存单元,用于在通过所述目标服务器的所述第一目标内核接收所述目标中断信号之前,将所述第一目标数据包缓存到所述目标队列中,其中,所述目标队列为所述多个队列中的一个;确定单元,用于确定所述多个第一内核中,所述目标队列的目标网卡中断号所绑定的所述第一目标内核;第二发送单元,用于将所述目标中断信号发送给所述第一目标内核,以触发所述第一目标内核从所述目标队列中读取所述第一目标数据包。
可选地,所述装置还包括:第一绑定单元,用于在将所述第一目标数据包缓存到所述目标队列中之前,分别将所述每个队列的网卡中断号与所述多个第一内核中的一个内核绑定,其中,所述多个第一内核中的任意两个内核所绑定的网卡中断号的数量差小于或者等于1。
可选地,所述第一发送单元包括:输入模块,用于通过所述第一目标内核将所述第一目标数据包输入到第一存储对象中,其中,所述第一存储对象用于存储所述多个第一内核输入的数据包;第一读取模块,用于通过所述目标服务器的所述第二目标内核从所述第一存储对象中读取出所述第一目标数据包。
可选地,所述第一存储对象中的各个第一数据包按照所述各个第一数据包的连接标识的哈希值进行存放,所述目标服务器上建立有多个网络连接中,所述各个第一数据包的连接标识为所述多个网络连接中接收所述各个第一数据包的网络连接的连接标识,所述多个网络连接中的各个网络连接的连接标识与所述多个第二内核中的一个内核绑定;所述装置还包括:第一通知单元,所述第一读取模块包括:读取子模块,其中,所述第一通知单元,用于在通过所述第一目标内核将所述第一目标数据包输入到所述第一存储对象中之后,通过所述第一目标内核通知所述第二目标内核从所述第一存储对象中读取数据包,其中,所述第二目标内核为所述多个第二内核中所述第一目标数据包的第一连接标识所绑定的内核;所述读取子模块,用于通过所述第二目标内核使用所述第一连接标识从所述第一存储对象中读取出所述第一目标数据包。
可选地,所述通知单元包括:第一发送模块,用于通过所述第一目标内核将所述第一连接标识发送给第一激活线程,其中,所述第一激活线程用于激活应用线程;第二发送模块,用于通过所述第一激活线程向与所述第一连接标识绑定的目标应用线程发送第一激活信号,其中,所述目标应用线程为所述第二目标内核中用于从所述第一存储对象中读取数据包、并对读取到的数据包进行处理的应用线程,所述第一激活信号用于激活所述目标应用线程。
可选地,所述装置还包括:输入单元,用于在通过所述第二目标内核对所述第一目标数据包进行处理之后,通过所述第二目标内核将第二目标数据包输入到第二存储对象中,其中,所述第二存储对象用于存储所述多个第二内核输入的数据包,所述第二目标数据包中携带有所述目标处理结果;第二读取单元,用于通过第三目标内核从所述第二存储对象中读取出所述第二目标数据包,其中,所述第三目标内核为所述多个第一内核中的一个;第三发送单元,用于通过所述第三目标内核将所述第二目标数据包发送给目标接收端。
可选地,所述第二存储对象中的各个第二数据包按照所述各个第二数据包的连接标识的哈希值进行存放,所述目标服务器上建立有多个网络连接中,所述各个第二数据包的连接标识为所述多个网络连接中发送所述各个第二数据包的网络连接的连接标识,所述多个网络连接中的各个网络连接的连接标识与所述多个第一内核中的一个内核绑定;所述装置还包括:第二通知单元,所述第二读取单元包括:第二读取模块,其中,所述第二通知单元,用于在通过所述第三目标内核从所述第二存储对象中读取出所述第二目标数据包之前,通过所述第二目标内核通知所述第三目标内核从所述第二存储对象中读取数据包,其中,所述第三目标内核为所述多个第一内核中所述第二目标数据包的第二连接标识所绑定的内核;所述第二读取模块,用于通过所述第三目标内核从所述第二存储对象中读取出所述第二目标数据包包括:通过所述第三目标内核使用所述第二连接标识从所述第二存储对象中读取出所述第二目标数据包。
可选地,所述第二通知单元包括:第三发送模块,用于通过所述第二目标内核将所述第二连接标识发送给第二激活线程,其中,所述第二激活线程用于激活网络收发线程;第四发送模块,用于通过所述第二激活线程向与所述第二连接标识绑定的目标网络收发线程发送第二激活信号,其中,所述目标网络收发线程为所述第三目标内核中用于从所述第二存储对象中读取数据包、并发送读取到的数据包的网络收发线程,所述第二激活信号用于激活所述目标网络收发线程。
根据本申请实施例的又一个方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;其中,存储器,用于存储计算机程序;处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行上述任一实施例中的方法步骤。
根据本申请实施例的又一个方面,还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一实施例中的方法步骤。
在本申请实施例中,采用某些CPU内核专门绑定网卡中断、而另一些CPU内核专门处理业务逻辑的方式,通过目标服务器的第一目标内核接收目标中断信号,其中,目标中断信号为目标服务器的多队列网卡在接收到第一目标数据包之后发送的,第一目标内核为目标服务器上允许绑定网卡中断的多个第一内核中的一个;响应目标中断信号,通过第一目标内核从多队列网卡的目标队列中读取第一目标数据包;通过第一目标内核将第一目标数据包发送给目标服务器的第二目标内核,其中,第二目标内核为目标服务器上用于处理数据包的多个第二内核中的一个;通过第二目标内核对第一目标数据包进行处理,得到第一目标数据包的目标处理结果,由于某些CPU内核专门绑定网卡中断、而另一些CPU内核(未绑定网卡中断的CPU内核)专门处理业务逻辑,形成流水作业,可以保证未绑定网卡中断的CPU内核可以一直处理业务逻辑而不被网卡中断干扰,从而可以实现降低线程的CPU调度的目的,达到了提高CPU处理速度的技术效果,进而解决了相关技术中的网络中断数据包的收发方式存在由于需要不断发生调度导致的CPU处理速度变慢的问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例的一种可选的网络中断数据包的收发方法的硬件环境的示意图;
图2是根据本申请实施例的一种可选的网络中断数据包的收发方法的流程示意图;
图3是根据本申请实施例的一种可选的网络中断数据包的收发方法的示意图;
图4是根据本申请实施例的另一种可选的网络中断数据包的收发方法的示意图;
图5是根据本申请实施例的另一种可选的网络中断数据包的收发方法的流程示意图;
图6是根据本申请实施例的一种可选的网络中断数据包的收发装置的结构框图;
图7是根据本申请实施例的一种可选的电子设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一个方面,提供了一种网络中断数据包的收发方法。可选地,在本实施例中,上述网络中断数据包的收发方法可以应用于如图1所示的由终端102和服务器104所构成的硬件环境中。如图1所示,服务器104通过网络与终端102进行连接,可用于为终端或终端上安装的客户端提供服务(如游戏服务、应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器104提供数据存储服务。
上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:WIFI(Wireless Fidelity,无线保真),蓝牙。终端102可以并不限定于为PC、手机、平板电脑等。
本申请实施例的网络中断数据包的收发方法可以由服务器104来执行,也可以是由服务器104和终端102共同执行。其中,终端102执行本申请实施例的网络中断数据包的收发方法也可以是由安装在其上的客户端来执行。
以由服务器104来执行本实施例中的网络中断数据包的收发方法为例,图2是根据本申请实施例的一种可选的网络中断数据包的收发方法的流程示意图,如图2所示,该方法的流程可以包括以下步骤:
步骤S202,通过目标服务器的第一目标内核接收目标中断信号,其中,目标中断信号为目标服务器的多队列网卡在接收到第一目标数据包之后发送的,第一目标内核为目标服务器上允许绑定网卡中断的多个第一内核中的一个。
本实施例中的网络中断数据包的收发方法可以应用于多核架构下进行网络数据包收发的场景。上述网络中断数据包的收发方法的执行主体可以是服务器,例如,目标服务器。该目标服务器采用的可以是NUMA的服务器架构中。目标服务器的主机可以具有多个CPU,每个CPU可以具有多个核(即,CPU内核,内核),每个内核可以有多个超线程(例如,两个超线程)。对于操作系统而言,每个超线程可以认为是一个内核。
例如,在采用NUMA的服务器架构中,一个CPU的架构可以如图3所示。该CPU可以包含两个核心,即,核心1和核心2。CPU的缓存(Cache)包括L1缓存(可以包括数据缓存和指令缓存)、L2缓存(可以是数据缓存)和L3缓存(可以是数据缓存),其中,L1缓存和L2缓存为每个核私有,L3缓存为多个核共享。
对于目标服务器,目标服务器上的网卡为目标网卡,目标网卡可以是多队列网卡。多队列网卡可以有多个队列,内核会给每个队列注册一个中断号,因此,该多队列网卡可以有多个网卡中断号,多个队列与多个网卡中断号一一对应。
网卡的硬中断及后续触发的软中断(ksoftirqd)都是非常耗时的操作。考虑到单核CPU可以通过中断来处理多任务,而多核CPU并非需要每个CPU都要处理中断,在本实施例中,采用某些CPU内核专门绑定网卡中断(可以降低其他CPU因中断而导致的上下文切换)、而另一些CPU内核专门处理业务逻辑的方式,网卡中断不再均衡分配,而是绑定固定CPU,这些固定的CPU仅仅负责处理网卡中断,充分利用多个CPU,形成流水作业,降低CPU调度线程的上下文切换,从而可以提高CPU的利用率,提高作业处理性能。
需要说明的是,在多核场景下,跨CPU的内存访问性能远远低于本CPU内部的缓存内存,如果每个CPU均等的处理任务,会有很多跨CPU的远程内存访问。并且,结合图3,L1/L2Cache是多个核心各自独有的,为了避免出现结果错误,需要保证多核心的缓存一致性(Cache Coherence)。而保证缓存一致性需要跨CPU的远程内存访问及等待内部缓存的更新。跨CPU的远程内存访问会导致访问内存延迟过高,造成性能下降。而通过减少处理任务的CPU的数量,提高CPU处理任务的集中性,可以减少跨CPU的远程内存访问,降低访问内存延迟,从而提高CPU的性能。
目标服务器可以包含多个内核。在多个内核中,被配置为专门绑定网卡中断的内核为第一内核,第一内核的数量一般为多个,即,目标服务器包含允许绑定网卡中断的多个第一内核。被配置为专门处理业务逻辑的内核为第二内核,第二内核的数量一般为多个,即,目标服务器包含用于处理数据包的多个第二内核。
例如,一个主机具有6个CPU核,也就是,CPU核1~6。CPU核1~3(第一内核的一种示例)是专门绑定网卡中断的内核,CPU核4~6(第二内核的一种示例)是专门处理业务逻辑的内核。
需要说明的是,目标服务器的操作系统可以允许运行负责中断均衡的中断均衡(即,irqbalance)程序,以确保多核CPU能够均匀的处理网卡的网络中断,均匀的处理网卡接收的数据报文和发送的数据报文。为了实现某些CPU内核专门绑定网卡中断、而另一些CPU内核专门处理业务逻辑,可以首先停止目标服务器上的中断均衡程序,网卡中断不再均衡调度,通过网卡中断与部分CPU的绑定,实现仅通过这部分CPU处理网络中断信号。
目标服务器可以建立有多个网络连接,多个网络连接中的每个网络连接可以是目标服务器与一个对端(例如,客户端)建立的双向通信连接。每个网络连接可以通过连接标识进行唯一标识的,即,一个连接标识可以唯一标识一个网络连接。网络连接的连接标识可以有多种形式,可以包括但不限于:socket(套接字)句柄。
网络上的两个应用进程之间可以通过一个双向的通信连接(即,上述网络连接)实现数据的交换,这个连接可以称为一个socket,socket可以用于描述IP(InternetProtocol,互联网协议)地址和端口。而socket句柄可以用于表示上述通信连接,即,两个地址对“本地ip:port”--“远程ip:port”。不同的socket句柄可以用于表示不同的网络连接。
目标服务器的多队列网卡可以通过网络连接来接收对端发送的数据包。在收到数据包后,多队列网卡可以按照数据包分配规则将该数据包分配到多个队列(即,网卡缓存队列)中的一个队列中。数据包分配规则可以是按照数据包的连接标识(即,传输该数据包的网络连接的连接标识,例如,socket句柄)分配等,本实施例中对此不作限定。
目标发送端(可以是目标客户端)可以通过与目标服务器之间的目标网络连接向目标服务器发送第一目标数据包。目标服务器的多队列网卡在接收到第一目标数据包之后,可以将该第一目标数据包分配给多个队列中的一个队列,即,目标队列。多队列网卡还可以生成目标中断信号,并将生成的目标中断信号发送给上述多个第一内核中的一个,即,第一目标内核。对应地,第一目标内核可以接收多队列网卡发送的目标中断信号。
步骤S204,响应目标中断信号,通过第一目标内核从多队列网卡的目标队列中读取第一目标数据包。
对于第一内核,每个第一内核可以绑定有一个网络收发线程,上述网络收发线程可以是用于进行网络数据包的接收和/或发送的线程,即,用于接收数据报文和/或发送数据报文的线程。由第一目标内核执行的、与数据包收发相关的操作可以是由第一目标内核所绑定的网络收发线程执行的。
可选地,网卡中断可以绑定固定的几个CPU核(即多个第一内核),每个CPU核上绑定一个或多个网卡中断。服务器可以启动多个网络收发线程,每个第一内核绑定一个网络收发线程。例如,前述CPU核1~3中的每个核上可以绑定一个网络收发线程。
当多队列网卡有中断信号(即,有接收到的网络数据包)时,说明对端有数据发送过来。比如,第一目标内核接收到目标中断信号之后,可以确定对端有数据包发送过来。响应目标中断信号,第一目标内核可以从上述目标队列中读取出第一目标数据包。
可选地,在第一目标内核接收到目标中断信号之后,第一目标内核可以向与其绑定的目标内核进程(或者,目标内核线程, 例如,ksoftirqd)发起一个中断信号。该目标进程激活之后,可以将目标队列的第一目标数据包读取到操作系统内核(例如,Linux内核)中的协议栈(或者说,协议栈的内存)中。操作系统内核会向第一目标内核发送中断信号。第一目标内核在接收到操作系统内核发送的中断信号之后,会触发绑定在第一目标内核上的网络收发线程从协议栈中读取数据包。
例如,CPU 1(即,CPU核1)接收到操作系统内核的中断信号,说明有需要读取的数据,绑定在CPU 1 上wait(等待)的线程通过多路复用(epoll或poll)接口上触发,调用read(读)接口,读取数据包。
步骤S206,通过第一目标内核将第一目标数据包发送给目标服务器的第二目标内核,其中,第二目标内核为目标服务器上用于处理数据包的多个第二内核中的一个。
在获取到第一目标数据包之后,该第一目标内核并不执行业务处理逻辑,而是将该第一目标数据包发送给执行业务处理逻辑的内核来处理相应的业务逻辑。执行业务处理逻辑的内核为多个第二内核中的一个,即,第二目标内核。
第二目标内核可以是在获取到第一目标数据包之后由第一目标内核从多个第二内核中选取的,也可以是按照预先配置的绑定关系确定的。上述绑定关系可以用于指示数据包的目标标识所绑定的第二内核。基于上述绑定关系与第一目标数据包的目标标识所绑定的第二内核,即为处理该第一目标数据包的第二内核。
数据包的目标标识可以用于标识该数据包,也可以用于标识接收该数据包的网络连接(在此情况下,目标标识为上述连接标识),还可以用于标识与该数据包具有关联关系的其他对象,本实施例中对此不作限定。
第一目标内核可以将第一目标数据包发送给目标服务器的第二目标内核。发送第一目标数据包所采用的模式为异步模式,主要通过队列实现数据交互。例如,如图4所示,CPU 1(第一目标内核的一种示例)与CPU 4(第二目标内核的一种示例)绑定各自的线程交互数据,通过异步模式,无需等待,可以提高CPU 的利用率。
步骤S208,通过第二目标内核对第一目标数据包进行处理,得到第一目标数据包的目标处理结果。
在获取到第一目标数据包之后,第二目标内核可以对第一目标数据包进行处理,即,处理第一目标数据包相应的业务逻辑,得到该第一目标数据包的处理结果,即,目标处理结果。处理数据包相应的业务逻辑的过程可以参考相关技术,在此不作赘述。得到的目标处理结果可以保存在目标存储部件中,例如,缓存,内存中。
通过上述步骤S202至步骤S208,通过目标服务器的第一目标内核接收目标中断信号,其中,目标中断信号为目标服务器的多队列网卡在接收到第一目标数据包之后发送的,第一目标内核为目标服务器上允许绑定网卡中断的多个第一内核中的一个;响应目标中断信号,通过第一目标内核从多队列网卡的目标队列中读取第一目标数据包;通过第一目标内核将第一目标数据包发送给目标服务器的第二目标内核,其中,第二目标内核为目标服务器上用于处理数据包的多个第二内核中的一个;通过第二目标内核对第一目标数据包进行处理,得到第一目标数据包的目标处理结果,解决了相关技术中的网络中断数据包的收发方式存在由于需要不断发生调度导致的CPU处理速度变慢的问题,提高了CPU的处理速度。
作为一种可选的实施例,多队列网卡包含多个队列,多个队列中的每个队列的网卡中断号与多个第一内核中的一个内核绑定。可选地,在通过目标服务器的第一目标内核接收目标中断信号之前,上述方法还包括:
S11,将第一目标数据包缓存到目标队列中,其中,目标队列为多个队列中的一个;
S12,确定多个第一内核中,目标队列的目标网卡中断号所绑定的第一目标内核;
S13,将目标中断信号发送给第一目标内核,以触发第一目标内核从目标队列中读取第一目标数据包。
在收到第一目标数据包之后,多队列网卡可以将该第一目标数据包缓存到目标队列中。目标队列可以是随机选取的,也可以是根据第一目标数据包的第一连接标识(数据包连接标识的含义在上述实施例中已经进行过描述,在此不做赘述)确定的,还可以是根据其他方式确定的,本实施例中对此不作限定。
目标队列的网卡中断号为目标网卡中断号。多队列网卡可以确定目标网卡中断号所绑定的第一目标内核。目标网卡中断号与第一目标内核之间的绑定关系可以是在接收到第一目标数据包之后确定的,也可以是预先配置好的。例如,多队列网卡可以根据预先配置的第一绑定关系,确定多个第一内核中,目标网卡中断号所绑定的第一目标内核。
多队列网卡还可以生成上述目标中断信号,并将目标中断信号发送给第一目标内核,以触发第一目标内核从目标队列中读取第一目标数据包。
通过本实施例,根据网卡中断号与允许绑定网卡中断的内核之间的绑定关系确定本次中断信号发送给的内核,可以保证网卡中断调度的可控性。
作为一种可选的实施例,在将第一目标数据包缓存到目标队列中之前,上述方法还包括:
S21,分别将每个队列的网卡中断号与多个第一内核中的一个内核绑定,其中,多个第一内核中的任意两个内核所绑定的网卡中断号的数量差小于或者等于1。
上述的第一绑定关系可以是预先配置好的。目标服务器可以将网卡中断号绑定到多个第一内核中。每个第一内核所绑定的网卡中断号的数量可以根据需要进行配置,其可以是均匀的,也可以是不均匀的。
为了提高网卡中断分配的合理性,可以将网卡中断号均匀地绑定到多个第一内核中。对于任意两个第一内核,其所绑定的网卡中断号的数量可以是相同的,也可以是不同的。如果两者所绑定的网卡中断号的数量不同,那么,两者所绑定的网卡中断号的数量的差值为1。
例如,多队列网卡有5个网卡中断号,将这5个网卡中断号均匀地绑定到CPU核1~3。那么,CPU核1~3中,有两个CPU核绑定了2个网卡中断号,一个CPU核绑定了1个网卡中断号。这里,网卡中断号和CPU核的数量仅为示例,是为了说明将网卡中断号绑定到固定的CPU上。
通过本实施例,通过将网卡中断号均匀地绑定到固定的CPU上,可以提高网卡中断分配的合理性。
作为一种可选的实施例,通过第一目标内核将第一目标数据包发送给目标服务器的第二目标内核包括:
S31,通过第一目标内核将第一目标数据包输入到第一存储对象中,其中,第一存储对象用于存储多个第一内核输入的数据包;
S32,通过目标服务器的第二目标内核从第一存储对象中读取出第一目标数据包。
对于第一内核从多队列网卡中读取到的数据包,第一内核可以通过异步模式把收的数据包发送给第二内核。上述异步模式可以是通过存储对象对数据包进行过渡实现的。
第一目标内核可以将第一目标数据包输入到第一存储对象中,该第一存储对象可以用于存储多个第一内核输入的数据包,或者说,目标服务器接收到的数据包。第一存储对象可以位于目标服务器的内存或者CPU缓存(比如,L3缓存)中,该第一存储对象可以有多种形式,可以包括但不限于为以下之一:队列,数组等。例如,第一存储对象可以为接收队列。
目标服务器的第二目标内核可以从第一存储对象中读取出第一目标数据包。读取该第一目标数据包的操作可以是第二目标内核主动执行的,例如,在第二目标内核处于空闲状态时,从第一存储对象中读取出第一目标数据包。又例如,读取该第一目标数据包的操作也可以是被动执行的,例如,通过向第二目标内核发送激活信号触发第二目标内核从第一存储对象中读取出第一目标数据包。本实施例中对此不作限定。
通过本实施例,通过存储对象对数据包进行过渡,以进行数据包的异步发送,可以提高资源利用的合理性,提高CPU的处理效率。
作为一种可选的实施例,第一存储对象中的各个第一数据包可以按照各个第一数据包的连接标识的哈希值进行存放,多个网络连接中的各个网络连接的连接标识与多个第二内核中的一个内核绑定。
前述实施例中的各个网络连接的连接标识可以与多个第二内核中的一个内核进行绑定。每个第二内核所绑定的连接标识的数量可以为一个或多个。对应地,每个第二内核可以用于处理与其所绑定的连接标识所表示的网络连接上所传输的数据包。可选地,多个网络连接的连接标识可以均匀地与多个第二内核绑定,即,任意两个第二内核所绑定的连接标识的数量差小于或者等于1。
以连接标识为socket句柄为例,可以通过多路复用(epoll或poll)技术注册socket句柄,通过将socket句柄(例如,5)对第二内核的数量求余(例如,5%3=2),把socket句柄添加到对应的第二内核(例如,CPU 2)的多路复用(epoll或poll)队列中,由对应的第二内核处理该socket句柄的网络发包,从而将socket句柄全部均匀的绑定到各个第二内核上。
第一存储对象中存放的数据包为第一数据包(包括第一目标数据包),各个第一数据包可以按照各个第一数据包的连接标识的哈希值进行存放。以连接标识为socket句柄、第一存储对象为接收队列为例,接收队列中数据包存放的方式为:两字节(句柄)+两字节(报文长度)+报文内容,在接收队列中以socket句柄的hash(哈希)值存放,便于快速和并发读取。
可选地,在本实施例中,在通过第一目标内核将第一目标数据包输入到第一存储对象中之后,上述方法还包括:
S41,通过第一目标内核通知第二目标内核从第一存储对象中读取数据包,其中,第二目标内核为多个第二内核中第一目标数据包的第一连接标识所绑定的内核。
在将第一目标数据包输入到第一存储对象中之后,第一目标内核可以通知第二目标内核,以便第二目标内核从第一存储对象中读取数据包,从而得到该第一目标数据包。这里,第二目标内核是多个第二内核中第一目标数据包的第一连接标识所绑定的内核。第一目标内核通知第二目标内核的方式可以是通过发送特定的信号执行的,也可以是通过专门的线程执行的,本实施例中对此不作限定。
对应地,通过第二目标内核从第一存储对象中读取出第一目标数据包包括:
S42,通过第二目标内核使用第一连接标识从第一存储对象中读取出第一目标数据包。
在从第一存储对象中读取第一目标数据包时,第二目标内核可以通过第一连接标识,在第一存储对象中读取出第一目标数据包。例如,第二目标内核可以通过socket句柄,在接收队列中读取报文数据。
由于在第一存储对象中,第一目标数据包以第一连接标识的哈希值进行存放,可以便于快速读取出第一目标数据包,而通过第一连接标识进行数据包读取,可以提高数据包读取的准确性。
通过本实施例,以数据包的连接标识的哈希值在存储对象中存储数据包,并通过数据包的连接标识在存储对象中读取数据包,可以提高数据包读取的效率,同时提高数据包读取的准确性。
作为一种可选的实施例,通过第一目标内核通知第二目标内核从第一存储对象中读取数据包包括:
S51,通过第一目标内核将第一连接标识发送给第一激活线程,其中,第一激活线程用于激活应用线程;
S52,通过第一激活线程向与第一连接标识绑定的目标应用线程发送第一激活信号,其中,目标应用线程为第二目标内核中用于从第一存储对象中读取数据包、并对读取到的数据包进行处理的应用线程,第一激活信号用于激活目标应用线程。
在本实施例中,第一目标内核可以通过第一激活线程(即,负责激活的线程)通知第二目标内核从第一存储对象中读取数据包。这里,第一激活线程可以是用于激活应用线程(用于处理数据包的线程)的线程,可以位于除了多个第一内核和多个第二内核以外的其他内核中。
第一目标内核可以通知第一激活线程,并把第一连接标识发送给第一激活线程。第一连接标识可以是在第一目标内核发送给第一激活线程的通知信息中携带的,也可以是在通知信息之后发送的,本实施例中对此不作限定。
每个第二内核可以与一个应用线程绑定,而每个网络连接的连接标识可以绑定到一个应用线程上,例如,多个网络连接的连接标识可以全部均匀的绑定的各个应用线程上,从而实现网络连接的连接标识与第二内核的绑定。也就是说,网络连接的连接标识和第二内核可以是基于网络连接的连接标识与应用线程的绑定关系、以及应用线程与第二内核的绑定关系进行绑定的。
对于第一连接标识,该第一连接标识所绑定的应用线程为目标应用线程,即,目标应用线程持有该第一连接标识。目标应用线程与第二目标内核绑定,可以用于处理数据包相应的业务逻辑,即,从第一存储对象中读取数据包、并对读取到的数据包进行处理。
第一激活线程可以通知目标应用线程从第一存储对象中读取数据包,例如,可以向目标应用线程发送第一激活信号,该第一激活信号可以用于激活目标应用线程。在接收到第一激活信号之后,目标应用线程可以通过第一连接标识在第一存储对象中读取第一目标数据包,并处理第一目标数据包相应的业务逻辑,得到目标处理结果。
通过本实施例,通过激活线程激活应用线程从存储对象中读取数据包并执行相应的业务逻辑,可以提高数据包处理的及时性和效率。
作为一种可选的实施例,在通过第二目标内核对第一目标数据包进行处理之后,上述方法还包括:
S61,通过第二目标内核将第二目标数据包输入到第二存储对象中,其中,第二存储对象用于存储多个第二内核输入的数据包,第二目标数据包中携带有目标处理结果;
S62,通过第三目标内核从第二存储对象中读取出第二目标数据包,其中,第三目标内核为多个第一内核中的一个;
S63,通过第三目标内核将第二目标数据包发送给目标接收端。
如果需要向第一目标数据包的发送方或者其他对端发送该目标处理结果,第二目标内核可以使用该目标处理结果生成第二目标数据包,该第二目标数据包中携带目标处理结果,并将第二目标数据包输入到第二存储对象中。
该第二存储对象可以用于存储多个第二内核输入的数据包,或者说,目标服务器待发送的数据包。第二存储对象可以位于目标服务器的内存或者CPU缓存(比如,L3缓存)中,该第二存储对象可以有多种形式,可以包括但不限于为以下之一:队列,数组等。例如,第二存储对象可以为发送队列。
目标服务器的第三目标内核可以从第二存储对象中读取出第二目标数据包,这里的第三目标内核可以是多个第一内核中的一个。读取该第二目标数据包的操作可以是第三目标内核主动执行的,例如,在第三目标内核处于空闲状态时,从第二存储对象中读取出第二目标数据包。又例如,读取该第二目标数据包的操作也可以是被动执行的,例如,通过向第三目标内核发送激活信号触发第三目标内核从第二存储对象中读取出第二目标数据包。本实施例中对此不作限定。
在读取到第二目标数据包之后,第三目标内核可以将第二目标数据包发送给目标接收端。例如,将第二目标数据包发送给多队列网卡中与该第三目标内核绑定的队列,已通过该队列将第二目标数据包发送给目标接收端。
第三目标内核与第一目标内核可以是相同的第一内核,也可以是不同的第一内核。对应地,目标接收端与发送第一目标数据包的目标发送端可以是相同的对端,也可以是不同的对端,本实施例中对此不作限定。
通过本实施例,通过存储对象对数据包进行过渡,以进行数据包的异步发送,可以提高资源利用的合理性。
作为一种可选的实施例,第二存储对象中的各个第二数据包可以按照各个第二数据包的连接标识的哈希值进行存放,多个网络连接中的各个网络连接的连接标识与多个第一内核中的一个内核绑定。第二存储对象中存储数据包的方式与第一存储对象中存储数据包的方式类似,在此不做赘述。
前述实施例中的各个网络连接的连接标识可以与多个第一内核中的一个内核绑定。每个第一内核所绑定的连接标识的数量可以为一个或多个。对应地,每个第一内核可以用于处理与其所绑定的连接标识所表示的网络连接上所传输的数据包。网络连接的连接标识与第一内核的绑定方式与前述网络连接的连接标识与第二内核的绑定方式类似,在此不做赘述。可选地,多个网络连接的连接标识可以均匀地与多个第一内核绑定,即,任意两个第一内核所绑定的连接标识的数量差小于或者等于1。
第二存储对象中存放的数据包为第二数据包(包括第二目标数据包),各个第二数据包可以按照各个第二数据包的连接标识的哈希值进行存放。以连接标识为socket句柄、第二存储对象为发送队列为例,发送队列中数据包存放的方式为:两字节(句柄)+两字节(报文长度)+报文内容,在发送队列中以socket句柄的hash(哈希)值存放,便于快速和并发读取。
可选地,在通过第三目标内核从第二存储对象中读取出第二目标数据包之前,上述方法还包括:
S71,通过第二目标内核通知第三目标内核从第二存储对象中读取数据包,其中,第三目标内核为多个第一内核中第二目标数据包的第二连接标识所绑定的内核。
在将第二目标数据包输入到第二存储对象中之后,第二目标内核可以通知第三目标内核,以便第三目标内核从第二存储对象中读取数据包,从而得到该第二目标数据包。这里,第三目标内核是多个第一内核中第二目标数据包的第二连接标识所绑定的内核。第二目标内核通知第三目标内核的方式可以是通过发送特定的信号执行的,也可以是通过专门的线程执行的,本实施例中对此不作限定。
对应地,通过第三目标内核从第二存储对象中读取出第二目标数据包包括:
S72,通过第三目标内核使用第二连接标识从第二存储对象中读取出第二目标数据包。
在从第二存储对象中读取第二目标数据包时,第三目标内核可以通过第二连接标识,在第二存储对象中读取出第二目标数据包。例如,第三目标内核可以通过socket句柄,在发送队列中读取报文数据。
由于在第二存储对象中,第二目标数据包以第二连接标识的哈希值进行存放,可以便于快速读取出第二目标数据包,而通过第二连接标识进行数据包读取,可以提高数据包读取的准确性。
通过本实施例,以数据包的连接标识的哈希值在存储对象中存储数据包,并通过数据包的连接标识在存储对象中读取数据包,可以提高数据包读取的效率,同时提高数据包读取的准确性。
作为一种可选的实施例,通过第二目标内核通知第三目标内核从第二存储对象中读取数据包包括:
S81,通过第二目标内核将第二连接标识发送给第二激活线程,其中,第二激活线程用于激活网络收发线程;
S82,通过第二激活线程向与第二连接标识绑定的目标网络收发线程发送第二激活信号,其中,目标网络收发线程为第三目标内核中用于从第二存储对象中读取数据包、并发送读取到的数据包的网络收发线程,第二激活信号用于激活目标网络收发线程。
在本实施例中,第二目标内核可以通过第二激活线程(即,负责激活的线程)通知第三目标内核从第二存储对象中读取数据包。这里,第二激活线程可以是用于激活应用线程(用于处理数据包的线程)的线程,可以位于除了多个第一内核和多个第二内核以外的其他内核中。可选地,第二激活线程与第一激活线程可以是相同的线程,也可以是不同的线程。
第二目标内核可以通知第二激活线程,并把第二连接标识发送给第二激活线程。第二连接标识可以是在第二目标内核发送给第二激活线程的通知信息中携带的,也可以是在通知信息之后发送的,本实施例中对此不作限定。
每个第一内核可以与一个网络收发线程绑定,而每个网络连接的连接标识可以绑定到一个网络收发线程上,例如,多个网络连接的连接标识可以全部均匀的绑定的各个网络收发线程上,从而实现网络连接的连接标识与第一内核的绑定。也就是说,网络连接的连接标识和第一内核可以是基于网络连接的连接标识与网络收发线程的绑定关系、以及网络收发线程与第一内核的绑定关系进行绑定的。
对于第二连接标识,该第二连接标识所绑定的网络收发线程为目标网络收发线程,即,目标网络收发线程持有该第二连接标识。目标网络收发线程与第三目标内核绑定,可以用于处理数据包相应的收发逻辑,即,从第二存储对象中读取数据包、并发送读取到的数据包。
第二激活线程可以通知目标网络收发线程从第二存储对象中读取数据包,例如,可以向目标网络收发线程发送第二激活信号,该第二激活信号可以用于激活目标网络收发线程。在接收到第二激活信号之后,目标网络收发线程可以通过第二连接标识在第二存储对象中读取第二目标数据包,并将读取到的第二目标数据包发送给目标接收端。
通过本实施例,通过激活线程激活网络收发线程从存储对象中读取数据包并执行相应的收发逻辑,可以提高数据包发送的及时性和效率。
下面结合可选示例对本申请实施例中的网络中断数据包的收发方法进行解释说明。在本示例中,第一存储对象为接收队列,第二存储对象为发送队列,网络连接的连接标识为socket句柄。
本示例中的网络中断数据包的收发方法是一种基于多核架构下的网络收发方案,网卡中断绑定固定CPU,irqbalance程序被停止,网络中断不再均衡分配,而是固定的CPU仅仅负责处理网卡中断。在本方案中,利用了NUMA架构、多核CPU的优势,通过软件异步架构的设计,提高了数据通过网络发送数据包的性能。
应用本示例中的网络中断数据包的收发方法的网络架构可以如图4所示,在图4中,CPU 1~3是专门绑定网卡中断的CPU内核,也称为网卡中断绑定的CPU;CPU 4~6是专门处理业务逻辑的内核,也称为应用CPU。网卡中断绑定的CPU与应用CPU可以采用异步模式通过接收队列和发送队列进行数据交互。
如图5所示,本可选示例中的网络中断数据包的收发方法的流程可以包括以下步骤:
步骤S502,网卡中断绑定的CPU通过异步模式,把收到的数据包输入到接收队列。
目标服务器可以把网卡中断号均匀的绑定到CPU 1~3,目的是把网卡中断绑定到固定CPU上。可选地,目标服务器可以启动多个网络收发线程,CPU核1~3中的每个核上绑定一个网络收发线程。通过将网卡中断号均匀的绑定到各个网络收发线程上,可以将网卡中断号均匀的绑定到CPU 1~3。
目标服务器可以建立并启动多个应用线程,将CPU核4~6中的每个核上绑定一个应用线程。目标服务器可以通过多路复用技术注册socket句柄(句柄来源于应用线程的建立);通过调用socket API(Application Programming Interface,应用程序接口),建立与客户端之间的网络连接,每个网络连接对应于一个socket句柄。
目标服务器注册的socket句柄的数量可以为多个。多个socket句柄可以分别与多个网络收发线程以及多个应用线程进行绑定,从而将socket句柄与CPU 1~3以及CPU 4~6绑定。将socket句柄与网络收发线程绑定,可以由绑定的网络收发线程处理该socket句柄的网络收发包;而将socket句柄与应用线程绑定,可以由绑定的应用线程处理该socket句柄的网络收发包相应的业务逻辑。
例如,可以通过socket句柄(例如,5)对网络收发线程的数量(例如,5%3=2)求余,将socket句柄添加到余数所对应的网络收发线程(网络收发线程2,对应于CPU 2)的多路复用队列中。通过上述方式,可以将socket句柄与CPU 1~3绑定。
又例如,可以通过socket句柄(例如,5)对应用线程的数量(例如,5%3=2)求余,将socket句柄添加到余数所对应的应用线程(应用线程2,对应于CPU 5)的多路复用队列中。通过上述方式,可以将socket句柄与CPU 4~6绑定。
网卡(该网卡为多队列网卡)接收到网络数据包,该网络数据包的socket句柄为5。操作系统内核可以根据该网络数据包的socket句柄确定写入发送缓存区,并由ksoftirqd向该队列的网卡中断号所绑定的CPU 2(第一目标内核的一种示例)核发送中断信号,调用网卡驱动,实现数据发送。
由于网卡中的队列的网卡中断号与CPU 1~3绑定,而CPU 1~3中的每个核绑定有一个或多个socket句柄,那么,socket句柄与队列之间也有对应关系。如果与一个socket句柄对应的队列有一个,则可以将接收到的数据包写入到该对应的队列。如果与一个socket句柄对应的队列有多个,可以从对应的多个队列中选取一个队列,并将接收到的数据包写入到该选取的队列。
CPU 2接收到网卡的中断信号之后,确定对端有数据发送过来。绑定在CPU 2的网络收发线程wait在多路复用接口上触发,调用read接口,通过socket句柄 读取到接收到的该网络数据包,把网络数据包放入的接收队列中。接收队列中数据包存放的方式为两字节(句柄)+两字节(报文长度)+报文内容,在接收队列中数据包以socket句柄的hash值存放,便于快速和并发读取。
步骤S504,应用CPU从接收队列中读取数据包,处理相应的业务逻辑,并把处理结果的数据包放到发送队列。
CPU 2的网络收发线程可以通知负责激活的线程(即,句柄激活线程,第一激活线程的一种示例),把socket句柄发送给负责激活的线程。句柄激活线程可以通知持有该socket句柄的应用线程,也就是,与CPU 5(第二目标内核的一种示例)绑定的应用线程。
应用线程接收到激活信号,通过socket句柄在接收队列中读取报文数据,处理相应的逻辑,并把处理结果的数据包(即,应答信息)放入到发送队列中。
发送队列中数据包存放的方式为:两字节(句柄)+两字节(报文长度)+报文内容在对列中以socket句柄的hash值存放,便于快速和并发读取。
步骤S506,网卡中断绑定的CPU从发送队列中读取数据包,把读取到的数据包发送给网卡,把数据发送出去。
应用线程还可以通知负责激活的线程(即,句柄激活线程,第二激活线程的一种示例),把socket句柄发送给负责激活的线程。句柄激活线程可以通知持有socket句柄的网络收发线程,也就是,CPU 2(第三目标内核的一种示例)的网络收发线程。
网络收发线程接收到激活信号之后,可以通过socket句柄在发送队列中读取报文数据,调用write接口,通过socket句柄发送数据包,并等待(wait)。
通过本示例,网卡中断绑定部分固定的CPU核,应用绑定部分固定的CPU核,应用与处理网络数据包的进程通过共享队列交互数据,可以充分利用CPU,形成流水作业,降低线程的CPU调度。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM(Read-Only Memory,只读存储器)/RAM(Random Access Memory,随机存取存储器)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
根据本申请实施例的另一个方面,还提供了一种用于实施上述网络中断数据包的收发方法的网络中断数据包的收发装置。图6是根据本申请实施例的一种可选的网络中断数据包的收发装置的结构框图,如图6所示,该装置可以包括:
接收单元602,用于通过目标服务器的第一目标内核接收目标中断信号,其中,目标中断信号为目标服务器的多队列网卡在接收到第一目标数据包之后发送的,第一目标内核为目标服务器上允许绑定网卡中断的多个第一内核中的一个;
第一读取单元604,与接收单元602相连,用于响应目标中断信号,通过第一目标内核从多队列网卡的目标队列中读取第一目标数据包;
第一发送单元606,与第一读取单元604相连,用于通过第一目标内核将第一目标数据包发送给目标服务器的第二目标内核,其中,第二目标内核为目标服务器上用于处理数据包的多个第二内核中的一个;
处理单元608,与第一发送单元606相连,用于通过第二目标内核对第一目标数据包进行处理,得到第一目标数据包的目标处理结果。
需要说明的是,该实施例中的接收单元602可以用于执行上述步骤S202,该实施例中的第一读取单元604可以用于执行上述步骤S204,该实施例中的第一发送单元606可以用于执行上述步骤S206,该实施例中的处理单元608可以用于执行上述步骤S208。
通过上述模块,通过目标服务器的第一目标内核接收目标中断信号,其中,目标中断信号为目标服务器的多队列网卡在接收到第一目标数据包之后发送的,第一目标内核为目标服务器上允许绑定网卡中断的多个第一内核中的一个;响应目标中断信号,通过第一目标内核从多队列网卡的目标队列中读取第一目标数据包;通过第一目标内核将第一目标数据包发送给目标服务器的第二目标内核,其中,第二目标内核为目标服务器上用于处理数据包的多个第二内核中的一个;通过第二目标内核对第一目标数据包进行处理,得到第一目标数据包的目标处理结果,解决了相关技术中的网络中断数据包的收发方式存在由于需要不断发生调度导致的CPU处理速度变慢的问题,提高了CPU的处理速度。
作为一种可选的实施例,多队列网卡包含多个队列,多个队列中的每个队列的网卡中断号与多个第一内核中的一个内核绑定。可选地,上述装置还包括:
缓存单元,用于在通过目标服务器的第一目标内核接收目标中断信号之前,将第一目标数据包缓存到目标队列中,其中,目标队列为多个队列中的一个;
确定单元,用于确定多个第一内核中,目标队列的目标网卡中断号所绑定的第一目标内核;
第二发送单元,用于将目标中断信号发送给第一目标内核,以触发第一目标内核从目标队列中读取第一目标数据包。
作为一种可选的实施例,上述装置还包括:
第一绑定单元,用于在将第一目标数据包缓存到目标队列中之前,分别将每个队列的网卡中断号与多个第一内核中的一个内核绑定,其中,多个第一内核中的任意两个内核所绑定的网卡中断号的数量差小于或者等于1。
作为一种可选的实施例,第一发送单元606包括:
输入模块,用于通过第一目标内核将第一目标数据包输入到第一存储对象中,其中,第一存储对象用于存储多个第一内核输入的数据包;
第一读取模块,用于通过目标服务器的第二目标内核从第一存储对象中读取出第一目标数据包。
作为一种可选的实施例,第一存储对象中的各个第一数据包按照各个第一数据包的连接标识的哈希值进行存放,目标服务器上建立有多个网络连接中,各个第一数据包的连接标识为多个网络连接中接收各个第一数据包的网络连接的连接标识,多个网络连接中的各个网络连接的连接标识与多个第二内核中的一个内核绑定。可选地,上述装置还包括:第一通知单元,第一读取模块包括:读取子模块,其中,
第一通知单元,用于在通过第一目标内核将第一目标数据包输入到第一存储对象中之后,通过第一目标内核通知第二目标内核从第一存储对象中读取数据包,其中,第二目标内核为多个第二内核中第一目标数据包的第一连接标识所绑定的内核;
读取子模块,用于通过第二目标内核使用第一连接标识从第一存储对象中读取出第一目标数据包。
作为一种可选的实施例,通知单元包括:
第一发送模块,用于通过第一目标内核将第一连接标识发送给第一激活线程,其中,第一激活线程用于激活应用线程;
第二发送模块,用于通过第一激活线程向与第一连接标识绑定的目标应用线程发送第一激活信号,其中,目标应用线程为第二目标内核中用于从第一存储对象中读取数据包、并对读取到的数据包进行处理的应用线程,第一激活信号用于激活目标应用线程。
作为一种可选的实施例,上述装置还包括:
输入单元,用于在通过第二目标内核对第一目标数据包进行处理之后,通过第二目标内核将第二目标数据包输入到第二存储对象中,其中,第二存储对象用于存储多个第二内核的数据包,第二目标数据包中携带有目标处理结果;
第二读取单元,用于通过第三目标内核从第二存储对象中读取出第二目标数据包,其中,第三目标内核为多个第一内核中的一个;
第三发送单元,用于通过第三目标内核将第二目标数据包发送给目标接收端。
作为一种可选的实施例,第二存储对象中的各个第二数据包按照各个第二数据包的连接标识的哈希值进行存放,目标服务器上建立有多个网络连接中,各个第二数据包的连接标识为多个网络连接中发送各个第二数据包的网络连接的连接标识,多个网络连接中的各个网络连接的连接标识与多个第一内核中的一个内核绑定。可选地,上述装置还包括:第二通知单元,第二读取单元包括:第二读取模块,其中,
第二通知单元,用于在通过第三目标内核从第二存储对象中读取出第二目标数据包之前,通过第二目标内核通知第三目标内核从第二存储对象中读取数据包,其中,第三目标内核为多个第一内核中第二目标数据包的第二连接标识所绑定的内核;
第二读取模块,用于通过第三目标内核从第二存储对象中读取出第二目标数据包包括:通过第三目标内核使用第二连接标识从第二存储对象中读取出第二目标数据包。
作为一种可选的实施例,第二通知单元包括:
第三发送模块,用于通过第二目标内核将第二连接标识发送给第二激活线程,其中,第二激活线程用于激活网络收发线程;
第四发送模块,用于通过第二激活线程向与第二连接标识绑定的目标网络收发线程发送第二激活信号,其中,目标网络收发线程为第三目标内核中用于从第二存储对象中读取数据包、并发送读取到的数据包的网络收发线程,第二激活信号用于激活目标网络收发线程。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
根据本申请实施例的又一个方面,还提供了一种用于实施上述网络中断数据包的收发方法的电子设备,该电子设备可以是服务器、终端、或者其组合。
图7是根据本申请实施例的一种可选的电子设备的结构框图,如图7所示,包括处理器702、通信接口704、存储器706和通信总线708,其中,处理器702、通信接口704和存储器706通过通信总线708完成相互间的通信,其中,
存储器706,用于存储计算机程序;
处理器702,用于执行存储器706上所存放的计算机程序时,实现如下步骤:
S1,通过目标服务器的第一目标内核接收目标中断信号,其中,目标中断信号为目标服务器的多队列网卡在接收到第一目标数据包之后发送的,第一目标内核为目标服务器上允许绑定网卡中断的多个第一内核中的一个;
S2,响应目标中断信号,通过第一目标内核从多队列网卡的目标队列中读取第一目标数据包;
S3,通过第一目标内核将第一目标数据包发送给目标服务器的第二目标内核,其中,第二目标内核为目标服务器上用于处理数据包的多个第二内核中的一个;
S4,通过第二目标内核对第一目标数据包进行处理,得到第一目标数据包的目标处理结果。
可选地,在本实施例中,上述的通信总线可以是PCI (Peripheral ComponentInterconnect,外设部件互连标准)总线、或EISA (Extended Industry StandardArchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括RAM,也可以包括非易失性存储器(non-volatile memory),例如,至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
作为一种示例,上述存储器706中可以但不限于包括上述网络中断数据包的收发装置中的接收单元602、第一读取单元604、第一发送单元606以及处理单元608。此外,还可以包括但不限于上述网络中断数据包的收发装置中的其他模块单元,本示例中不再赘述。
处理器可以是通用处理器,可以包含但不限于:CPU、NP(Network Processor,网络处理器)等;还可以是DSP (Digital Signal Processing,数字信号处理器)、ASIC(Application Specific Integrated Circuit,专用集成电路)、FPGA (Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图7所示的结构仅为示意,实施上述网络中断数据包的收发方法的设备可以是终端设备,该终端设备可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图7其并不对上述电子设备的结构造成限定。例如,电子设备还可包括比图7中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图7所示的不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、ROM、RAM、磁盘或光盘等。
根据本申请实施例的又一个方面,还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行本申请实施例中上述任一项网络中断数据包的收发方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
S1,通过目标服务器的第一目标内核接收目标中断信号,其中,目标中断信号为目标服务器的多队列网卡在接收到第一目标数据包之后发送的,第一目标内核为目标服务器上允许绑定网卡中断的多个第一内核中的一个;
S2,响应目标中断信号,通过第一目标内核从多队列网卡的目标队列中读取第一目标数据包;
S3,通过第一目标内核将第一目标数据包发送给目标服务器的第二目标内核,其中,第二目标内核为目标服务器上用于处理数据包的多个第二内核中的一个;
S4,通过第二目标内核对第一目标数据包进行处理,得到第一目标数据包的目标处理结果。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例中对此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、ROM、RAM、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例中所提供的方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (12)
1.一种网络中断数据包的收发方法,其特征在于,包括:
通过目标服务器的第一目标内核接收目标中断信号,其中,所述目标中断信号为所述目标服务器的多队列网卡在接收到第一目标数据包之后发送的,所述第一目标内核为所述目标服务器上允许绑定网卡中断的多个第一内核中的一个;
响应所述目标中断信号,通过所述第一目标内核从所述多队列网卡的目标队列中读取所述第一目标数据包;
通过所述第一目标内核将所述第一目标数据包发送给所述目标服务器的第二目标内核,其中,所述第二目标内核为所述目标服务器上用于处理数据包的多个第二内核中的一个;
通过所述第二目标内核对所述第一目标数据包进行处理,得到所述第一目标数据包的目标处理结果。
2.根据权利要求1所述的方法,其特征在于,所述多队列网卡包含多个队列,所述多个队列中的每个队列的网卡中断号与所述多个第一内核中的一个内核绑定;
在通过所述目标服务器的所述第一目标内核接收所述目标中断信号之前,所述方法还包括:
将所述第一目标数据包缓存到所述目标队列中,其中,所述目标队列为所述多个队列中的一个;
确定所述多个第一内核中,所述目标队列的目标网卡中断号所绑定的所述第一目标内核;
将所述目标中断信号发送给所述第一目标内核,以触发所述第一目标内核从所述目标队列中读取所述第一目标数据包。
3.根据权利要求2所述的方法,其特征在于,在将所述第一目标数据包缓存到所述目标队列中之前,所述方法还包括:
分别将所述每个队列的网卡中断号与所述多个第一内核中的一个内核绑定,其中,所述多个第一内核中的任意两个内核所绑定的网卡中断号的数量差小于或者等于1。
4.根据权利要求1至3中任一项所述的方法,其特征在于,通过所述第一目标内核将所述第一目标数据包发送给所述目标服务器的所述第二目标内核包括:
通过所述第一目标内核将所述第一目标数据包输入到第一存储对象中,其中,所述第一存储对象用于存储所述多个第一内核输入的数据包;
通过所述目标服务器的所述第二目标内核从所述第一存储对象中读取出所述第一目标数据包。
5.根据权利要求4所述的方法,其特征在于,所述第一存储对象中的各个第一数据包按照所述各个第一数据包的连接标识的哈希值进行存放,所述目标服务器上建立有多个网络连接中,所述各个第一数据包的连接标识为所述多个网络连接中接收所述各个第一数据包的网络连接的连接标识,所述多个网络连接中的各个网络连接的连接标识与所述多个第二内核中的一个内核绑定;
在通过所述第一目标内核将所述第一目标数据包输入到所述第一存储对象中之后,所述方法还包括:通过所述第一目标内核通知所述第二目标内核从所述第一存储对象中读取数据包,其中,所述第二目标内核为所述多个第二内核中所述第一目标数据包的第一连接标识所绑定的内核;
通过所述第二目标内核从所述第一存储对象中读取出所述第一目标数据包包括:通过所述第二目标内核使用所述第一连接标识从所述第一存储对象中读取出所述第一目标数据包。
6.根据权利要求5所述的方法,其特征在于,通过所述第一目标内核通知所述第二目标内核从所述第一存储对象中读取数据包包括:
通过所述第一目标内核将所述第一连接标识发送给第一激活线程,其中,所述第一激活线程用于激活应用线程;
通过所述第一激活线程向与所述第一连接标识绑定的目标应用线程发送第一激活信号,其中,所述目标应用线程为所述第二目标内核中用于从所述第一存储对象中读取数据包、并对读取到的数据包进行处理的应用线程,所述第一激活信号用于激活所述目标应用线程。
7.根据权利要求1至3中任一项所述的方法,其特征在于,在通过所述第二目标内核对所述第一目标数据包进行处理之后,所述方法还包括:
通过所述第二目标内核将第二目标数据包输入到第二存储对象中,其中,所述第二存储对象用于存储所述多个第二内核输入的数据包,所述第二目标数据包中携带有所述目标处理结果;
通过第三目标内核从所述第二存储对象中读取出所述第二目标数据包,其中,所述第三目标内核为所述多个第一内核中的一个;
通过所述第三目标内核将所述第二目标数据包发送给目标接收端。
8.根据权利要求7所述的方法,其特征在于,所述第二存储对象中的各个第二数据包按照所述各个第二数据包的连接标识的哈希值进行存放,所述目标服务器上建立有多个网络连接中,所述各个第二数据包的连接标识为所述多个网络连接中发送所述各个第二数据包的网络连接的连接标识,所述多个网络连接中的各个网络连接的连接标识与所述多个第一内核中的一个内核绑定;
在通过所述第三目标内核从所述第二存储对象中读取出所述第二目标数据包之前,所述方法还包括:通过所述第二目标内核通知所述第三目标内核从所述第二存储对象中读取数据包,其中,所述第三目标内核为所述多个第一内核中所述第二目标数据包的第二连接标识所绑定的内核;
通过所述第三目标内核从所述第二存储对象中读取出所述第二目标数据包包括:通过所述第三目标内核使用所述第二连接标识从所述第二存储对象中读取出所述第二目标数据包。
9.根据权利要求8所述的方法,其特征在于,通过所述第二目标内核通知所述第三目标内核从所述第二存储对象中读取数据包包括:
通过所述第二目标内核将所述第二连接标识发送给第二激活线程,其中,所述第二激活线程用于激活网络收发线程;
通过所述第二激活线程向与所述第二连接标识绑定的目标网络收发线程发送第二激活信号,其中,所述目标网络收发线程为所述第三目标内核中用于从所述第二存储对象中读取数据包、并发送读取到的数据包的网络收发线程,所述第二激活信号用于激活所述目标网络收发线程。
10.一种网络中断数据包的收发装置,其特征在于,包括:
接收单元,用于通过目标服务器的第一目标内核接收目标中断信号,其中,所述目标中断信号为所述目标服务器的多队列网卡在接收到第一目标数据包之后发送的,所述第一目标内核为所述目标服务器上允许绑定网卡中断的多个第一内核中的一个;
第一读取单元,用于响应所述目标中断信号,通过所述第一目标内核从所述多队列网卡的目标队列中读取所述第一目标数据包;
第一发送单元,用于通过所述第一目标内核将所述第一目标数据包发送给所述目标服务器的第二目标内核,其中,所述第二目标内核为所述目标服务器上用于处理数据包的多个第二内核中的一个;
处理单元,用于通过所述第二目标内核对所述第一目标数据包进行处理,得到所述第一目标数据包的目标处理结果。
11.一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信,其特征在于,
所述存储器,用于存储计算机程序;
所述处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行权利要求1至9中任一项所述的方法步骤。
12.一种计算机可读的存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至9中任一项中所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110562529.2A CN113037649B (zh) | 2021-05-24 | 2021-05-24 | 网络中断数据包的收发方法和装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110562529.2A CN113037649B (zh) | 2021-05-24 | 2021-05-24 | 网络中断数据包的收发方法和装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113037649A true CN113037649A (zh) | 2021-06-25 |
CN113037649B CN113037649B (zh) | 2021-09-07 |
Family
ID=76455667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110562529.2A Active CN113037649B (zh) | 2021-05-24 | 2021-05-24 | 网络中断数据包的收发方法和装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113037649B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115361451A (zh) * | 2022-10-24 | 2022-11-18 | 中国人民解放军国防科技大学 | 一种网络通信并行处理方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101398772A (zh) * | 2008-10-21 | 2009-04-01 | 成都市华为赛门铁克科技有限公司 | 一种网络数据的中断处理方法及装置 |
US20100241831A1 (en) * | 2007-07-09 | 2010-09-23 | Hewlett-Packard Development Company, L.P. | Data packet processing method for a multi core processor |
CN110119304A (zh) * | 2018-02-07 | 2019-08-13 | 华为技术有限公司 | 一种中断处理方法、装置及服务器 |
-
2021
- 2021-05-24 CN CN202110562529.2A patent/CN113037649B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100241831A1 (en) * | 2007-07-09 | 2010-09-23 | Hewlett-Packard Development Company, L.P. | Data packet processing method for a multi core processor |
CN101398772A (zh) * | 2008-10-21 | 2009-04-01 | 成都市华为赛门铁克科技有限公司 | 一种网络数据的中断处理方法及装置 |
CN110119304A (zh) * | 2018-02-07 | 2019-08-13 | 华为技术有限公司 | 一种中断处理方法、装置及服务器 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115361451A (zh) * | 2022-10-24 | 2022-11-18 | 中国人民解放军国防科技大学 | 一种网络通信并行处理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113037649B (zh) | 2021-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7953915B2 (en) | Interrupt dispatching method in multi-core environment and multi-core processor | |
CN109408243B (zh) | 一种基于rdma的数据处理方法、装置和介质 | |
US11201836B2 (en) | Method and device for managing stateful application on server | |
CN114265800B (zh) | 中断消息处理方法、装置、电子设备及可读存储介质 | |
WO2020164476A1 (zh) | 数据下载的方法及相关装置 | |
US11449456B2 (en) | System and method for scheduling sharable PCIe endpoint devices | |
CN111190854A (zh) | 通信数据处理方法、装置、设备、系统和存储介质 | |
CN115964319A (zh) | 远程直接内存访问的数据处理方法及相关产品 | |
CN106101019A (zh) | 一种基于中断绑定的多队列网卡性能调优方法 | |
CN113037649B (zh) | 网络中断数据包的收发方法和装置、电子设备和存储介质 | |
CN108304272B (zh) | 一种数据io请求的处理方法及装置 | |
CN112181887B (zh) | 数据传输方法及装置 | |
CN115334586A (zh) | 数据转发方法、装置、计算机设备和存储介质 | |
CN115237589A (zh) | 一种基于sr-iov的虚拟化方法、装置和设备 | |
CN111026532B (zh) | 用于语音数据的消息队列管理方法 | |
CN110737530B (zh) | 一种提升handle标识解析系统收包能力的方法 | |
CN111698274B (zh) | 数据处理方法及装置 | |
CN111858035A (zh) | 一种fpga设备分配方法、装置、设备及存储介质 | |
CN112422485A (zh) | 一种传输控制协议的通信方法及装置 | |
CN112882826A (zh) | 一种资源协同调度方法以及装置 | |
CN112822299B (zh) | 基于rdma的数据传输方法、装置及电子设备 | |
CN115189977A (zh) | 一种基于axi协议的广播传输方法、系统及介质 | |
CN114726657A (zh) | 中断管理和数据收发管理的方法、装置及智能网卡 | |
CN112839071B (zh) | 训练系统、训练数据访问方法及装置、电子设备、介质 | |
CN109257227B (zh) | 数据传输中的偶联管理方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |