CN116382861A - Numa架构的服务器网络进程自适应调度方法、系统及介质 - Google Patents

Numa架构的服务器网络进程自适应调度方法、系统及介质 Download PDF

Info

Publication number
CN116382861A
CN116382861A CN202310251036.6A CN202310251036A CN116382861A CN 116382861 A CN116382861 A CN 116382861A CN 202310251036 A CN202310251036 A CN 202310251036A CN 116382861 A CN116382861 A CN 116382861A
Authority
CN
China
Prior art keywords
network
cpu
server
data packet
network card
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
Application number
CN202310251036.6A
Other languages
English (en)
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.)
Kirin Software Co Ltd
Original Assignee
Kirin Software 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 Kirin Software Co Ltd filed Critical Kirin Software Co Ltd
Priority to CN202310251036.6A priority Critical patent/CN116382861A/zh
Publication of CN116382861A publication Critical patent/CN116382861A/zh
Pending legal-status Critical Current

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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Landscapes

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

Abstract

本发明公开了一种NUMA架构的服务器网络进程自适应调度方法、系统及介质,方法包括:在服务器的内核网络协议栈中监控所经过的数据包;根据数据包获取网卡的NUMA节点号及其数据包对应的网络进程pid并保存,根据保存的网卡的NUMA节点号获取本路cpu的掩码,并根据本路cpu的掩码更新网络进程pid的cpu亲和性掩码,使得网络进程pid通过本路cpu上的网卡传输数据。本发明实现各种网络应用场景的网络进程的cpu亲和性自适应功能,有效避免了跨路访存情况的出现,且无需核外针对应用再做额外的绑核操作,凡是所有经过网卡的数据包都会受到监管,适用面极广。

Description

NUMA架构的服务器网络进程自适应调度方法、系统及介质
技术领域
本发明涉及服务器的网络通信技术领域,具体涉及一种NUMA架构的服务器网络进程自适应调度方法、系统及介质。
背景技术
SMP服务器的主要特征是共享,系统中所有资源(CPU、内存、I/O等)都是共享的。也正是由于这种特征,导致了SMP服务器的主要问题,那就是它的扩展能力非常有限。由于SMP在扩展能力上的限制,人们开始探究如何进行有效地扩展从而构建大型系统的技术,NUMA就是这种努力下的结果之一。
利用NUMA技术,可以把几十个CPU(甚至上百个CPU)组合在一个服务器内。在此基础上,多路服务器也应运而生。多路服务器可以按照物理CPU数量分为双路、四路、八路等服务器。双路服务器是指该服务器物理CPU的数量,注意:是物理CPU数量,对应的服务器主板上也会有两个CPU卡槽。双路非双核,双核是指在一颗CPU上安装两个CPU核心,所以双核或者多核CPU看起来还是一颗CPU,而多路CPU,有几路就有几个可以看见的CPU。以国产飞腾平台的腾云S2500双路服务器(下面简称S2500)为例,S2500服务器是arm64架构的双路服务器,采用的是双路互联的逻辑。S2500服务器也是NUMA架构,在NUMA结构中,虽然内存直接attach在CPU上,但是由于内存被平均分配在了各个节点上。只有当CPU访问自身直接attach内存对应的物理地址时,才会有较短的响应时间(Local Access)。而如果需要访问其他CPU attach的内存的数据时,就需要通过inter-connect通道访问,响应时间就相比之前变慢了(Remote Access)。
在多路服务器中,除了有跨NUMA节点访存的可能性,还有跨路访问内存的可能性,跨路访存的开销比跨NUMA节点访存的开销更大,性能更低。以腾云S2500双路服务器为例,S2500分主从双路,各64个处理器核心,8个NUMA节点。所以在S2500双路服务器上一共有128个处理器核心(编号cpu0~cpu127),16个NUMA node(编号node0~node15),其中:主路(cpu0~cpu63,node0~node7);从路(cpu0~cpu63,node0~node7)。在S2500双路服务器上有三种访存方式:访存一:本节点访存,例如:node0的cpu访问node0的内存;访存二:跨节点访存,例如:node0的cpu访问node1的内存;访存三:跨路访存,例如:node0的cpu访问node8的内存;其中访存开销:访存三>访存二>访存一,而跨路访存开销要远远大于其他两种访存方式的开销。在网络数据交互过程中,是会存在一次用户空间与内核空间的内存拷贝过程,其中发送是用户空间到内核空间的拷贝,接收是内核空间到用户空间的数据拷贝。其中内核空间的内存一般都会在驱动设计过程中做NUMA节点判断,然后申请近节点内存,但核外进程在不做绑定的情况下,是有可能跑到远端节点甚至出现跨路调度的可能,此时这个数据拷贝是有可能会发生跨路访存的,不利于高性能网卡的性能发挥。
因此,亟需一种多路服务器网络进程自适应调度的方法,来针对性地解决基于NUMA架构的服务器的高性能网卡性能问题。针对NUMA架构,linux开发的先辈们已经有所考虑,核外有相关的命令可以把相关进程绑定到对应的cpu或者numa节点上,比如:taskset或者numactl命令等,下面就这两个命令做举例说明。比如做iperf测试,网卡位于numa node0上,则绑核命令可以如下:
使用taskset绑核:
服务端:taskset-c 0-7iperf-s
客户端:taskset-c 8-15iperf-c server_ip-i 1-t 1000
使用numactl绑核:
服务端:numactl--cpubind=0--membind=0iperf-s
客户端:numactl--cpubind=1--membind=1iperf-c server_ip-i 1-t 1000
但这种方式对用户而言,是不太友好的,尤其是在那些高并发网络应用场景下,成千上万个网络进程,如果都一一进行绑定,这对用户而言是很难以接受的。因此,如何实现NUMA架构的服务器网络进程自适应调度,已成为一项亟待解决的关键技术问题。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种NUMA架构的服务器网络进程自适应调度方法、系统及介质,实现各种网络应用场景的网络进程的cpu亲和性自适应功能,有效避免了跨路访存情况的出现,且无需核外针对应用再做额外的绑核操作,凡是所有经过网卡的数据包都会受到监管,适用面极广。这个过程对用户是不感知的,是为一种有效的解决方案。
为了解决上述技术问题,本发明采用的技术方案为:
一种NUMA架构的服务器网络进程自适应调度方法,包括:
S101,在服务器的内核网络协议栈中监控所经过的数据包;
S102,根据数据包获取网卡的NUMA节点号及其数据包对应的网络进程pid并保存,根据保存的网卡的NUMA节点号获取本路cpu的掩码,并根据本路cpu的掩码更新网络进程pid的cpu亲和性掩码,使得网络进程pid通过本路cpu上的网卡传输数据。
进一步的,步骤S101中在服务器的内核网络协议栈中监控所经过的数据包是指在服务器的内核网络协议栈中按照指定的频率监控所经过的数据包。
进一步的,所述按照指定的频率监控所经过的数据包是指针对所经过的数据包进行计数,如果计数值等于设定值,则触发一次根据数据包获取网卡的NUMA节点号及其数据包对应的网络进程pid并保存的操作,并将计数值置零以重新计数。
进一步的,步骤S101之前包括初始化调度频率freq为0,步骤S101包括:
S201,判断服务器的内核网络协议栈中是否有传输数据包,若有传输数据包,则跳转步骤S202;否则,结束并退出;
S202,监控服务器的内核网络协议栈中是否有经过数据包,若有经过数据包,则将调度频率freq自增1,然后判断调度频率freq大于等于设定值是否成立,若不成立,则跳转执行步骤S202;否则,跳转执行步骤S102。
进一步的,步骤S202中的设定值可以适当调整,本例中取值为15。
进一步的,步骤S102包括将数据包对应的网络进程pid保存到网卡的设备结构体dev中,延时调度执行工作队列的回调函数irq_work,步骤S102中包括在服务器的内核网络协议栈中初始化设备结构体dev以保存当前的网络进程pid以及工作队列的回调函数irq_work,并给工作队列的回调函数irq_work分配内存并初始化;所述工作队列的回调函数irq_work的执行包括:
S301,根据数据包获取网卡的NUMA节点号node;
S302,判断是否处于中断上下文是否成立,若成立则结束并跳转步骤S101;否则,跳转步骤S303;
S303,判断网卡的设备结构体dev的类型,若为绑定的虚拟网卡设备,则获取绑定的虚拟网卡设备的当前活跃从设备的NUMA节点号node;跳转步骤S304;
S304,判断网卡的NUMA节点号node等于-1是否成立,若成立则结束并跳转步骤S101;否则,跳转步骤S305;
S305,根据网卡的NUMA节点号node确定本路cpu所在的路cpugroup;根据本路cpu所在的路cpugroup初始化生成本路cpu的掩码;
S306,判断生成的本路cpu的掩码、网络进程pid的cpu亲和性掩码cpumask_src两者是否一致,如果两者一致则结束并跳转步骤S101;否则,将生成的本路cpu的掩码赋值给网络进程pid的cpu亲和性掩码cpumask_src,跳转步骤S101。
进一步的,步骤S304中跳转步骤S305之前,还包括判断当前的网络进程pid小于等于1是否成立,若成立则结束并跳转步骤S101;否则,跳转步骤S305。
进一步的,步骤S101和步骤S102中至少其一包含进行服务器平台识别的步骤:获取服务器平台信息,若服务器平台信息与预设的服务器平台信息匹配则继续往下执行,否则结束并退出。
本发明还提出一种NUMA架构的服务器网络进程自适应调度系统,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行任意一项所述NUMA架构的服务器网络进程自适应调度方法。
本发明还提出一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行任意一项所述NUMA架构的服务器网络进程自适应调度方法。
附图说明
图1为本发明实施例一的简要流程图。
图2为本发明实施例一的详细流程图。
图3为本发明实施例二的多路服务器网络进程自适应数据流路线图。
具体实施方式
在介绍本发明的具体实施例之前,现对于相关缩略语和关键术语定义进行说明:
NUMA架构:NUMA即非一致存储访问,NUMA架构专注于解决服务器扩展能力的限制,其基本特征在于一个服务器具有多个CPU模块(也称为NUMA结点),而每个结点则由多个CPU组成,并且NUMA结点具有独立的本地内存、I/O等资源,结点之间通过互联模块进行信息交互。每个CPU可以快速访问其所属NUMA结点的内存等资源(本地访问),并通过互联模块访问其他结点的内存等资源(远地访问),显然,本地内存的访问速度将远高于远地内存的访问速度。正因为这个原因,在开发中,为更好地发挥系统性能,需要尽可能减少不同NUMA结点之间的信息交互。
网卡中断:在Linux系统中,对于网卡的I/O请求是通过中断系统来实现的。当有网络I/O请求时,由网卡向CPU发送中断信号,CPU接收到中断后,会马上向操作系统反映此信号的到来,然后由操作系统执行中断相应程序来处理网卡的网络I/O请求。
多队列网卡:多队列网卡技术最初是用于解决网络I/O服务质量问题的。但随着网络带宽的不断提升和网卡性能的不断提高,单核CPU已经不能完全满足网卡的需求。而通过多队列网卡驱动的支持,可以将网卡I/O划分为多个队列,并将各个队列通过中断绑定到不同的CPU核上,以此满足网卡的需求。
SMP(Symmetric Multi Processing):对称多处理系统内有许多紧耦合多处理器,在这样的系统中,所有的CPU共享全部资源,如总线,内存和I/O系统等,操作系统或管理数据库的复本只有一个,这种系统有一个最大的特点就是共享所有资源。多个CPU之间没有区别,平等地访问内存、外设、一个操作系统。
实施例一
软件性能优化的实质就是最大限度地发挥硬件性能。所以我们现在要关注的点是如何尽量避免跨路访存的出现,在网卡优化方面,需要实现网络进程自动亲和于本路cpu,尽量申请使用本路内存,即:实现网络进程自适应亲和调度。为了避免跨路访存的出现,实现NUMA架构的服务器网络进程自适应调度,本实施例提出以下构思:
在服务器的内核网络协议栈按照一定的频率监控所有经过的数据包skb,这里没有监控每个数据包,是为了防止过高频率设置带来资源开销,通过skb获取网卡的NUMAnode(节点号),并获取当前的进程pid,分别进行保存,以延时工作队列的方式延时调度,根据之前保存的网卡NUMA node获取本路cpu的掩码,来设置pid的cpu亲和性,不能实时设置的原因是网卡收发数据包是处于中断上下文中,中断上下文是不允许休眠或者调度的,不能schedule(附表),所以只能以工作队列的方式延时调度设置。
基于以上构思,本实施例提出一种NUMA架构的服务器网络进程自适应调度方法,如图1所示,包括以下步骤:
S101,在服务器的内核网络协议栈中监控所经过的数据包;
S102,根据数据包获取网卡的NUMA节点号及其数据包对应的网络进程pid并保存,根据保存的网卡的NUMA节点号获取本路cpu的掩码,并根据本路cpu的掩码更新网络进程pid的cpu亲和性掩码,使得网络进程pid通过本路cpu上的网卡传输数据。
通过上述步骤,本实施例实现了各种网络应用场景的网络进程的cpu亲和性自适应功能,有效避免了跨路访存情况的出现,且无需核外针对应用再做额外的绑核操作,凡是所有经过网卡的数据包都会受到监管,适用面极广。
本实施例的步骤S101中,在服务器的内核网络协议栈中监控所经过的数据包是指在服务器的内核网络协议栈中按照指定的频率监控所经过的数据包,以防止过高频率设置带来资源开销。
本实施例中,所述按照指定的频率监控所经过的数据包是指针对所经过的数据包进行计数,如果计数值等于设定值,则触发一次根据数据包获取网卡的NUMA节点号及其数据包对应的网络进程pid并保存的操作,并将计数值置零以重新计数。由于多路服务器的跨路开销主要是会对高性能网卡(比如25G,40G,100G等)的性能发挥带来瓶颈,数据流较大,所以保持计数值大于或者等于设定值才继续下一步的操作是为了避免每个数据包都走一遍调度流程造成资源损耗浪费,资源损耗比较少。
如图2所示,本实施例的步骤S101之前包括初始化调度频率freq为0,步骤S101包括:
S201,判断服务器的内核网络协议栈中是否有传输数据包skb,若有传输数据包skb,则跳转步骤S202;否则,结束并退出;
S202,监控服务器的内核网络协议栈中是否有经过数据包skb,若有经过数据包skb,则将调度频率freq自增1,然后判断调度频率freq大于等于设定值是否成立,若不成立,则跳转执行步骤S202;否则,跳转执行步骤S102。
本实施例的步骤S202中的设定值可以适当调整,本例中取值为15,按照16个数据包做一次调度已经可以满足大部分场景需求,且资源损耗比较少。
如图2所示,本实施例的步骤S102包括将数据包对应的网络进程pid保存到网卡的设备结构体dev中,延时调度执行工作队列的回调函数irq_work,采用延时工作队列是因为数据包收发处于网卡中断上下文中,在中断上下文中是不允许调度或者睡眠的,所以不能用实时工作队列,采用延时工作队列可以等中断上下文完成后再调度,此外步骤S102中包括在服务器的内核网络协议栈中初始化设备结构体dev以保存当前的网络进程pid以及工作队列的回调函数irq_work,并给工作队列的回调函数irq_work分配内存并初始化;本实施例中网络进程pid和工作队列的回调函数irq_work都是在设备结构体dev新添加的两个成员.同时在注册函数中有申请分配内存的操作就要有释放内存的操作,否则会有内存泄露的风险。
如图2所示,本实施例的工作队列的回调函数irq_work的执行包括:
S301,根据数据包获取网卡的NUMA节点号node;
S302,判断是否处于中断上下文是否成立,若成立则结束并跳转步骤S101;否则,跳转步骤S303;
S303,判断网卡的设备结构体dev的类型,若为绑定的虚拟网卡设备(bonding设备),则获取绑定的虚拟网卡设备的当前活跃从设备的NUMA节点号node;跳转步骤S304;
S304,判断网卡的NUMA节点号node等于-1是否成立,若成立则结束并跳转步骤S101;否则,跳转步骤S305;
S305,根据网卡的NUMA节点号node确定本路cpu所在的路cpugroup;根据本路cpu所在的路cpugroup初始化生成本路cpu的掩码cpumask;
S306,判断生成的本路cpu的掩码cpumask、网络进程pid的cpu亲和性掩码cpumask_src两者是否一致,如果两者一致则结束并跳转步骤S101;否则,将生成的本路cpu的掩码cpumask赋值给网络进程pid的cpu亲和性掩码cpumask_src,跳转步骤S101。
如图2所示,本实施例的步骤S304中跳转步骤S305之前,还包括判断当前的网络进程pid小于等于1是否成立,若成立则结束并跳转步骤S101;否则,跳转步骤S305。判断网络进程pid是否大于1是基于0号进程和1号进程分别是idle进程和init进程,万一网络进程pid传导有误,不至于造成对这两个进程的干扰。
本实施例的步骤S303中判断网卡的设备结构体dev是否是bonding设备,是因为bonding的master设备(主设备)是虚拟设备,是没有硬件NUMA节点号node属性的,直接从bonding的master设备(主设备)去读取NUMA节点号node,结果只能反回NUMA_NO_NODE(值为-1),所以只能从slave(从设备)去读取NUMA节点号node。
本实施例的步骤S306中比较本路cpu的掩码cpumask是否有变化,有变化才去设置网络进程pid的cpu亲和性掩码cpumask_src,这样做也是为了减少资源消耗,因为整个流程前面部分就是代码逻辑,真正的资源消耗是集中在后面这个设置cpumask部分,因为这个接口里面有schedule()函数。
本实施例中,步骤S101和步骤S102中至少其一包含进行服务器平台识别的步骤:获取服务器平台信息,若服务器平台信息与预设的服务器平台信息匹配则继续往下执行,否则结束并退出。
本实施例还提出一种NUMA架构的服务器网络进程自适应调度系统,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行本实施例所述NUMA架构的服务器网络进程自适应调度方法。
本实施例还提出一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行本实施例所述NUMA架构的服务器网络进程自适应调度方法。
综上所述,本实施例应用于内核网络协议栈,对用户层不感知,但已经实现了核外所有网络进程的cpu亲和性设置,无需用户再做绑核操作,极大地提升了用户体验感。同时本发明对所有经过网卡的数据包进行了监管,实时地将相关的核外网络进程进行了cpu亲和性设置,再配合高性能网卡驱动的numa属性设定,有效地实现了内核层与用户层内存拷贝的近numa节点传输,避免了跨路访存情况的出现,最大限度地发挥了硬件的性能。
实施例二
本实施例将实施例一的方法应用于飞腾S2500多路服务器,从而实现基于飞腾平台S2500服务器网络进程自适应调度的方法,该方法对于双路服务器,4路服务器,8路服务器均可适用。
本实施例的方法包括以下步骤:
S1:在BIOS中确认NUMA功能已设置为enable开启状态后,执行初始化准备工作,在netdev注册阶段调用,包括:
(1)判断是否是S2500平台,是则继续以下步骤(2);
(2)在dev结构体预留字段保存当前进程pid和工作队列的回调函数irq_work;
(3)给工作队列的回调函数irq_work分配内存并初始化;
(4)调度频率计数器freq清零;
S2:基于实施例一的步骤S101监控数据包skb,包括:
(1)判断是否是S2500平台,是则继续以下步骤(2);
(2)判断是否有数据包skb来临,没有直接结束;
(3)有数据包,计数器freq加1;
(4)判断计数器freq大小,小于15,跳转到步骤(2);
(5)freq大于或者等于15,保存当前进程pid,freq清零,调度延时工作队列irq_work;
S3:基于实施例二的步骤S102延时调度执行工作队列的回调函数irq_work,包括:
(1)根据数据包skb获取网卡所在numa节点号node;
(2)判断是否处于中断上下文,是就跳转到S2的步骤(2),不是就继续;
(3)判断pid是否小于或者等于1,是就跳转到S2的步骤(2),不是就继续;
(4)判断dev是否是bonding设备,是就根据当前活跃slave设备重新获取numanode,不是就继续;
(5)判断node是不是等于-1,是就跳转到S2的步骤(2),不是就继续;
(6)获取当前网卡处于哪一路,即根据当前网卡所在numa节点号node得到本路cpu所在的路,并赋值给cpu_group;
(7)根据cpu_group初始化生成本路cpu的掩码cpumask;
(8)比较本路cpu的掩码cpumask与当前进程pid原有cpu亲和性掩码cpumask_src是否不一样,如果不一样就将当前进程pid的cpu亲和性掩码cpumask_src的值设置为本路cpu的掩码cpumask的值,如果一样就跳转到S2的步骤(2)。
S2500双路服务器应用本实施例的方法后,其网络进程状态如图3所示,以下进行具体说明:
暂定左侧的第一路为主路,对应处理器cpu0(真实编号应该是0~63)和内存mem0,
暂定右侧的第二路为从路,对应处理器cpu1(真实编号应该是64~127)和内存mem1。
进程A通过主路(cpu0,mem0)上的网卡传输数据,数据流路线为“A”线条,由cpu0处理,访问mem0;
进程B通过从路(cpu1,mem1)上的网卡传输数据,数据流路线为“B”线条,由cpu1处理,访问mem1;
这样下来,所有过主路网卡的数据流都使用主路内存mem0,对应进程都亲和于主路cpu0,走“A”数据流线路;所有过从路网卡的数据流都使用从路内存mem1,对应进程都亲和于从路cpu1,走“B”数据流线路;避免了跨路访存,实现了核外网络进程的自适应,无需用户空间对每个进程都使用taskset或者numactl等命令进行绑核。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种NUMA架构的服务器网络进程自适应调度方法,其特征在于,包括:
S101,在服务器的内核网络协议栈中监控所经过的数据包;
S102,根据数据包获取网卡的NUMA节点号及其数据包对应的网络进程pid并保存,根据保存的网卡的NUMA节点号获取本路cpu的掩码,并根据本路cpu的掩码更新网络进程pid的cpu亲和性掩码,使得网络进程pid通过本路cpu上的网卡传输数据。
2.根据权利要求1所述的NUMA架构的服务器网络进程自适应调度方法,其特征在于,步骤S101中在服务器的内核网络协议栈中监控所经过的数据包是指在服务器的内核网络协议栈中按照指定的频率监控所经过的数据包。
3.根据权利要求1所述的NUMA架构的服务器网络进程自适应调度方法,其特征在于,所述按照指定的频率监控所经过的数据包是指针对所经过的数据包进行计数,如果计数值等于设定值,则触发一次根据数据包获取网卡的NUMA节点号及其数据包对应的网络进程pid并保存的操作,并将计数值置零以重新计数。
4.根据权利要求3所述的NUMA架构的服务器网络进程自适应调度方法,其特征在于,步骤S101之前包括初始化调度频率freq为0,步骤S101包括:
S201,判断服务器的内核网络协议栈中是否有传输数据包,若有传输数据包,则跳转步骤S202;否则,结束并退出;
S202,监控服务器的内核网络协议栈中是否有经过数据包,若有经过数据包,则将调度频率freq自增1,然后判断调度频率freq大于等于设定值是否成立,若不成立,则跳转执行步骤S202;否则,跳转执行步骤S102。
5.根据权利要求4所述的NUMA架构的服务器网络进程自适应调度方法,其特征在于,步骤S202中的设定值取值为15。
6.根据权利要求1所述的NUMA架构的服务器网络进程自适应调度方法,其特征在于,步骤S102包括将数据包对应的网络进程pid保存到网卡的设备结构体dev中,延时调度执行工作队列的回调函数irq_work,步骤S102中包括在服务器的内核网络协议栈中初始化设备结构体dev以保存当前的网络进程pid以及工作队列的回调函数irq_work,并给工作队列的回调函数irq_work分配内存并初始化;所述工作队列的回调函数irq_work的执行包括:
S301,根据数据包获取网卡的NUMA节点号node;
S302,判断是否处于中断上下文是否成立,若成立则结束并跳转步骤S101;否则,跳转步骤S303;
S303,判断网卡的设备结构体dev的类型,若为绑定的虚拟网卡设备,则获取绑定的虚拟网卡设备的当前活跃从设备的NUMA节点号node;跳转步骤S304;
S304,判断网卡的NUMA节点号node等于-1是否成立,若成立则结束并跳转步骤S101;否则,跳转步骤S305;
S305,根据网卡的NUMA节点号node确定本路cpu所在的路cpugroup;根据本路cpu所在的路cpugroup初始化生成本路cpu的掩码;
S306,判断生成的本路cpu的掩码、网络进程pid的cpu亲和性掩码cpumask_src两者是否一致,如果两者一致则结束并跳转步骤S101;否则,将生成的本路cpu的掩码赋值给网络进程pid的cpu亲和性掩码cpumask_src,跳转步骤S101。
7.根据权利要求6所述的NUMA架构的服务器网络进程自适应调度方法,其特征在于,步骤S304中跳转步骤S305之前,还包括判断当前的网络进程pid小于等于1是否成立,若成立则结束并跳转步骤S101;否则,跳转步骤S305。
8.根据权利要求1所述的NUMA架构的服务器网络进程自适应调度方法,其特征在于,步骤S101和步骤S102中至少其一包含进行服务器平台识别的步骤:获取服务器平台信息,若服务器平台信息与预设的服务器平台信息匹配则继续往下执行,否则结束并退出。
9.一种NUMA架构的服务器网络进程自适应调度系统,包括相互连接的微处理器和存储器,其特征在于,所述微处理器被编程或配置以执行权利要求1~8中任意一项所述NUMA架构的服务器网络进程自适应调度方法。
10.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其特征在于,所述计算机程序用于被微处理器编程或配置以执行权利要求1~8中任意一项所述NUMA架构的服务器网络进程自适应调度方法。
CN202310251036.6A 2023-03-15 2023-03-15 Numa架构的服务器网络进程自适应调度方法、系统及介质 Pending CN116382861A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310251036.6A CN116382861A (zh) 2023-03-15 2023-03-15 Numa架构的服务器网络进程自适应调度方法、系统及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310251036.6A CN116382861A (zh) 2023-03-15 2023-03-15 Numa架构的服务器网络进程自适应调度方法、系统及介质

Publications (1)

Publication Number Publication Date
CN116382861A true CN116382861A (zh) 2023-07-04

Family

ID=86979804

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310251036.6A Pending CN116382861A (zh) 2023-03-15 2023-03-15 Numa架构的服务器网络进程自适应调度方法、系统及介质

Country Status (1)

Country Link
CN (1) CN116382861A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118012517A (zh) * 2024-04-10 2024-05-10 麒麟软件有限公司 基于飞腾平台多路服务器的网卡中断配置方法、装置及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118012517A (zh) * 2024-04-10 2024-05-10 麒麟软件有限公司 基于飞腾平台多路服务器的网卡中断配置方法、装置及存储介质
CN118012517B (zh) * 2024-04-10 2024-06-28 麒麟软件有限公司 基于飞腾平台多路服务器的网卡中断配置方法、装置及存储介质

Similar Documents

Publication Publication Date Title
JP6294586B2 (ja) 命令スレッドを組み合わせた実行の管理システムおよび管理方法
US6895585B2 (en) Method of mixed workload high performance scheduling
JP5366552B2 (ja) 集中特化したマルチタスク及びマルチフロー処理をリアルタイム実行する手法及びシステム
US20090125907A1 (en) System and method for thread handling in multithreaded parallel computing of nested threads
US8307053B1 (en) Partitioned packet processing in a multiprocessor environment
US20060206891A1 (en) System and method of maintaining strict hardware affinity in a virtualized logical partitioned (LPAR) multiprocessor system while allowing one processor to donate excess processor cycles to other partitions when warranted
CN109564528B (zh) 分布式计算中计算资源分配的系统和方法
CN104714846A (zh) 资源处理方法、操作系统及设备
CN109445944A (zh) 一种基于dpdk的网络数据采集处理系统及其方法
EP3489815B1 (en) Method and system for low latency data management
US9507633B2 (en) Scheduling method and system
US20110107344A1 (en) Multi-core apparatus and load balancing method thereof
WO2019056771A1 (zh) 分布式存储系统升级管理的方法、装置及分布式存储系统
US20140068165A1 (en) Splitting a real-time thread between the user and kernel space
CN107436798A (zh) 一种基于numa节点的进程访问方法及装置
CN116382861A (zh) Numa架构的服务器网络进程自适应调度方法、系统及介质
CN114721818A (zh) 一种基于Kubernetes集群的GPU分时共享方法和系统
US6581089B1 (en) Parallel processing apparatus and method of the same
CN116578416B (zh) 一种基于gpu虚拟化的信号级仿真加速方法
CN117370046A (zh) 进程间通信方法、系统、设备和存储介质
CN111459871A (zh) 一种基于fpga异构计算的区块链加速系统及方法
CN115618966A (zh) 用于训练机器学习模型的方法、装置、设备和介质
US20130247065A1 (en) Apparatus and method for executing multi-operating systems
CN114281529A (zh) 分布式虚拟化的客户操作系统调度优化方法、系统及终端
CN113076180B (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