CN104050091B - 基于非一致性内存访问系统的网络设备及其设置方法 - Google Patents

基于非一致性内存访问系统的网络设备及其设置方法 Download PDF

Info

Publication number
CN104050091B
CN104050091B CN201210585985.XA CN201210585985A CN104050091B CN 104050091 B CN104050091 B CN 104050091B CN 201210585985 A CN201210585985 A CN 201210585985A CN 104050091 B CN104050091 B CN 104050091B
Authority
CN
China
Prior art keywords
memory
queue
network
internal memory
chained list
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.)
Active
Application number
CN201210585985.XA
Other languages
English (en)
Other versions
CN104050091A (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.)
Beijing Huayao Technology Co., Ltd
Original Assignee
ARRAY NETWORKS (BEIJING) Inc
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 ARRAY NETWORKS (BEIJING) Inc filed Critical ARRAY NETWORKS (BEIJING) Inc
Priority to CN201210585985.XA priority Critical patent/CN104050091B/zh
Publication of CN104050091A publication Critical patent/CN104050091A/zh
Application granted granted Critical
Publication of CN104050091B publication Critical patent/CN104050091B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

本发明基于非一致性内存访问系统的网络设备及其设置方法,涉及网络数据传输领域,本发明是由多核计算机处理器、处理器内存、PCIeI/O控制器、n(n≥1)个进程模块以及网卡等部分组成,并通过对系统的NUMA节点与相关部件绑定后形成运行域,以保证进程和网卡只使用离自己最近的内存。本发明充分利用了NUMA系统的特性,在系统正常运行的情况下,运行域是相互独立运行的,一个运行域中的进程和网卡不会访问另外一个运行域的内存。这样就能发挥NUMA系统的最大效率。

Description

基于非一致性内存访问系统的网络设备及其设置方法
本发明涉及网络数据传输领域,特别涉及一种基于非一致性内存访问系统的网络设备及其设置方法。
背景技术
NUMA(Non Uniform Memory Access Achitecture,非一致性内存访问或者非统一内存架构)是一种用于多处理器计算机的内存设计方案。在NUMA系统中,内存访问时间取决于处理器与内存相对位置。也就是说,处理器访问它自己的本地存储器的速度要比访问非本地存储器的速度要块。
英特尔公司的最新处理器,比如代号为Nehalem,Sandy Bridge和ivy bridge等至强处理器,都使用的是这种NUMA架构。这些系统中的一个最大的变化是在处理器中整合了内存控制器,而不像以前的处理器,把内存控制器放在北桥芯片组中。因此,当一个处理器要访问另一个处理器所带的内存时,首先要通过处理器间的链路才能访问到对方的内存,这就比访问本地内存所花费的时间多。
英特尔公司的另外一项技术:QuickPath interconnect(QPI)互联技术,来连接处理器与处理器,以及处理器和外部I/O的连接。这是一种点对点的连接方式,替代了以前的总线共享方式。这种技术虽然能减轻访问远端节点的耗费,但并不能完全去掉,因此从本质上说,访问本地和远程内存的差异使得这些多核处理器系统成为了符合NUMA架构的系统。
另外,代号为sandy bridge处理器还把PCI-express I/O(新一代的总线接口)子系统集成到芯片中,并与芯片中的其他部分,如:处理器核心,处理器的高速缓存,集成的内存控制器,以及QPI代理,通过一个32位的双向环直接相连。这种连接方式大大减少了PCI-express设备的访问延迟。根据英特尔公司的测量的数据,读取本地的数据会减少32%延迟。除此之外,英特尔的DDIO技术(Data Direct I/O,直接的I/O的桥)可以使PCIe网卡直接读写处理器的高速缓存,而不必先写到内存,再到高速缓存。这样不但减少了功耗,还进一步减少了访问的延迟。在这种架构下,处理器很容易处理万兆级别的以太网络。如图1中显示的是两个NUMA节点,每个节点包含了一个六个核心的处理器以及与它直连的内存。
为了适应上述硬件系统的发展,现代操作系统,比如linux/FreeBSD,做了很多改进。与NUMA方面的相关改进有:①实现了根据NUMA节点信息来分配内存。②进程的绑定:当进程需要运行时,操作系统会根据某种调度算法来选择一个计算机核给这个进程,当运行一段时间或者需要睡眠时,又会被调度出去,等待再次被调度运行。但进程调度往往不会考虑已使用的内存在哪个节点上,因此进程有个可能会从一个处理器的核心迁移到另外一个处理器的核心。如果进程在第一个处理器中分配内存,而在调度到第二个处理器使用这些内存,那就会影响系统的性能。操作系统提供的绑定功能是指进程只能在所指定的几个处理器核心上运行,这样可以使得被绑定的进程访问数据都在本地节点中。
作为网络设备,必须尽快地处理包,提高网络的吞吐,减少延迟。目前该领域已有技术中,有的采用虚拟化技术来使用NUMA服务器,根据NUMA节点把系统分成几个独立的系统,虽然实现起来简单,但多个虚拟系统整合起来 很不方便,性能方面也会有不少损失。
另外的方法是采用操作系统提供有些基本功能,比如进程绑定和NUMA内存分配功能,来对系统进行调优,以减少对远程系统内存的访问所带来的开销。但这些只是些通用的功能,并没有为网络产品提供完整的解决方案。目前的操作系统,例如linux/unix虽然都支持了此方法,但都不能有效的解决NUMA所引起的内存访问冲突的问题,从而不能100%的有效发挥硬件的性能。
再次,上述已有技术没充分利用现有处理器架构,即把PCIe总线控制器集成到处理器的特性。目前网卡技术已经发展到采用PCIe接口,上述已有技术尚未充分利用这点来提高网口的性能。
发明内容
为克服已有技术中存在的问题,本发明的目的是提供一种基于非一致性内存访问系统的网络设备及设置方法,在充分发挥现有硬件技术发展性能的基础上使得访问系统高效率、且用户操作方便。
基于非一致性内存访问系统的网络设备,包括多核计算机处理器、处理器内存、PCIeI/O控制器、n(n≥1)个进程模块以及网卡,所述的进程模块或称工作进程模块,可以是内核线程,以下统称进程,所述的进程绑定在一个核心或者同一个处理器上的不同核心上。其中n个进程模块并发处理不同网络协议的数据包,每个进程模块绑定在所述多核处理器的一个核心或者同一个处理器的m(m≥1)个核心上,并同时与所述多核处理器的PCIeI/O控制器绑定,以形成由多核处理器、处理器内存及PCIeI/O控制器构成的运行域。
进一步地,所述的运行域间保持相互独立,所述的n个进程在所述的运行域中处理各自的数据包。
进一步地,所述的运行域根据多核计算机处理器的NUMA节点情况划分,每个运行域至少包括一个NUMA节点以保证进程和网卡使用离自己较近的内存。
进一步地,所述的网卡和与其相连的、内嵌于处理器的PCIe I/O控制器所在的运行域绑定,由该运行域的进程来处理所述网卡的数据包。
基于非一致性内存访问系统的网络设备设置方法,包括以下步骤:
步骤1,根据主板提供的信息,确定系统的NUMA节点数、每个节点的处理器核心、以及每个节点所带的物理内存地址的范围,并记录这些信息以供内存分配的时候使用;
步骤2,初始化网卡:根据PCI总线探测的结果,获得所述网卡属于哪个主桥(HostBridge,主板上离CPU最近的芯片)下,找到该主桥对应的处理器,从而确定它所在的运行域;
步骤3,启动进程:根据配置把进程绑定到相应的处理器核心上,进程初始化全局变量。
进一步地,上述步骤3所述的进程,它们的主函数操作包括以下分步骤:
——通过查询的方式,看本进程绑定的网卡队列中是否接收到了网络数据包,如果有,则从该队列中拿出来,然后根据固定的算法,把网络数据包放在某个进程的接收队列中,等待它做网络协议层方面的处理,算法根据网络协议有所不同;
——上面的操作会使网卡的接收队列空出新的空间,所以需要用新的空闲内存来填,进程从网卡所属的运行域中获得内存,并把内存地址写到网卡的接收队列中;
——查询网卡发送队列是否有数据包已经发出去了,有的话,则释放相应的内存;
——如果进程的发送队列中有数据包要发送,则把数据包发到网卡的发送队列中;
——进程从自己的接收队列中获得数据包,并对其进行网络协议层方面的处理。如果有数据包需要发出去,先放在进程的发送队列中,进程发送队列的数据包通过所述网卡发送队列发送出去。
进一步地,上述步骤1中所述的内存分配包括普通内存分配和网络内存分配,所述普通内存分配包括以下分步骤:
——先确定从哪个运行域中分配内存,如果输入参数中没指定,则根据当前进程所在的运行域中分配内存,否则,从指定的运行域中分配;
——如果该运行域中有内存,则从系统的该运行域中分配所需内存,否则,
——如果远端域中有内存,则从其他运行域中获得,否则,
——分配失败。
进一步地,所述的网络内存为每个并行处理的进程配置网络内存缓存模块,以便于高速处理网络数据包。
进一步地,所述的为每个进程配置网络内存缓存模块分为链表和环形队列两级:
第一级是个链表,包括有头指针,链表长度和这个链表允许的最大长度等字段。释放内存的时候,如果长度不超过链表的最大长度,则都插到链表中。否则,就挂到自己的队列中(如果队列也没满)。分配内存的时候,如果链表中有内存就从链表中分配。如果没有,就从其他进程的环形队列转移一些网络内存到自己的链表中,然后再从链表中分配内存。
第二级为环形队列,环形队列是进程间用来交换内存的,因为有可能某些进程累积的内存多,有些累积的少。少的进程就可以从多的进程的队列里获得内存,而不必从系统中获得内存。环形队列本质上是个指针数组,有写指针和读指针。写指针由自己来控制(因此不需要互斥锁来避免并发),当所述自己的链表已满,则把内存插入到本进程的队列中。读指针由其它的进程操作,因此有个互斥锁来避免并发操作产生的冲突。其它的进程操作前必须获得队列的互斥锁,然后才能从队列中获得内存,并移动读指针。
进一步地,所述的为每个进程配置网络内存缓存模块的分步骤如下:
——如果本进程链表内有空闲的内存,则分配并返回;否则,
——从本进程的环形队列开始,依次遍历同运行域中的所有进程的环形队列:首先尝试获得该环形队列的互斥锁:如果能拿到互斥锁,则把该队列上所有的空闲内存移到本进程的链表中,然后分配一个内存并退出。如果队列中没有空闲内存或则是不能拿到互斥锁,则尝试下一个进程的环形队列,直到遍历完所有进程的环形队列;
——如果所有的环形队列都没有空闲内存,则从该运行域的系统内存中获得。
进一步地,所述的进程释放内存的分步骤如下:
——如果本进程的链表长度小于设定的最大长度,则把要释放的内存插到链表中;否则,
——如果本进程的环形队列还没满,则把空闲队列挂上去,并修改写指针;否则,
——把所述内存释放到系统中。
本发明充分利用了NUMA系统的特性,在系统正常运行的情况下,运行域是相互独立运行的,一个运行域中的进程和网卡不会访问另外一个运行域的内存。这样就能发挥NUMA系统的最大效率。本发明设计从硬件结构入手,改造系统软件,让它更符合NUMA系统的特性,以减少内存访问所带来的损耗,有效发挥硬件所能提供的性能。
附图说明
图1是已有技术中NUMA系统结构示意图;
图2是本发明NUMA系统的网络设备结构示意图;
图3是本发明系统的运行域为每个进程配置网络内存缓存模块的流程框图。
具体实施方式
在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
如图2所示,基于非一致性内存访问系统的网络设备,包括多核计算机处理器110、处理器内存120、PCIEI/O控制器140、n(n≥1)个进程模块130以及网卡150,其中n个进程模块并发处理不同网络协议的数据包,所述的进程或称工作进程可以是内核线程,每个进程模块绑定在所述多核处理器的一个核心或者同一个处理器的m(m≥1)个不同核心上,并同时与所述多核处理器的PCIEI/O控制器绑定,以形成由多核处理器、处理器内存及PCIEI/O控制器构成的运行域100,所述的运行域间保持相互独立,所述的n个进程在所述的运行域中处理各自的数据包。所述的运行域根据多核计算机处理器的NUMA节点情况划分,每个运行域至少包括一个NUMA节点以保证进程和网卡使用离自己较近的内存。由于进程属于一个运行域,通过这种方法很容易把网卡绑定到离它较近的运行域中,所述的网卡应采用PCIe接口的网卡。一般来说,万兆网卡都有多个发送和接收队列,如上所述可以把不同的一对发送和接收队列绑定到同一个运行域的不同进程中。
进一步地,所述的网卡和与其相连的、内嵌于处理器的PCIe PCIEI/O控制器所在的运行域绑定,由该运行域的进程来处理所述网卡的数据包。
上述进程和网卡的运行域固定下来以后,我们就能根据就近原则从它们所属的运行域中分配内存。一方面,避免访问远程节点所带来的额外延迟;另一方面,减少不同处理器访问同一个内存所带来的访问冲突。为此,我们改造了系统内存的分配函数,以便从指定的运行域中分配内存,当指定的运行域中没有可用内存以后,才到其它运行域中获取内存,例如较远端的运行域中获取内 存。
同时,为了排除操作系统对加载进程的影响,每个进程使用的全局变量数组应当动态分配,通过改造后的内存分配函数,从它所属的运行域中分配。此外,进程的运行栈也必须从它所在运行域的内存中分配。总的原则是,进程所需要的内存都从它所属的运行域中获得。
基于非一致性内存访问系统的网络设备设置方法,包括以下步骤:
步骤1,根据主板提供的信息,确定系统的NUMA节点数、每个节点的处理器核心、以及每个节点所带的物理内存地址的范围,并记录这些信息以供内存分配的时候使用;
步骤2,初始化网卡:根据PCI总线探测的结果,获得所述网卡属于哪个主桥(HostBridge,主板上离CPU最近的芯片)下,也就可以知道它与哪个处理器离得近,从而确定它所在的运行域;此步骤用于确定网卡与进程的关系,也就是确定由哪个进程来处理网卡的流量,原则是网卡必须由同一个运行域中的进程来处理;
步骤3,启动进程:根据配置把进程绑定到相应的处理器核心上,进程初始化全局变量,在这个时候可以从进程所属的运行域中获得。一般来说,每个处理器核心上都有一个进程,我们给在同一个运行域的进程从“0”开始统一编号。
进一步地,步骤3所述的在同一个运行域的进程,它们的主函数操作包括以下分步骤:
——通过查询的方式,看自己绑定的网卡队列中是否接收到了网络数据包,如果有,则从该队列中拿出来,然后根据固定的算法,把网络数据包放在某个进程的接收队列中,等待它做网络协议层方面的处理,算法根据网络协议有所 不同,例如,对于TCP和UDP,可以根据数据包的源端口和目的端口相加,然后与运行域中总进程数取模来获得目的进程的编号;
——上面的操作会使网卡的接收队列空出新的空间,所以需要用新的空闲内存来填,进程从网卡所属的运行域中获得内存,并把内存地址写到网卡的接收队列中;
——查询网卡发送队列是否有数据包已经发出去了,有的话,则释放相应的内存;
——如果进程的发送队列中有数据包要发送,则把数据包发到网卡的发送队列中;
——进程从自己的接收队列中获得数据包,并对其进行网络协议层方面的处理。如果有数据包需要发出去,先放在进程的发送队列中,进程发送队列的数据包通过所述网卡发送队列发送出去。
进一步地,上述步骤1中所述的内存分配包括普通内存分配和网络内存分配,网络内存是给网络模块用的,用于保存网卡收发的数据包,它有固定大小,例如2048字节,大于以太网帧的最大长度。除了网络内存,就是普通内存。所述普通内存分配包括以下分步骤:
——先确定从哪个运行域中分配内存,如果输入参数中没指定,则根据当前进程所在的运行域中分配内存,否则,从指定的运行域中分配;
——如果该运行域中有内存,则从系统的该运行域中分配所需内存,否则,
——如果远端域中有内存,则从其他运行域中获得,否则,
——分配失败。
一般高速网络每秒要处理几百万个包,上述普通内存的分配方式明显不能 适应这样的网络状况。因此为了更有效的发送和接收数据包,我们给每个并行处理的进程增加了一层内存缓存模块。当需要内存的时候,先看该缓存中有没有,如果有就从中分配,否则按上面说的普通内存分配方式从系统中分配。当释放内存的时候,先释放到内存缓存模块中,当内存缓存模块已满则释放到系统中。
进一步地,所述的网络内存为每个并行处理的进程配置网络内存缓存模块,以便于高速处理网络数据包。
进一步地,所述的为每个进程配置网络内存缓存模块分为链表和环形队列两级:
第一级是个链表,包括有头指针,链表长度和这个链表允许的最大长度等字段。释放内存的时候,如果长度不超过链表的最大长度,则都插到链表中。否则,就挂到自己的队列中(如果队列也没满)。分配内存的时候,如果链表中有内存就从链表中分配。如果没有,就从其他进程的环形队列转移一些网络内存到自己的链表中,然后再从链表中分配内存。
第二级为环形队列,环形队列是进程间用来交换内存的,因为有可能某些进程累积的内存多,有些累积的少。少的进程就可以从多的进程的队列里获得内存,而不必从系统中获得内存。环形队列本质上是个指针数组,有写指针和读指针。写指针由自己来控制(因此不需要互斥锁来避免并发),当所述自己的链表已满,则把内存插入到本进程的队列中。读指针由其它的进程操作,因此有个互斥锁来避免并发操作产生的冲突。其它的进程操作前必须获得队列的互斥锁,然后才能从队列中获得内存,并移动读指针。
进一步地,如图3所示,所述的为每个进程配置网络内存缓存模块的分步骤如下:
——如果本进程链表内有空闲的内存,则分配并返回;否则,
从本进程的环形队列开始,依次遍历同运行域中的所有进程的环形队列:首先尝试获得该环形队列的互斥锁:如果能拿到互斥锁,则把该队列上所有的空闲内存移到本进程的链表中,然后分配一个内存并退出。如果队列中没有空闲内存或则是不能拿到互斥锁,则尝试下一个进程的环形队列,直到遍历完所有进程的环形队列;
——如果所有的环形队列都没有空闲内存,则从该运行域的系统内存中获得。
进一步地,所述的进程释放内存的分步骤如下:
——如果本进程的链表长度小于设定的最大长度,则把要释放的内存插到链表中;否则,
——如果本进程的环形队列还没满,则把空闲队列挂上去,并修改写指针;否则,
——把所述内存释放到系统中。
采用本发明的网络产品使用的是通用服务器主板,比其他专业网络处理平台相比,它的优点是成本低,设计灵活。虽然硬件上没专业的网络处理器强大,但如果能随着英特尔公司硬件的发展,采用多核多进程技术,并充分利用新的NUMA架构平台优势,也可以达到理想的性能。本发明设计从硬件结构入手,改造系统软件,让它更符合NUMA系统的特性,以减少内存访问所带来的损耗,有效发挥硬件所能提供的性能。
需要说明的是,本发明各设备实施方式中提到的各单元都是逻辑单元,在物理上,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现,这些逻辑单元本身的物理实现方式并不是最重要的,这些逻辑单元所实现的功能的组合才是解决本发明所提出的技术问题的关键。此外,为了突出本发明的创新部分,本发明没有引入上述各设备实施方式以及与解决本发明所提出的技术问题关系不太密切的单元,但这并不表明不存在上述设备实施方式以及其它有关实施单元。
虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

Claims (6)

1.一种基于非一致性内存访问系统的网络设备设置方法,包括以下步骤:
步骤1,根据主板提供的信息,确定系统的NUMA节点数、每个节点的处理器核心、以及每个节点所带的物理内存地址的范围,并记录这些信息以供内存分配的时候使用;
步骤2,初始化网卡:根据PCI总线探测的结果,获得所述网卡属于哪个主桥下,找到该主桥对应的处理器,从而确定它所在的运行域;
步骤3,启动进程:根据配置把进程绑定到相应的处理器核心上,进程初始化全局变量,其特征是所述的进程,其主函数操作包括以下分步骤:
——通过查询的方式,看自己绑定的网卡队列中是否接收到了网络数据包,如果有,则从该队列中拿出来,然后根据固定的算法,把网络数据包放在某个进程的接收队列中,等待它做网络协议层方面的处理,算法根据网络协议有所不同;
——上面的操作会使网卡的接收队列空出新的空间,所以需要用新的空闲内存来填,进程从网卡所属的运行域中获得内存,并把内存地址写到网卡的接收队列中;
——查询网卡发送队列是否有数据包已经发出去了,有的话,则释放相应的内存;
——如果进程的发送队列中有数据包要发送,则把数据包发到网卡的发送队列中;
——进程从自己的接收队列中获得数据包,并对其进行网络协议层方面的处理,如果有数据包需要发出去,先放在进程的发送队列中,进程发送队列的数据包通过所述网卡发送队列发送出去。
2.根据权利要求1所述的基于非一致性内存访问系统的网络设备设置方法,其特征是上述步骤1中所述的内存分配包括普通内存分配和网络内存分配,所述普通内存分配包括以下分步骤:
——先确定从哪个运行域中分配内存,如果输入参数中没指定,则根据当前进程所在的运行域中分配内存,否则,从指定的运行域中分配;
——如果该运行域中有内存,则从系统的该运行域中分配所需内存,否则,
——如果远程运行域中有内存,则从其他运行域中获得,否则,
——分配失败。
3.根据权利要求2所述的基于非一致性内存访问系统的网络设备设置方法,其特征是所述的网络内存为每个并行处理的进程配置网络内存缓存模块,以便于高速处理网络数据包。
4.根据权利要求3所述的基于非一致性内存访问系统的网络设备设置方法,其特征是所述的为每个并行处理的进程配置网络内存缓存模块分为链表和环形队列两级,其中
第一级是个链表,包括有头指针,链表长度和这个链表允许的最大长度字段,释放内存的时候,如果长度不超过链表的最大长度,则都插到链表中,否则,就挂到自己的队列中,分配内存的时候,如果链表中有内存就从链表中分配,如果没有,就从其他进程的环形队列转移一些网络内存到自己的链表中,然后再从链表中分配内存;
第二级为环形队列,环形队列是进程间用来交换内存的,因为有可能某些进程累积的内存多,有些累积的少,少的进程就可以从多的进程的队列里获得内存,而不必从系统中获得内存,环形队列本质上是个指针数组,有写指针和读指针,写指针由自己来控制,当所述自己的链表已满,则把内存插入到本进程的队列中,读指针由其它的进程操作,因此有个互斥锁来避免并发操作产生的冲突,其它的进程操作前必须获得队列的互斥锁,然后才能从队列中获得内存,并移动读指针。
5.根据权利要求4所述的基于非一致性内存访问系统的网络设备设置方法,其特征是所述的为每个并行处理的进程配置网络内存缓存模块的分步骤如下:
——如果本进程链表内有空闲的内存,则分配并返回;否则,
——从本进程的环形队列开始,依次遍历同运行域中的所有进程的环形队列,首先尝试获得该环形队列的互斥锁,如果能拿到互斥锁,则把该队列上所有的空闲内存移到本进程的链表中,然后分配一个内存并退出;如果队列中没有空闲内存或则是不能拿到互斥锁,则尝试下一个进程的环形队列,直到遍历完所有进程的环形队列;
——如果所有的环形队列都没有空闲内存,则从该运行域的系统内存中获得。
6.根据权利要求4所述的基于非一致性内存访问系统的网络设备设置方法,其特征是所述的释放内存的分步骤如下:
——如果本进程的链表长度小于设定的最大长度,则把要释放的内存插到链表中;否则,
——如果本进程的环形队列还没满,则把空闲队列挂上去,并修改写指针;否则,
——把所述内存释放到系统中。
CN201210585985.XA 2012-12-28 2012-12-28 基于非一致性内存访问系统的网络设备及其设置方法 Active CN104050091B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210585985.XA CN104050091B (zh) 2012-12-28 2012-12-28 基于非一致性内存访问系统的网络设备及其设置方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210585985.XA CN104050091B (zh) 2012-12-28 2012-12-28 基于非一致性内存访问系统的网络设备及其设置方法

Publications (2)

Publication Number Publication Date
CN104050091A CN104050091A (zh) 2014-09-17
CN104050091B true CN104050091B (zh) 2017-06-20

Family

ID=51502975

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210585985.XA Active CN104050091B (zh) 2012-12-28 2012-12-28 基于非一致性内存访问系统的网络设备及其设置方法

Country Status (1)

Country Link
CN (1) CN104050091B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106020974A (zh) * 2016-05-11 2016-10-12 深圳大学 Numa平台的内存缓存方法及系统
CN114024962B (zh) * 2016-09-20 2023-04-18 华为技术有限公司 一种数据传输方法及装置
CN106897122A (zh) * 2017-03-03 2017-06-27 郑州云海信息技术有限公司 一种基于非统一内存访问技术的多jvm部署方法
CN107153526B (zh) * 2017-04-20 2020-08-18 浙江工业大学 一种流式计算环境下的并行数据回流方法
CN107346267A (zh) * 2017-07-13 2017-11-14 郑州云海信息技术有限公司 一种基于numa架构的cpu性能优化方法和装置
CN107368178A (zh) * 2017-08-21 2017-11-21 湖南大学 基于dpdk数据包处理平台的功耗优化方法
CN108021429B (zh) * 2017-12-12 2019-08-06 上海交通大学 一种基于numa架构的虚拟机内存及网卡资源亲和度计算方法
CN109086179B (zh) * 2018-08-20 2022-04-22 郑州云海信息技术有限公司 一种程序异常情况下的处理方法和装置
CN109298888B (zh) * 2018-10-31 2021-08-24 杭州迪普科技股份有限公司 队列的数据存取方法及装置
CN111240845B (zh) * 2020-01-13 2023-10-03 腾讯科技(深圳)有限公司 一种数据处理方法、装置和存储介质
CN114281516A (zh) * 2020-09-27 2022-04-05 华为云计算技术有限公司 一种基于numa属性的资源分配方法及装置
CN112860530B (zh) * 2021-01-27 2022-09-27 中山大学 一种利用非统一存储器访问架构特点提升并行化NumPy计算性能的方法
CN113099490B (zh) * 2021-03-09 2023-03-21 深圳震有科技股份有限公司 一种基于5g通信的数据包传输方法和系统
CN113783973B (zh) * 2021-08-31 2023-09-15 上海弘积信息科技有限公司 一种nat端口分配在多核下对数据流免锁的实现方法
CN116185910B (zh) * 2023-04-25 2023-07-11 北京壁仞科技开发有限公司 访问设备内存、管理设备内存的方法、设备和介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102497322A (zh) * 2011-12-19 2012-06-13 曙光信息产业(北京)有限公司 一种基于分流网卡和多核cpu实现的高速包过滤设备和方法
CN102841815A (zh) * 2012-07-12 2012-12-26 北京航空航天大学 一种numa体系结构自适应的进程分类绑定方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101882119B (zh) * 2009-05-08 2014-05-14 上海炬力集成电路设计有限公司 与非型闪存控制器及其数据传输方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102497322A (zh) * 2011-12-19 2012-06-13 曙光信息产业(北京)有限公司 一种基于分流网卡和多核cpu实现的高速包过滤设备和方法
CN102841815A (zh) * 2012-07-12 2012-12-26 北京航空航天大学 一种numa体系结构自适应的进程分类绑定方法

Also Published As

Publication number Publication date
CN104050091A (zh) 2014-09-17

Similar Documents

Publication Publication Date Title
CN104050091B (zh) 基于非一致性内存访问系统的网络设备及其设置方法
US9935899B2 (en) Server switch integration in a virtualized system
EP3588781B1 (en) Cache monitoring
JP6549663B2 (ja) ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを提供および管理するためのシステムおよび方法
CN103810133B (zh) 用于管理对共享读缓冲器资源的访问的方法和装置
US8316220B2 (en) Operating processors over a network
CN103827842B (zh) 向控制器存储器空间写入消息
CN107967180B (zh) 基于numa虚拟化环境下资源全局亲和度网络优化方法和系统
US10932202B2 (en) Technologies for dynamic multi-core network packet processing distribution
CN102541803A (zh) 数据发送方法和计算机
CN103959261A (zh) 网络处理器中的多内核互联
US7386642B2 (en) IO direct memory access system and method
CN102571580A (zh) 数据接收方法和计算机
CN108702339A (zh) 结构架构中用于基于服务质量进行节流的技术
Kluge et al. Support for the logical execution time model on a time-predictable multicore processor
Jang et al. A low-overhead networking mechanism for virtualized high-performance computing systems
US20190042456A1 (en) Multibank cache with dynamic cache virtualization
CN109964211A (zh) 用于半虚拟化网络设备队列和存储器管理的技术
WO2011059574A2 (en) Directly providing data messages to a protocol layer
US20080098198A1 (en) Information processing device, data transfer method, and information storage medium
US11409553B1 (en) System and method for isolating work within a virtualized scheduler using tag-spaces
Deri et al. Exploiting commodity multi-core systems for network traffic analysis
CN105164651B (zh) 在管理的运行时间环境域中的高速缓存管理
CN117149471B (zh) 通信方法、装置、嵌入式系统、存储介质以及电子设备
US20230333921A1 (en) Input/output (i/o) virtualization acceleration

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100125 Beijing city Chaoyang District Liangmaqiao Road No. 40 building 10 room 1001, twenty-first Century

Patentee after: Beijing Huayao Technology Co., Ltd

Address before: 100125 Beijing city Chaoyang District Liangmaqiao Road No. 40 building 10 room 1001, twenty-first Century

Patentee before: Huayao (China) Technology Co., Ltd.