CN113176950A - 报文处理方法、装置、设备及计算机可读存储介质 - Google Patents

报文处理方法、装置、设备及计算机可读存储介质 Download PDF

Info

Publication number
CN113176950A
CN113176950A CN202110387613.5A CN202110387613A CN113176950A CN 113176950 A CN113176950 A CN 113176950A CN 202110387613 A CN202110387613 A CN 202110387613A CN 113176950 A CN113176950 A CN 113176950A
Authority
CN
China
Prior art keywords
physical cpu
network card
memory
network
packet receiving
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
Application number
CN202110387613.5A
Other languages
English (en)
Other versions
CN113176950B (zh
Inventor
范保平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou DPTech Technologies Co Ltd
Original Assignee
Hangzhou DPTech Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou DPTech Technologies Co Ltd filed Critical Hangzhou DPTech Technologies Co Ltd
Priority to CN202110387613.5A priority Critical patent/CN113176950B/zh
Publication of CN113176950A publication Critical patent/CN113176950A/zh
Application granted granted Critical
Publication of CN113176950B publication Critical patent/CN113176950B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请提供了一种报文处理方法,该方法包括:当网络设备的第一网卡接收到一条待处理报文时,确定第一网卡对应的第一物理CPU,其中,第一网卡的收包线程以及与该收包线程相关的应用进程与所述第一物理CPU进行了预先绑定;利用从第一物理CPU的本地内存中预先划分出的预留内存,对待处理报文进行转发处理。可见,本申请通过预留内存机制、限制内存访问、进程线程绑定,确保了第一物理CPU上运行的进程或线程仅访问本地内存,避免了因内存不足而产生swap、以及访问远端内存带来的负面效果。本申请还提供了一种报文处理装置、设备及计算机可读存储介质。

Description

报文处理方法、装置、设备及计算机可读存储介质
技术领域
本申请涉及通信技术领域,特别涉及一种报文处理方法、装置、设备及计算机可读存储介质。
背景技术
随着因特网规模和通讯量的快速增长,网络业务的复杂度逐步提升,这对网络通讯的效率提出了更高的要求。由于中央处理器(central processing unit,简称CPU)的访问速度比内存要快得多,导致CPU总是等待数据来进行处理,但如果限制CPU对内存的访问就会提高设备运行效率,因为CPU此时不需要大量的时间去寻址。为此,目前最通用的做法是在CPU和内存之间安装cache和更加成熟的cache置换算法,来避免在cache中无法找到数据,但是,随着操作系统和各种运行在操作系统上的软件变得日益复杂,cache对系统速率的提升就变的十分有限。尤其是在多物理CPU的系统上经常会有一个或多个CPU处于闲置状态,而最主要的原因就是在某个时刻只有一个CPU可以访问内存。
非一致性内存访问(Non-Uniform Memory Access,简称NUMA)逻辑架构为对称多处理器系统的架构(symmetric multiprocessing),当使用多处理器时,处理器对内存的访问时间依赖于内存和处理器的相对位置。在多物理CPU服务器设备上设置NUMA后,CPU将从读取速度更快的本地内存中读取数据,而不是访问其他处理器的本地内存或者处理器之间的共享内存,特别是当数据依赖于特定的任务或者用户时,比如报文转发、大规模数据处理时,NUMA可以提升访问速度和系统性能。
如图1所示的数据处理流程示意图,关于处理网络数据包的方式,其实际是一种CPU中断方式,即,网卡驱动在接收到数据包后,会通过中断来通知CPU处理,由CPU拷贝数据并交给内核协议栈处理,然后再拷贝到处于用户态的应用层缓冲区,由应用程序进行处理。在多处理器平台上,一个数据包可能中断在CPU0,内核态处理在CPU1,用户态处理在CPU2,这样跨多个物理CPU的处理,导致了大量的CPU Cache Miss,造成缓存局部性失效。如果是NUMA架构,还会出现跨NUMA远程访问存储器(remote access Memory)的情况,这些都极大地影响了CPU性能。
在实际网络中,网络节点之间通过互联模块进行连接和信息交互,因此,每个CPU可以访问整个系统的内存。CPU访问不同类型节点内存的速度是不相同的,访问本地节点的速度最快,访问远端节点的速度最慢,即访问速度与节点的距离有关,距离越远访问速度越慢,此距离称作Node Distance。显然,既然访问本地内存的速度远高于访问远地内存(系统内其它节点的内存)的速度。那么,基于这个特点,为了更好地发挥系统性能,开发应用程序时需要尽量减少不同物理CPU模块之间的信息交互。因此,现有技术方案即把与处理具体业务相关的内核线程或用户态进程绑定到某个特定CPU上,例如,关于网络报文处理,会把收包线程、应用层报文处理进程绑定到同一个CPU上。
可见,现有技术方案是通过把内核线程和用户态进程绑定到同一个CPU上,以避免访问远端节点的内存和处理器之间的共享内存,提升了设备处理业务的性能。但是,与网络相关的业务处理时需要大量内存,当本地内存不足时,本地CPU仍然可能会访问远端内存和处理器间的共享内存;此外,当某个节点(node)的内存耗尽时,Linux又刚好将这个node分配给了某个需要消耗大量内存的进程(或线程),此时swap就会产生,尽管此时系统还有许多空闲(free)内存。
发明内容
有鉴于此,本申请提供了一种报文处理方法、装置、设备及计算机可读存储介质,在物理CPU处理报文时,能够避免因内存不足而产生swap、以及访问远端内存带来的负面效果。
具体地,本申请是通过如下技术方案实现的:
一种报文处理方法,所述方法应用于一种包括至少两个物理CPU的网络设备,所述方法包括:
当所述网络设备的第一网卡接收到一条待处理报文时,确定所述第一网卡对应的第一物理CPU,其中,所述第一网卡的收包线程以及与该收包线程相关的应用进程与所述第一物理CPU进行了预先绑定;
利用从所述第一物理CPU的本地内存中预先划分出的预留内存,对所述待处理报文进行转发处理。
一种报文处理装置,所述装置应用于一种包括至少两个物理CPU的网络设备,所述装置包括:
节点确定单元,用于当所述网络设备的第一网卡接收到一条待处理报文时,确定所述第一网卡对应的第一物理CPU,其中,所述第一网卡的收包线程以及与该收包线程相关的应用进程与所述第一物理CPU进行了预先绑定;
报文处理单元,用于利用从所述第一物理CPU的本地内存中预先划分出的预留内存,对所述待处理报文进行转发处理。
一种电子设备,包括:处理器、存储器;
所述存储器,用于存储计算机程序;
所述处理器,用于通过调用所述计算机程序,执行上述报文处理方法。
一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述报文处理方法。
在以上本申请提供的技术方案中,当网络设备的第一网卡接收到一条待处理报文时,确定第一网卡对应的第一物理CPU,其中,第一网卡的收包线程以及与该收包线程相关的应用进程与所述第一物理CPU进行了预先绑定;利用从第一物理CPU的本地内存中预先划分出的预留内存,对待处理报文进行转发处理。可见,本申请通过预留内存机制、限制内存访问、进程线程绑定,确保了第一物理CPU上运行的进程或线程仅访问本地内存,避免了因内存不足而产生swap、以及访问远端内存带来的负面效果。
附图说明
图1为本申请示出的数据处理流程示意图;
图2为本申请示出的一种报文处理方法的流程示意图;
图3为本申请示出的网络设备的多物理CPU示意图;
图4为本申请示出的一种报文处理装置的组成示意图;
图5为本申请示出的一种电子设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在介绍本申请实施例之前,首先对本申请实施例涉及的技术术语进行介绍。NUMA:非一致性内存访问(Non-Uniform Memory Access)。NUMA来源于AMD Opteron微架构,处理器和本地内存之间有更小的延迟和更大的带宽;每个处理器还可以有自己的总线。处理器访问本地的总线和内存时延迟低,而访问远程资源时则要高。可以避免多个CPU访问内存时造成的因资源竞争而导致的性能下降;可以显著增加系统的效率。
SMP:对称多处理(Symmetrical Multi-Processing),是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构,在这种架构中,一台电脑不再由单个CPU组成,而同时由多个处理器运行操作系统的单一复本,并共享内存和一台计算机的其他资源。
Cache:是用来对内存数据的缓存。CPU要访问的数据在Cache中有缓存,称为“命中”(Hit),反之则称为“缺失”(Miss)。
Swap:Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。
本申请实施例提供了一种报文处理方法,该方法可以应用于一种包括至少两个物理CPU的网络设备,并且,该网络设备可以是NUMA架构下的网络设备,也就是说,可以在该网络设备上设置NUMA,这样,本申请实施提供的报文处理方法,则是一种在NUMA架构上对报文进行优化转发的方法,采用该方法,可以在NUMA架构下,实现网络报文的快速处理,同时,减少远端内存访问和swap的产生。需要说明的是,该方法在解决现有技术问题的同时,可以尽量少的对原有的操作系统造成影响。
下面对本申请实施例提供的报文处理方法进行具体介绍。
参见图2,为本申请实施例提供的一种报文处理方法的流程示意图,该方法包括以下步骤S201-S202:
S201:当网络设备的第一网卡接收到一条待处理报文时,确定第一网卡对应的第一物理CPU,其中,第一网卡的收包线程以及与该收包线程相关的应用进程与第一物理CPU进行了预先绑定。
关于本申请实施例中的网络设备,该网络设备包括两个或两个以上的物理CPU。并且,该网络设备还包括一块或多块网卡,对于网络设备的每一网卡,将该网卡对应的收包线程以及与该收包线程相关的应用进程,与网络设备的一个物理CPU进行预先绑定,即,通过将该网卡的进程线程进行绑定,使该网卡对应的收包线程及其相关应用进程绑定在同一个物理CPU上;例如,可以将网络设备的不同网卡的进程线程,与不同的物理CPU进行预先绑定,特殊的,当网络设备的网卡个数大于物理CPU个数时,一个物理CPU可以对应绑定两个或两个以上的网卡的进程线程。
在本申请实施例中,为便于描述,对于网络设备中的任一网卡,将其定义为第一网卡。当第一网卡利用自己的收包线程接收到一条待处理报文后,可以基于上述网络设备的各个网卡与各个物理CPU之间的绑定对应关系,确定与第一网卡对应的物理CPU,为便于区分,这里,将该对应的物理CPU定义为第一物理CPU,即,第一网卡的收包线程以及与该收包线程相关的应用进程与第一物理CPU已经进行了预先绑定。
在本申请实施例的一种实现方式中,S201中的“第一网卡的收包线程以及与该收包线程相关的应用进程与第一物理CPU进行了预先绑定”,具体可以包括:第一网卡的收包线程,与第一物理CPU的至少一个数据核进行了预先绑定;第一网卡的与该收包线程相关的应用进程,与第一物理CPU的至少一个控制核进行了预先绑定;其中,数据核是第一物理CPU中用于处理报文转发的逻辑核,控制核是第一物理CPU中用于处理用户态业务和其它非数据线程的逻辑核。
具体来讲,在本实现方式中,假设网络设备包括N个物理CPU(即N个节点),对于每一物理CPU来讲,假设该物理CPU包括M个逻辑核,可以将该物理CPU的X个逻辑核作为控制核,将该物理CPU的M-X个逻辑核作为数据核,其中,控制核用于处理用户态任务和其它非数据线程,数据核用于处理报文转发,N≥2,M≥2。
对于每一网卡来讲,可以将该网卡的收包线程和与之相关的应用进程绑在同一个物理CPU(即同一个节点)上,具体地,可以将该网卡的收包线程绑在一个物理CPU的M-X个数据核上,将该网卡的与其收包线程相关的应用进程在同一物理CPU的X个控制核上,此外,也可以将收包线程以外的其它线程绑定在该同一物理CPU的上X个控制核上。基于此,关于上述第一网卡,将第一网卡的收包线程绑在第一物理CPU的M-X个数据核上,将第一网卡的与其收包线程相关的应用进程在第一物理CPU的X个控制核上。
需要说明的是,网络设备的各个物理CPU的逻辑核个数可以相同或不同,此外,各个物理CPU的数据核和控制核的个数也可以相同或不同。
在本申请实施例的一种实现方式中,S201中的“确定第一网卡对应的第一物理CPU”,具体可以包括:基于各个网卡的网卡中断与各个物理CPU的数据核之间的预先绑定关系,确定第一网卡对应的第一物理CPU。
具体来讲,关于网络设备上的一块网卡,比如对称多核处理器(SMP)上的一块网卡,该网卡的中断请求(Interrupt ReQuest,简称IRQ)只有一个CPU来响应,其它CPU无法参与,如果这个CPU还要忙其它的中断,比如其它网卡或者其它使用中断的外设(比如磁盘),那么,就会形成性能瓶颈。
为此,在本实现方式中,对于网络设备中的每一网卡,可以把该网卡的网卡中断绑定到一个物理CPU的至少一个数据核上,由该物理CPU的数据核专门处理该网卡的网卡中断,由于网络设备上的每个硬件设备都会被分配一个IRQ号,因此,可以将每一网卡的IRQ号与一个物理CPU的至少一个数据核进行预先绑定。例如,参见图3所示的网络设备的多物理CPU示意图,假设该网卡设备有4个物理CPU(即4个节点),分别是N0、N1、N2和N3,每一物理CPU包括4个逻辑核,分别是CPU0、CPU1、CPU2和CPU3,假设有网卡1和网卡2,可以将网卡1的IRQ号与N1的至少一个逻辑核进行绑定,将网卡2的IRQ号与N2的至少一个逻辑核进行绑定,被绑定的逻辑核可以是用于处理报文转发的数据核,使该数据核专门用于处理对应的网卡中断。
这样,便可以基于各个网卡的网卡中断与各个物理CPU的数据核之间的预先绑定关系,确定第一网卡对应的第一物理CPU。
S202:利用从第一物理CPU的本地内存中预先划分出的预留内存,对第一网卡接收的待处理报文进行转发处理。
在本申请实施例中,关于网络设备的各个物理CPU,每一物理CPU有其对应的本地内存。假设网络设备的总内存大小为Y,每个物理CPU对应的内存大小为Y/N,可以在每个物理CPU的本地内存中预先划分出一段预留内存,该预留内存的大小为Z<Y/N,该预留内存可以是一段连续内存、也可以由多段不连续内存组合而成,这样,每一物理CPU的本地内存中都有一段预留内存,预留内存的大小Z需要满足其所属物理CPU上的转发任务需求。
故而,第一物理CPU的本地内存中也预先划分有一段预留内存,基于此,当第一网卡接收到一条待处理报文后,会通过中断通知第一物理CPU对该报文进行处理,第一物理CPU便可以基于自己的预留内存,对该待处理报文进行转发处理了。
这样,经过网络设备的报文被均分到不同物理CPU,直接使用物理CPU的预留内存对报文进行处理,可以提高整体吞吐能力和性能。
此外,为了实现对报文的处理,需要进行SKB的申请和释放,SKB(socket buffer)是Linux网络代码中最根本的数据结构,收发数据包都是通过SKB,因此,可以分别在网络设备的本地节点申请和释放SKB,例如,假设网络设备有两个节点(即两个物理CPU),分别是N0、N1,当网络设备有10万会话需求时,可以使5万会话在N0上处理,使5万会话在N1上处理。
在本申请实施例的一种实现方式中,S202中的“对第一网卡接收的待处理报文进行转发处理”,可以包括:利用与第一网卡的网卡中断绑定的第一物理CPU的数据核,对第一网卡接收的待处理报文进行转发处理。
在本实现方式中,参见S201中的相关介绍可知,基于各个网卡的网卡中断与各个物理CPU的数据核之间的预先绑定关系,可以确定第一网卡对应的第一物理CPU,并可以确定与第一网卡的网卡中断(比如IRQ号)绑定的第一物理CPU的数据核,这样,便可以利用第一物理CPU的数据核,对第一网卡接收的待处理报文进行转发处理了。
可见,本申请实施例可以通过平衡IRQ中断来达到报文在各个物理CPU上的均分,可以理解的是,绝对的报文均分是一种理想状态,因为经过不同网卡的报文数可能不同,但可以实现相对的报文均分。
其中,可以使用irq balance来绑定和平衡IRQ,irq balance在Linux上一般作为service,在多核处理器系统上分配硬件中断,以提升性能,其是个服务进程。
进一步地,本申请实施例还可以包括:当网络设备检测到网卡中断请求以外的其它中断请求时,确定与该其它中断请求的请求类型预先绑定的第一控制核,其中,第一控制核是网络设备的一个物理CPU中的一个控制核;利用该第一控制核,对该其它中断请求进行处理。具体来讲,通常情况下,除了有网卡产生的IRQ中断外,可能还会有其它中断产生,可以把其它中断号绑定到控制核上,由数据核专用于处理网卡中断,由控制核专门处理其他中断。
在以上本申请实施例提供的报文处理方法中,利用NUMA限制内存访问的机制,和在节点上绑定进程线程的机制结合起来,使所有经过网络设备的流量,被均分到每个物理CPU上分别进行转发处理,提高了系统性能;而且,通过使用每个物理CPU上的预留内存进行处理,保证了处理网络报文转发时的内存申请,使在节点CPU上处理关键业务时内存充足,避免了内存申请释放频繁和内存不足带来的性能下降。
也就是说,本申请实施例通过预留内存机制、限制内存访问、进程线程绑定,确保了当前物理CPU上运行的进程或线程仅访问本地内存,不至于出现CPU空闲或因某个物理CPU上IRQ中断过多导致因内存不足产生swap、或访问其它CPU内存和访问CPU间的共享内存带来的负面效果。
需要说明的是,本申请实施例利用NUMA系统架构,实现了一种更加灵活的通过节点内存预留机制、限制内存访问机制、进程线程绑定机制来处理网络报文转发的一种方法,通过这种方法,NUMA架构下的网络设备可以有更高的性能和转发效率,提高设备的可扩展性,针对有更高性能的需求,仅需要增加设备内存和物理CPU个数。针对目前的一个物理CPU上逻辑核的个数的限制及CPU上cache所带来的性能上的局限性,本申请实施例提供的报文处理方法可以解决其局限性。
参见图4,为本申请实施例提供的一种报文处理装置的组成示意图,所述装置应用于一种包括至少两个物理CPU的网络设备,所述装置包括:
节点确定单元410,用于当所述网络设备的第一网卡接收到一条待处理报文时,确定所述第一网卡对应的第一物理CPU,其中,所述第一网卡的收包线程以及与该收包线程相关的应用进程与所述第一物理CPU进行了预先绑定;
报文处理单元420,用于利用从所述第一物理CPU的本地内存中预先划分出的预留内存,对所述待处理报文进行转发处理。
在本申请实施例的一种实现方式中,所述第一网卡的收包线程以及与该收包线程相关的应用进程与所述第一物理CPU进行了预先绑定,包括:
所述第一网卡的收包线程,与所述第一物理CPU的至少一个数据核进行了预先绑定;所述第一网卡的与该收包线程相关的应用进程,与所述第一物理CPU的至少一个控制核进行了预先绑定;
其中,所述数据核是所述第一物理CPU中用于处理报文转发的逻辑核,所述控制核是所述第一物理CPU中用于处理用户态业务和其它非数据线程的逻辑核。
在本申请实施例的一种实现方式中,节点确定单元410,具体用于:
基于各个网卡的网卡中断与各个物理CPU的数据核之间的预先绑定关系,确定所述第一网卡对应的第一物理CPU。
在本申请实施例的一种实现方式中,报文处理单元420,用于
利用与所述第一网卡的网卡中断绑定的所述第一物理CPU的数据核,对所述待处理报文进行转发处理。
在本申请实施例的一种实现方式中,所述装置还包括:
中断处理单元,用于当所述网络设备检测到网卡中断请求以外的其它中断请求时,确定与该其它中断请求的请求类型预先绑定的第一控制核,其中,所述第一控制核是所述网络设备的一个物理CPU中的一个控制核;利用所述第一控制核,对该其它中断请求进行处理。
在本申请实施例的一种实现方式中,所述网络设备是非一致性内存访问NUMA架构下的网络设备。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本申请实施例还提供了一种电子设备,该电子设备的结构示意图如图5所示,该电子设备5000包括至少一个处理器5001、存储器5002和总线5003,至少一个处理器5001均与存储器5002电连接;存储器5002被配置用于存储有至少一个计算机可执行指令,处理器5001被配置用于执行该至少一个计算机可执行指令,从而执行如本申请中任意一个实施例或任意一种可选实施方式提供的任意一种报文处理方法的步骤。
进一步,处理器5001可以是FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其它具有逻辑处理能力的器件,如MCU(Microcontroller Unit,微控制单元)、CPU(Central Process Unit,中央处理器)。
应用本申请实施例,通过预留内存机制、限制内存访问、进程线程绑定,确保了第一物理CPU上运行的进程或线程仅访问本地内存,避免了因内存不足而产生swap、以及访问远端内存带来的负面效果。
本申请实施例还提供了另一种计算机可读存储介质,存储有计算机程序,该计算机程序用于被处理器执行时实现本申请中任意一个实施例或任意一种可选实施方式提供的任意一种报文处理方法的步骤。
本申请实施例提供的计算机可读存储介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-Only Memory,只读存储器)、RAM(RandomAccess Memory,随即存储器)、EPROM(Erasable Programmable Read-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读存储介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。
应用本申请实施例,通过预留内存机制、限制内存访问、进程线程绑定,确保了第一物理CPU上运行的进程或线程仅访问本地内存,避免了因内存不足而产生swap、以及访问远端内存带来的负面效果。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

Claims (10)

1.一种报文处理方法,其特征在于,所述方法应用于一种包括至少两个物理CPU的网络设备,所述方法包括:
当所述网络设备的第一网卡接收到一条待处理报文时,确定所述第一网卡对应的第一物理CPU,其中,所述第一网卡的收包线程以及与该收包线程相关的应用进程与所述第一物理CPU进行了预先绑定;
利用从所述第一物理CPU的本地内存中预先划分出的预留内存,对所述待处理报文进行转发处理。
2.根据权利要求1所述的方法,其特征在于,所述第一网卡的收包线程以及与该收包线程相关的应用进程与所述第一物理CPU进行了预先绑定,包括:
所述第一网卡的收包线程,与所述第一物理CPU的至少一个数据核进行了预先绑定;所述第一网卡的与该收包线程相关的应用进程,与所述第一物理CPU的至少一个控制核进行了预先绑定;
其中,所述数据核是所述第一物理CPU中用于处理报文转发的逻辑核,所述控制核是所述第一物理CPU中用于处理用户态业务和其它非数据线程的逻辑核。
3.根据权利要求2所述的方法,其特征在于,所述确定所述第一网卡对应的第一物理CPU,包括:
基于各个网卡的网卡中断与各个物理CPU的数据核之间的预先绑定关系,确定所述第一网卡对应的第一物理CPU。
4.根据权利要求3所述的方法,其特征在于,所述对所述待处理报文进行转发处理,包括:
利用与所述第一网卡的网卡中断绑定的所述第一物理CPU的数据核,对所述待处理报文进行转发处理。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当所述网络设备检测到网卡中断请求以外的其它中断请求时,确定与该其它中断请求的请求类型预先绑定的第一控制核,其中,所述第一控制核是所述网络设备的一个物理CPU中的一个控制核;
利用所述第一控制核,对该其它中断请求进行处理。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述网络设备是非一致性内存访问NUMA架构下的网络设备。
7.一种报文处理装置,其特征在于,所述装置应用于一种包括至少两个物理CPU的网络设备,所述装置包括:
节点确定单元,用于当所述网络设备的第一网卡接收到一条待处理报文时,确定所述第一网卡对应的第一物理CPU,其中,所述第一网卡的收包线程以及与该收包线程相关的应用进程与所述第一物理CPU进行了预先绑定;
报文处理单元,用于利用从所述第一物理CPU的本地内存中预先划分出的预留内存,对所述待处理报文进行转发处理。
8.根据权利要求7所述的装置,其特征在于,所述第一网卡的收包线程以及与该收包线程相关的应用进程与所述第一物理CPU进行了预先绑定,包括:
所述第一网卡的收包线程,与所述第一物理CPU的至少一个数据核进行了预先绑定;所述第一网卡的与该收包线程相关的应用进程,与所述第一物理CPU的至少一个控制核进行了预先绑定;
其中,所述数据核是所述第一物理CPU中用于处理报文转发的逻辑核,所述控制核是所述第一物理CPU中用于处理用户态业务和其它非数据线程的逻辑核。
9.一种电子设备,其特征在于,包括:处理器、存储器;
所述存储器,用于存储计算机程序;
所述处理器,用于通过调用所述计算机程序,执行如权利要求1-6中任一项所述的报文处理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-6任一项所述的报文处理方法。
CN202110387613.5A 2021-04-09 2021-04-09 报文处理方法、装置、设备及计算机可读存储介质 Active CN113176950B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110387613.5A CN113176950B (zh) 2021-04-09 2021-04-09 报文处理方法、装置、设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110387613.5A CN113176950B (zh) 2021-04-09 2021-04-09 报文处理方法、装置、设备及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN113176950A true CN113176950A (zh) 2021-07-27
CN113176950B CN113176950B (zh) 2023-10-27

Family

ID=76925014

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110387613.5A Active CN113176950B (zh) 2021-04-09 2021-04-09 报文处理方法、装置、设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN113176950B (zh)

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012016439A1 (zh) * 2010-08-06 2012-02-09 中兴通讯股份有限公司 业务管理方法和装置、以及设备
CN104850461A (zh) * 2015-05-12 2015-08-19 华中科技大学 一种面向numa架构的虚拟cpu调度优化方法
US20150277985A1 (en) * 2014-04-01 2015-10-01 International Business Machines Corporation Runtime capacity planning in a simultaneous multithreading (smt) environment
CN105429881A (zh) * 2014-09-23 2016-03-23 杭州迪普科技有限公司 一种组播报文转发方法和装置
US20160373475A1 (en) * 2015-06-16 2016-12-22 Wins Co., Ltd. Method and apparatus for service traffic security using dimm channel distribution in multicore processing system
CN107135189A (zh) * 2016-02-26 2017-09-05 华为技术有限公司 一种报文发送方法及物理机
CN107168800A (zh) * 2017-05-16 2017-09-15 郑州云海信息技术有限公司 一种内存分配方法及装置
CN107346267A (zh) * 2017-07-13 2017-11-14 郑州云海信息技术有限公司 一种基于numa架构的cpu性能优化方法和装置
CN107436798A (zh) * 2017-08-15 2017-12-05 深信服科技股份有限公司 一种基于numa节点的进程访问方法及装置
CN108809748A (zh) * 2018-03-26 2018-11-13 北京天融信网络安全技术有限公司 网络审计数据采集方法及相应装置、设备和存储介质
CN110737530A (zh) * 2019-09-25 2020-01-31 网络通信与安全紫金山实验室 一种提升handle标识解析系统收包能力的方法
CN111580949A (zh) * 2020-04-30 2020-08-25 成都安恒信息技术有限公司 一种网络收包模式自动调节方法
US20200409585A1 (en) * 2019-06-29 2020-12-31 Intel Corporation System and method to track physical address accesses by a cpu or device
CN112231102A (zh) * 2020-10-16 2021-01-15 苏州浪潮智能科技有限公司 一种提升存储系统性能的方法、装置、设备、产品

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012016439A1 (zh) * 2010-08-06 2012-02-09 中兴通讯股份有限公司 业务管理方法和装置、以及设备
US20150277985A1 (en) * 2014-04-01 2015-10-01 International Business Machines Corporation Runtime capacity planning in a simultaneous multithreading (smt) environment
CN105429881A (zh) * 2014-09-23 2016-03-23 杭州迪普科技有限公司 一种组播报文转发方法和装置
CN104850461A (zh) * 2015-05-12 2015-08-19 华中科技大学 一种面向numa架构的虚拟cpu调度优化方法
US20160373475A1 (en) * 2015-06-16 2016-12-22 Wins Co., Ltd. Method and apparatus for service traffic security using dimm channel distribution in multicore processing system
CN107135189A (zh) * 2016-02-26 2017-09-05 华为技术有限公司 一种报文发送方法及物理机
CN107168800A (zh) * 2017-05-16 2017-09-15 郑州云海信息技术有限公司 一种内存分配方法及装置
CN107346267A (zh) * 2017-07-13 2017-11-14 郑州云海信息技术有限公司 一种基于numa架构的cpu性能优化方法和装置
CN107436798A (zh) * 2017-08-15 2017-12-05 深信服科技股份有限公司 一种基于numa节点的进程访问方法及装置
CN108809748A (zh) * 2018-03-26 2018-11-13 北京天融信网络安全技术有限公司 网络审计数据采集方法及相应装置、设备和存储介质
US20200409585A1 (en) * 2019-06-29 2020-12-31 Intel Corporation System and method to track physical address accesses by a cpu or device
CN110737530A (zh) * 2019-09-25 2020-01-31 网络通信与安全紫金山实验室 一种提升handle标识解析系统收包能力的方法
CN111580949A (zh) * 2020-04-30 2020-08-25 成都安恒信息技术有限公司 一种网络收包模式自动调节方法
CN112231102A (zh) * 2020-10-16 2021-01-15 苏州浪潮智能科技有限公司 一种提升存储系统性能的方法、装置、设备、产品

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
TING WU等: "NUMA-Aware Memory Management with In-Memory Databases", 《CLUSTER COMPUTING》, pages 705 - 724 *
王煜伟等: "面向网络功能虚拟化的高性能负载均衡机制", 《计算机研究与发展》, vol. 55, no. 04, pages 689 - 703 *
胡卫文等: "基于DPDK技术实现OVS", 《网络新媒体技术》, vol. 7, no. 01, pages 47 - 53 *

Also Published As

Publication number Publication date
CN113176950B (zh) 2023-10-27

Similar Documents

Publication Publication Date Title
US11036650B2 (en) System, apparatus and method for processing remote direct memory access operations with a device-attached memory
CN108027804B (zh) 片上原子事务引擎
US9753854B1 (en) Memory controller load balancing with configurable striping domains
US9710408B2 (en) Source core interrupt steering
CN105579961B (zh) 数据处理系统及操作方法、用于数据处理系统的硬件单元
US7469321B2 (en) Software process migration between coherency regions without cache purges
US9658877B2 (en) Context switching using a context controller and on-chip context cache
CN108351834B (zh) 用于针对核到核数据传送优化指令减少性能逆转的低开销硬件预测器
US7624236B2 (en) Predictive early write-back of owned cache blocks in a shared memory computer system
KR20120061938A (ko) 시스템 관리 모드의 프로세서에 상태 스토리지를 제공하기 위한 장치, 방법 및 시스템
US9063794B2 (en) Multi-threaded processor context switching with multi-level cache
CN107729267B (zh) 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
US10331581B2 (en) Virtual channel and resource assignment
US7360008B2 (en) Enforcing global ordering through a caching bridge in a multicore multiprocessor system
CN117370046A (zh) 进程间通信方法、系统、设备和存储介质
US10846094B2 (en) Method and system for managing data access in storage system
CN113176950B (zh) 报文处理方法、装置、设备及计算机可读存储介质
US20070180198A1 (en) Processor for multiprocessing computer systems and a computer system
CN109032510B (zh) 基于分布式结构的处理数据的方法和装置
BiTalebi et al. LARA: Locality-aware resource allocation to improve GPU memory-access time
US20190179779A1 (en) Triggered operations for collective communication
CN111651375A (zh) 基于分布式有限目录的多路处理器缓存数据一致性实现方法及系统
JP7147531B2 (ja) 情報処理装置、メモリ初期化制御方法及びプログラム
CN117311833B (zh) 一种存储控制方法、装置、电子设备及可读存储介质
JP5847313B2 (ja) 情報処理装置

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