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

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

【技术实现步骤摘要】
基于非一致性内存访问系统的网络设备及其设置方法本专利技术涉及网络数据传输领域,特别涉及一种基于非一致性内存访问系统的网络设备及其设置方法。
技术介绍
NUMA(NonUniformMemoryAccessAchitecture,非一致性内存访问或者非统一内存架构)是一种用于多处理器计算机的内存设计方案。在NUMA系统中,内存访问时间取决于处理器与内存相对位置。也就是说,处理器访问它自己的本地存储器的速度要比访问非本地存储器的速度要块。英特尔公司的最新处理器,比如代号为Nehalem,SandyBridge和ivybridge等至强处理器,都使用的是这种NUMA架构。这些系统中的一个最大的变化是在处理器中整合了内存控制器,而不像以前的处理器,把内存控制器放在北桥芯片组中。因此,当一个处理器要访问另一个处理器所带的内存时,首先要通过处理器间的链路才能访问到对方的内存,这就比访问本地内存所花费的时间多。英特尔公司的另外一项技术:QuickPathinterconnect(QPI)互联技术,来连接处理器与处理器,以及处理器和外部I/O的连接。这是一种点对点的连接方式,替代了以前的总线共享方式。这种技术虽然能减轻访问远端节点的耗费,但并不能完全去掉,因此从本质上说,访问本地和远程内存的差异使得这些多核处理器系统成为了符合NUMA架构的系统。另外,代号为sandybridge处理器还把PCI-expressI/O(新一代的总线接口)子系统集成到芯片中,并与芯片中的其他部分,如:处理器核心,处理器的高速缓存,集成的内存控制器,以及QPI代理,通过一个32位的双向环直接相连。这种连接方式大大减少了PCI-express设备的访问延迟。根据英特尔公司的测量的数据,读取本地的数据会减少32%延迟。除此之外,英特尔的DDIO技术(DataDirectI/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节点以保证进程和网卡使用离自己较近的内存。进一步地,所述的网卡和与其相连的、内嵌于处理器的PCIeI/O控制器所在的运行域绑定,由该运行域的进程来处理所述网卡的数据包。基于非一致性内存访问系统的网络设备设置方法,包括以下步骤:步骤1,根据主板提供的信息,确定系统的NUMA节点数、每个节点的处理器核心、以及每个节点所带的物理内存地址的范围,并记录这些信息以供内存分配的时候使用;步骤2,初始化网卡:根据PCI总线探测的结果,获得所述网卡属于哪个主桥(HostBridge,主板上离CPU最近的芯片)下,找到该主桥对应的处理器,从而确定它所在的运行域;步骤3,启动进程:根据配置把进程绑定到相应的处理器核心上,进程初始化全局变量。进一步地,上述步骤3所述的进程,它们的主函数操作包括以下分步骤:——通过查询的方式,看本进程绑定的网卡队列中是否接收到了网络数据包,如果有,则从该队列中拿出来,然后根据固定的算法,把网络数据包放在某个进程的接收队列中,等待它做网络协议层方面的处理,算法根据网络协议有所不同;——上面的操作会使网卡的接收队列空出新的空间,所以需要用新的空闲内存来填,进程从网卡所属的运行域中获得内存,并把内存地址写到网卡的接收队列中;——查询网卡发送队列是否有数据包已经发出去了,有的话,则释放相应的内存;——如果进程的发送队列中有数据包要发送,则把数据包发到网卡的发送队列中;——进程从自己的接收队列中获得数据包,并对其进行网络协议层方面的处理。如果有数据包需要发出去,先放在进程的发送队列中,进程发送队列的数据包通过所述网卡发送队列发送出去。进一步地,上述步骤1中所述的内存分配包括普通内存分配和网络内存分配,所述普通内存分配包括以下分步骤:——先确定从哪个运行域中分配内存,如果输入参数中没指定,则根据当前进程所在的运行域中分配内存,否则,从指定的运行域中分配;——如果该运行域中有内存,则从系统的该运行域中分配所需内存,否则,——如果远端域中有内存,则从其他运行域中获得,否则,——分配失败。进一步地,所述的网络内存为每个并行处理的进程配置网络内存缓存模块,以便于高速处理网络数据包。进一步地,所述的为每个进程配置网络内存缓存模块分为链表和环形队列两级:第一级是个链表,包括有头指针,链表长度和这个链表允许的最大长度等本文档来自技高网
...
基于非一致性内存访问系统的网络设备及其设置方法

【技术保护点】
一种基于非一致性内存访问系统的网络设备,包括多核计算机处理器、处理器内存、PCIeI/O控制器、n(n≥1)个进程模块以及网卡,其特征是n个进程模块并发处理不同网络协议的数据包,每个进程模块绑定在所述多核处理器的一个核心或者同一个处理器的m(m≥1)个核心上,并同时与所述多核处理器的PCIeI/O控制器绑定,以形成由多核处理器、处理器内存及PCIeI/O控制器构成的运行域。

【技术特征摘要】
1.一种基于非一致性内存访问系统的网络设备设置方法,包括以下步骤:步骤1,根据主板提供的信息,确定系统的NUMA节点数、每个节点的处理器核心、以及每个节点所带的物理内存地址的范围,并记录这些信息以供内存分配的时候使用;步骤2,初始化网卡:根据PCI总线探测的结果,获得所述网卡属于哪个主桥下,找到该主桥对应的处理器,从而确定它所在的运行域;步骤3,启动进程:根据配置把进程绑定到相应的处理器核心上,进程初始化全局变量,其特征是所述的进程,其主函数操作包括以下分步骤:——通过查询的方式,看自己绑定的网卡队列中是否接收到了网络数据包,如果有,则从该队列中拿出来,然后根据固定的算法,把网络数据包放在某个进程的接收队列中,等待它做网络协议层方面的处理,算法根据网络协议有所不同;——上面的操作会使网卡的接收队列空出新的空间,所以需要用新的空闲内存来填,进程从网卡所属的运行域中获得内存,并把内存地址写到网卡的接收队列中;——查询网卡发送队列是否有数据包已经发出去了,有的话,则释放相应的内存;——如果进程的发送队列中有数据包要发送,则把数据包发到网卡的发送队列中;——进程从自己的接收队列中获得数据包,并对其进行网络协议层方面的处理,如果有数据包需要发出去,先放在进程的发送队列中,进程发送队列的数据包通过所述网卡发送队列发送出去。2.根据权利要求1所述的基于非一致性内存访问系统的网络设备设置方法,其特征是上述步骤1中所述的内存分配包括普通内存分配和网络内存分配,所述普通内存分配包括以下分步骤:——先确定从哪个运行域中分配内存,如果输入参数中没指定,则根据当前进程所在的运行域中分配内存,否则,从指定的运行域中分配;——如果该运行域中有内存,则从系统的该运行域中分配所需内存,否则,——如果远程运行域中有内存,则从其他运行域中获得,否则,——分配失败。3.根据权利要求2所述的基于非一致性内存访问系统的网络设备设置方法,其特征是所述的网络内存为每个并行处理的进程配置网络内存缓存模块,以便于高速处理网络...

【专利技术属性】
技术研发人员:刘剑波
申请(专利权)人:华耀中国科技有限公司
类型:发明
国别省市:北京;11

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

1