CN116126525A - 一种numa感知的负载均衡调度方法、系统及介质 - Google Patents
一种numa感知的负载均衡调度方法、系统及介质 Download PDFInfo
- Publication number
- CN116126525A CN116126525A CN202211696876.5A CN202211696876A CN116126525A CN 116126525 A CN116126525 A CN 116126525A CN 202211696876 A CN202211696876 A CN 202211696876A CN 116126525 A CN116126525 A CN 116126525A
- Authority
- CN
- China
- Prior art keywords
- numa
- node
- cross
- load balancing
- memory
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 189
- 230000015654 memory Effects 0.000 title claims abstract description 149
- 230000008569 process Effects 0.000 claims abstract description 156
- 238000013508 migration Methods 0.000 claims abstract description 82
- 230000005012 migration Effects 0.000 claims abstract description 82
- 230000006870 function Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 12
- 238000011156 evaluation Methods 0.000 claims description 3
- 230000008447 perception Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 4
- 240000002044 Rhizophora apiculata Species 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种NUMA感知的负载均衡调度方法、系统及介质,本发明NUMA感知的负载均衡调度方法包括针对各个NUMA节点中的进程评估跨节点迁移损耗;在进行NUMA节点间负载均衡时,针对待迁移的NUMA节点中的进程选择跨节点迁移损耗最小的进程并将其迁移到其他NUMA节点。本发明NUMA感知的负载均衡调度方法通过在NUMA节点间负载均衡时,对进程在NUMA节点上的资源使用情况感知,优先迁移跨节点迁移损耗最小的进程,就能最大程度上防止NUMA节点间负载均衡时带来的内存迁移操作开销,降低互联总线的负载,从而提升整个系统的综合性能。
Description
技术领域
本发明涉及NUMA架构的服务器调度技术领域,具体涉及一种NUMA感知的负载均衡调度方法、系统及介质。
背景技术
NUMA(Non Uniform Memory Access,非统一内存访问)是一种用于多处理器的设计,其内存访问时间取决于处理器的内存位置。NUMA体系结构中多了node(节点)的概念,各个node均有自己的内部CPU,总线、内存和I/O槽口等,同时各个node的自己的内部CPU还可以通过互联总线来访问其他node内的内存和I/O槽口,因此每个CPU都可以访问整个系统的内存,但是在NUMA下,处理器访问它自己的本地内存(即CPU与内存位于同一node里)要比访问非本地内存(也叫远程内存,即CPU与内存不是位于同一NUMA节点,即node里)在速度与延时方面要快很多,这也是非一致内存访问NUMA的由来。由于这个特点,为了更好地发挥系统性能,开发应用程序时需要尽量减少不同node之间的信息交互。互联总线是用于NUMA架构CPU中各个node节点间互联互通的物理实现,一个node中的CPU可以通过互联总线访问其它node的内部资源(如内存等),互联总线的带宽与延时是评价NUMA架构CPU优劣的重要指标。
近些年来,伴随着国产服务器CPU技术的快速发展,国产厂商先后发布了多款以NUMA架构为主的服务器CPU。对软件设计提出了更高的要求,要求软件尽最大努力避免出现跨node访问,减少对互联总线的操作。
Linux内核的cfs调度器为了减少进程管理导致的竞态问题,在每个CPU上都分配了一个任务队列。但是这样做也引入了一个新问题,系统运行时可能会出现有的CPU很忙,有的CPU很闲,甚至最极端的情况下,一个CPU的就绪队列拥有非常多的进程,而其他CPU的就绪队列为空的情况,为了解决这个问题,Linux内核实现了CPU就绪队列之间的负载均衡。负载均衡就是要发挥系统多核CPU的性能,防止系统中某些CPU一直很忙,大量进程在排队等待运行,而某些CPU却是处于空闲状态,也就是要将进程从负载较重的CPU上迁移到负载较轻的CPU上去运行。但是进程迁移是有代价的,比如对处于两个不同物理CPU的进程之间进行负载平衡的话,将会使得高速缓存失效,造成运行效率的下降,更进一步,对于NUMA系统,在不同node之间的迁移将带来更大的损失,因为不仅有高速缓存失效,还会在进程迁移后进行内存迁移等操作。但是,传统的进程迁移、负载均衡技术中,并没有一种实现方法是基于NUMA感知的负载均衡调度方法。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种NUMA感知的负载均衡调度方法、系统及介质,本发明通过在NUMA节点间负载均衡时对进程在NUMA节点上的资源使用情况感知,优先迁移跨节点迁移损耗最小的进程,就能最大程度上防止NUMA节点间负载均衡时带来的内存迁移操作开销,降低互联总线的负载,从而提升整个系统的综合性能。
为了解决上述技术问题,本发明采用的技术方案为:
一种NUMA感知的负载均衡调度方法,包括:
S101,针对各个NUMA节点中的进程评估跨节点迁移损耗;
S102,在进行NUMA节点间负载均衡时,针对待迁移的NUMA节点中的进程选择跨节点迁移损耗最小的进程并将其迁移到其他NUMA节点。
可选地,步骤S101中针对各个NUMA节点中的进程评估跨节点迁移损耗时,所述跨节点迁移损耗与进程的远程内存消耗、CPU负载、本地内存消耗三者相关,且所述跨节点迁移损耗与进程的远程内存消耗和CPU负载两者负相关,所述跨节点迁移损耗与进程的本地内存消耗正相关。
可选地,所述进程的远程内存消耗、本地内存消耗为根据进程申请的内存所在NUMA节点确定,进程申请的内存在本NUMA节点的内存部分为本地内存消耗,进程申请的内存在本NUMA节点以外的内存部分为远程内存消耗。
可选地,所述进程的远程内存消耗、本地内存消耗为根据进程的地址空间遍历计算得到,且每遍历地址空间的一个内存页则通过page_to_nid函数调用得到内存的NUMA节点信息,将本NUMA节点的内存页作为该进程的本地内存消耗,将本NUMA节点以外的内存页作为该进程的远程内存消耗。
可选地,所述进程的CPU负载为通过进程的量化负载load_avg得到。
可选地,步骤S101中评估跨节点迁移损耗的函数表达式为:
migrate_loss=W0*local_mm-W1*remote_mm-W2*load_avg
上式中,migrate_loss为跨节点迁移损耗,W0~W2为权重参数,local_mm为本地内存消耗,remote_mm为远程内存消耗,load_avg为CPU负载。
可选地,步骤S101中还包括采用红黑树记录NUMA节点中进入就绪队列的进程及其跨节点迁移损耗:在调度器的运行队列cfs_rq中增加一个结构体变量migrate_tasks,并将其初始化为RB_ROOT以表示为就绪队列红黑树的根节点;在进程结构体task_struct中增加一个结构体变量rb_task以表示红黑树的节点,用于将进程插入就绪队列红黑树的根节点,以及一个结构体变量migrate_loss以表示进程的评估跨节点迁移损耗,用于作为插入就绪队列红黑树的键值;在内存结构体mm_struct中增加变量local_mm与remote_mm,其中local_mm为本地内存消耗,remote_mm为远程内存消耗;在任意当前的进程current进入就绪队列时进行评估跨节点迁移损耗以获得跨节点迁移损耗migrate_loss,以跨节点迁移损耗migrate_loss为红黑树键值将当前的进程current插入就绪队列的红黑树中。
可选地,步骤S102中针对待迁移的NUMA节点中的进程选择跨节点迁移损耗最小的进程并将其迁移到其他NUMA节点之后,还包括将跨节点迁移损耗最小的进程从就绪队列的红黑树中删除。
此外,本发明还提供一种NUMA感知的负载均衡调度系统,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述NUMA感知的负载均衡调度方法。
此外,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行所述NUMA感知的负载均衡调度方法。
和现有技术相比,本发明主要具有下述优点:本发明方法包括针对各个NUMA节点中的进程评估跨节点迁移损耗;在进行NUMA节点间负载均衡时,针对待迁移的NUMA节点中的进程选择跨节点迁移损耗最小的进程并将其迁移到其他NUMA节点,本发明通过在NUMA节点间负载均衡时,对进程在NUMA节点上的资源使用情况感知,优先迁移跨节点迁移损耗最小的进程,就能最大程度上防止NUMA节点间负载均衡时带来的内存迁移操作开销,降低互联总线的负载,从而提升整个系统的综合性能。
附图说明
图1为本发明目的的分析实例。
图2为本发明实施例方法的基本流程示意图。
图3为本发明实施例使用红黑树的流程示意图。
图4为本发明实施例进程进入就绪队列时插入红黑树的流程图。
具体实施方式
实施例一:
当一个进程跨节点迁移到另一个NUMA节点后,还会对这个进程的内存进行迁移,内存也会通过互联总线从一个NUMA节点迁移到另一个NUMA节点中。为了更好地表述本发明所要解决的问题,以如图1所示为例,其中node0节点和node1节点为两个不同的NUMA节点。在某一时刻,node1节点的CPU全部处于空闲状态了,而node0节点上的负载非常重,需要跨node迁移一部分任务到node1上面运行,此时:如果迁移高内存低负载进程a到node1上,只能对node0降低5%的负载,随后却有20%的内存需要通过互联总线迁移到node1上面去,但是:如果迁移低内存高负载进程b到node1上,能对node0降低30%的负载,且只有3%的内存需要通过互联总线迁移到node1上面去,而:如果迁移有跨node远程内存消耗的进程c到node1去,不仅降低了node0的负载,而且不需要迁移内存,同时消除了进程c的跨node内存访问。因此,本发明能够实现系统在NUMA节点间负载均衡时,对进程在NUMA节点上的资源使用情况感知,优先迁移跨节点迁移损耗最小的进程,就能最大程度上防止NUMA节点间负载均衡时带来的内存迁移操作开销,降低互联总线的负载,从而提升整个系统的综合性能。
如图2所示,本实施例NUMA感知的负载均衡调度方法包括:
S101,针对各个NUMA节点中的进程评估跨节点迁移损耗;
S102,在进行NUMA节点间负载均衡时,针对待迁移的NUMA节点中的进程选择跨节点迁移损耗最小的进程并将其迁移到其他NUMA节点。
经过测试发现,跨节点迁移损耗与进程的远程内存消耗、CPU负载、本地内存消耗三者相关,因此本实施例步骤S101中针对各个NUMA节点中的进程评估跨节点迁移损耗时,所述跨节点迁移损耗与进程的远程内存消耗、CPU负载、本地内存消耗三者相关,且所述跨节点迁移损耗与进程的远程内存消耗和CPU负载两者负相关,所述跨节点迁移损耗与进程的本地内存消耗正相关。因此可重点优先迁移有跨NUMA节点远程内存消耗、低内存高负载的进程,减少因NUMA节点间负载均衡而导致的不必要的NUMA节点间内存迁移操作,从而降低互联总线上的数据负载,达到提升整个系统综合性能的目的。尤其是将内存消耗划分为远程内存消耗、本地内存消耗两个维度,能够有效降低互联总线上的数据负载,达到提升整个系统综合性能的目的。
为了对进程的跨节点迁移损耗进行评分,本实施例中采用了获取进程远程内存消耗、本地内存消耗两个维度的消耗。作为一种可选的实施方式,本实施例中进程的远程内存消耗(remote_mm)、本地内存消耗(local_mm)为根据进程申请的内存所在NUMA节点确定,进程申请的内存在本NUMA节点的内存部分为本地内存消耗,进程申请的内存在本NUMA节点以外的内存部分为远程内存消耗,即在进程申请内存时根据申请内存所在NUMA节点分别对远程内存消耗(remote_mm)、本地内存消耗(local_mm)计算赋值,并在进程内存迁移等操作时重新对远程内存消耗(remote_mm)、本地内存消耗(local_mm)计算,这种实现方案稍复杂但运行效率高。
作为一种可选的实施方式,本实施例中进程的CPU负载为通过进程的量化负载load_avg得到。量化负载是在Linux 3.8内核中实现的pelt算法中引入的,用于衡量CPU的负载,通过计算进程的可运行时间与总采样时间的比值,然后乘以进程的权重,就可以得出进程的量化负载,当一个进程的量化负载无限接近权重值时,就说明这个进程一直在占用CPU,即CPU占用率高,当一个进程的量化负载越小,就说明这个进程的工作负载很小,占用的CPU资源很少,即CPU占用率低。将CPU就绪队列中所有进程的量化负载累加起来就可得到该CPU的总量化负载。此外,也可以根据需要采用其他方式来获取进程的CPU负载。
本实施例中对CPU就绪队列的进程进行排序,通过进程远程内存消耗、本地内存消耗、CPU消耗三个方面进行考量排序评估跨节点迁移损耗,具体地步骤S101中评估跨节点迁移损耗的函数表达式为:
migrate_loss=W0*local_mm-W1*remote_mm-W2*load_avg
上式中,migrate_loss为跨节点迁移损耗,W0~W2为权重参数,local_mm为本地内存消耗,remote_mm为远程内存消耗,load_avg为CPU负载。需要说明的是,权重参数可以根据实际需要进行取值,W0~W2分别用于对进程本地内存消耗、远程内存消耗、CPU负载进行加权,加权的目的是为了区分本地内存、远程内存、CPU负载三个因数对跨节点迁移损耗的贡献程度,比如将W0设为0,表示不考虑本地内存消耗对跨节点迁移损耗的贡献,只考虑进程的远程内存与CPU负载,远程内存消耗越多,CPU负载越高则跨节点迁移损耗评分越低,更容易被选中进行跨节点迁移。整个公式所表达的意思是本地内存消耗越少、远程内存消耗越多,CPU负载越高则跨节点迁移损耗评分越小,进程更容易被选中跨节点迁移。
为了在查找、插入和删除等操作时综合性能更好、时间复杂度可控,如图3所示,本实施例步骤S101中还包括采用红黑树记录NUMA节点中进入就绪队列的进程及其跨节点迁移损耗:在调度器的运行队列cfs_rq中增加一个结构体变量migrate_tasks,并将其初始化为RB_ROOT以表示为就绪队列红黑树的根节点;在进程结构体task_struct中增加一个结构体变量rb_task以表示红黑树的节点,用于将进程插入就绪队列红黑树的根节点,以及一个结构体变量migrate_loss以表示进程的评估跨节点迁移损耗,用于作为插入就绪队列红黑树的键值;在内存结构体mm_struct中增加变量local_mm与remote_mm,其中local_mm为本地内存消耗,remote_mm为远程内存消耗;在任意当前的进程current进入就绪队列时进行评估跨节点迁移损耗以获得跨节点迁移损耗migrate_loss,以跨节点迁移损耗migrate_loss为红黑树键值将当前的进程current插入就绪队列的红黑树中。考虑到目前内核针对进程的内存信息统计还没有细分到对本地、远程内存区分统计,只记录了进程对整个内存的消耗,因此本实施例中在mm_struct结构体中引入变量local_mm与remote_mm来区分统计本地、远程内存的消耗。此外针对进程对CPU消耗则可直接采用现有的进程的量化负载load_avg来衡量。通过local_mm、remote_mm与load_avg就可以对进程跨node迁移损耗进行评分,并以评分结果作为红黑树键值插入红黑树中。如图3所示,最后在系统进行NUMA节点间负载均衡时,对排序好的就绪队列进程进行遍历,从中挑选跨NUMA节点迁移损耗评分最小的进程进行迁移,直到NUMA节点间的负载达到均衡。步骤S102中针对待迁移的NUMA节点中的进程选择跨节点迁移损耗最小的进程并将其迁移到其他NUMA节点之后,还包括将跨节点迁移损耗最小的进程从就绪队列的红黑树中删除。
需要说明的是,针对红黑树的插入、查找、删除等操作可以复用Linux系统实现的红黑树框架中的rb_link_node、rb_insert_color、rb_first与rb_erase等函数调用。例如将跨节点迁移损耗最小的进程从就绪队列的红黑树中删除时调用rb_erase函数将其从红黑树中删除,针对待迁移的NUMA节点中的进程选择跨节点迁移损耗最小的进程即为调用rb_first函数从红黑树中取出节点迁移损耗最小的进程。
如图4所示,以跨节点迁移损耗migrate_loss为红黑树键值将当前的进程current插入就绪队列的红黑树中的步骤包括:
S201,初始化红黑树的节点变量,包括节点变量link和父节点patent,且初始值为空NULL;初始化临时任务tmp_task,以及变量leftmost为真(true);
S202,接收需要插入的当前的进程current及其跨节点迁移损耗migrate_loss,且其所在的运行队列为cfs_rq;
S203,通过将根节点cfs_rq→migrate_tasks→rb_node赋值给节点变量link;
S204,判断红黑树是否遍历完成,即link为空(link==NULL)是否成立,若成立则跳转步骤S205;否则,跳转步骤S206;
S205,通过执行rb_link_node函数将当前的进程current插入红黑树的父节点patent并调整树结构保持平衡,设置节点的颜色(红色或黑色),然后结束并退出;执行rb_link_node函数的格式为:
rb_link_node(¤t→rb_task,&cfs_rq→migrate_tasks,leftmost)
其中,¤t→rb_task是指当前的进程current的节点,cfs_rq→migrate_tasks是指就绪队列的红黑树根节点,leftmost表示在遍历红黑树过程中是否有向右移动,没有则为true,否则为false;且设置节点的颜色的函数格式为:
rb_insert_color(¤t→rb task,&cfs rq→migrate_task,leftmost)
S206,将节点变量link赋值给父节点patent,以便在节点变量link下寻找子节点以插入当前的进程current;
S207,通过执行命令:container_of(link,struct task_struct,rb_task)从节点变量link取出对应的任务结构体task_struct,赋值给临时任务tmp_task;
S208,判断当前的进程current的跨节点迁移损耗migrate_loss小于临时任务tmp_task的的跨节点迁移损耗migrate_loss是否成立,若成立则将节点变量link向左节点移动(link=patent→rb_left),跳转步骤S204;否则,将节点变量link向右节点移动(link=patent→rb_tight),将变量leftmost赋值为假(false),跳转步骤S204。
综上所述,本实施例NUMA感知的负载均衡调度方法针对NUMA架构CPU跨NUMA节点互联总线访问速度慢、延迟大的特点,提出系统在NUMA节点间负载均衡时,优化对迁移进程的挑选,通过优先迁移有跨节点远程内存消耗、低内存高负载的进程,最大程度避免因进程跨节点迁移导致的大量内存跨节点迁移操作,从而降低互联总线上的数据负载,提升整个系统综合性能。
此外,本实施例还提供一种NUMA感知的负载均衡调度系统,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行NUMA感知的负载均衡调度方法。此外,本实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行NUMA感知的负载均衡调度方法。
实施例二:
本实施例与实施例一基本相同,其主要区别为进程的远程内存消耗、本地内存消耗的获取方式不同。本实施例中,进程的远程内存消耗、本地内存消耗为根据进程的地址空间遍历计算得到,且每遍历地址空间的一个内存页则通过page_to_nid函数调用得到内存的NUMA节点信息,将本NUMA节点的内存页作为该进程的本地内存消耗,将本NUMA节点以外的内存页作为该进程的远程内存消耗,与实施例一相比,本实施例进程的远程内存消耗、本地内存消耗的方法实现方案简单但运行效率略低。
此外,本实施例还提供一种NUMA感知的负载均衡调度系统,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行NUMA感知的负载均衡调度方法。此外,本实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行NUMA感知的负载均衡调度方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种NUMA感知的负载均衡调度方法,其特征在于,包括:
S101,针对各个NUMA节点中的进程评估跨节点迁移损耗;
S102,在进行NUMA节点间负载均衡时,针对待迁移的NUMA节点中的进程选择跨节点迁移损耗最小的进程并将其迁移到其他NUMA节点。
2.根据权利要求1所述的NUMA感知的负载均衡调度方法,其特征在于,步骤S101中针对各个NUMA节点中的进程评估跨节点迁移损耗时,所述跨节点迁移损耗与进程的远程内存消耗、CPU负载、本地内存消耗三者相关,且所述跨节点迁移损耗与进程的远程内存消耗和CPU负载两者负相关,所述跨节点迁移损耗与进程的本地内存消耗正相关。
3.根据权利要求2所述的NUMA感知的负载均衡调度方法,其特征在于,所述进程的远程内存消耗、本地内存消耗为根据进程申请的内存所在NUMA节点确定,进程申请的内存在本NUMA节点的内存部分为本地内存消耗,进程申请的内存在本NUMA节点以外的内存部分为远程内存消耗。
4.根据权利要求2所述的NUMA感知的负载均衡调度方法,其特征在于,所述进程的远程内存消耗、本地内存消耗为根据进程的地址空间遍历计算得到,且每遍历地址空间的一个内存页则通过page_to_nid函数调用得到内存的NUMA节点信息,将本NUMA节点的内存页作为该进程的本地内存消耗,将本NUMA节点以外的内存页作为该进程的远程内存消耗。
5.根据权利要求2所述的NUMA感知的负载均衡调度方法,其特征在于,所述进程的CPU负载为通过进程的量化负载load_avg得到。
6.根据权利要求2所述的NUMA感知的负载均衡调度方法,其特征在于,步骤S101中评估跨节点迁移损耗的函数表达式为:
migrate_loss=W0*local_mm-W1*remote_mm-W2*load_avg
上式中,migrate_loss为跨节点迁移损耗,W0~W2为权重参数,local_mm为本地内存消耗,remote_mm为远程内存消耗,load_avg为CPU负载。
7.根据权利要求2所述的NUMA感知的负载均衡调度方法,其特征在于,步骤S101中还包括采用红黑树记录NUMA节点中进入就绪队列的进程及其跨节点迁移损耗:在调度器的运行队列cfs_rq中增加一个结构体变量migrate_tasks,并将其初始化为RB_ROOT以表示为就绪队列红黑树的根节点;在进程结构体task_struct中增加一个结构体变量rb_task以表示红黑树的节点,用于将进程插入就绪队列红黑树的根节点,以及一个结构体变量migrate_loss以表示进程的评估跨节点迁移损耗,用于作为插入就绪队列红黑树的键值;在内存结构体mm_struct中增加变量local_mm与remote_mm,其中local_mm为本地内存消耗,remote_mm为远程内存消耗;在任意当前的进程current进入就绪队列时进行评估跨节点迁移损耗以获得跨节点迁移损耗migrate_loss,以跨节点迁移损耗migrate_loss为红黑树键值将当前的进程current插入就绪队列的红黑树中。
8.根据权利要求7所述的NUMA感知的负载均衡调度方法,其特征在于,步骤S102中针对待迁移的NUMA节点中的进程选择跨节点迁移损耗最小的进程并将其迁移到其他NUMA节点之后,还包括将跨节点迁移损耗最小的进程从就绪队列的红黑树中删除。
9.一种NUMA感知的负载均衡调度系统,包括相互连接的微处理器和存储器,其特征在于,所述微处理器被编程或配置以执行权利要求1~8中任意一项所述NUMA感知的负载均衡调度方法。
10.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其特征在于,所述计算机程序用于被微处理器编程或配置以执行权利要求1~8中任意一项所述NUMA感知的负载均衡调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211696876.5A CN116126525A (zh) | 2022-12-28 | 2022-12-28 | 一种numa感知的负载均衡调度方法、系统及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211696876.5A CN116126525A (zh) | 2022-12-28 | 2022-12-28 | 一种numa感知的负载均衡调度方法、系统及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116126525A true CN116126525A (zh) | 2023-05-16 |
Family
ID=86305792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211696876.5A Pending CN116126525A (zh) | 2022-12-28 | 2022-12-28 | 一种numa感知的负载均衡调度方法、系统及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116126525A (zh) |
-
2022
- 2022-12-28 CN CN202211696876.5A patent/CN116126525A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9965324B2 (en) | Process grouping for improved cache and memory affinity | |
US5349656A (en) | Task scheduling method in a multiprocessor system where task selection is determined by processor identification and evaluation information | |
WO2017166777A1 (zh) | 一种任务调度方法及装置 | |
US8424007B1 (en) | Prioritizing tasks from virtual machines | |
CN113377540A (zh) | 集群资源调度方法及装置、电子设备和存储介质 | |
US20070226449A1 (en) | Virtual computer system, and physical resource reconfiguration method and program thereof | |
JP2008191949A (ja) | マルチコアシステムおよびマルチコアシステムの負荷分散方法 | |
CN109992366B (zh) | 任务调度方法及调度装置 | |
JP2004171234A (ja) | マルチプロセッサシステムにおけるタスク割り付け方法、タスク割り付けプログラム及びマルチプロセッサシステム | |
CN111897647B (zh) | 一种多核系统中多线程调度方法、装置及设备 | |
KR101555266B1 (ko) | 자원 이주를 위한 방법, 장치 및 시스템 | |
CN112231102A (zh) | 一种提升存储系统性能的方法、装置、设备、产品 | |
CN112015765B (zh) | 基于缓存价值的Spark缓存淘汰方法及系统 | |
CN116225686A (zh) | 面向混合内存架构的cpu调度方法和系统 | |
CN116107754A (zh) | 一种面向深度神经网络的内存管理方法及系统 | |
CN115237580A (zh) | 面向智能计算的流水并行训练自适应调整系统、方法 | |
US20120042322A1 (en) | Hybrid Program Balancing | |
CN107423114B (zh) | 一种基于服务分类的虚拟机动态迁移方法 | |
US20130312002A1 (en) | Scheduling method and scheduling system | |
CN116126525A (zh) | 一种numa感知的负载均衡调度方法、系统及介质 | |
CN108255572A (zh) | 一种vcpu切换方法和物理主机 | |
Kim et al. | FusionFlow: Accelerating Data Preprocessing for Machine Learning with CPU-GPU Cooperation | |
CN109117247A (zh) | 一种基于异构多核拓扑感知的虚拟资源管理系统及方法 | |
US12093806B1 (en) | Static memory allocation for neural network inference | |
JP6285850B2 (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 |