CN116302327A - 资源调度方法及相关设备 - Google Patents
资源调度方法及相关设备 Download PDFInfo
- Publication number
- CN116302327A CN116302327A CN202310127349.0A CN202310127349A CN116302327A CN 116302327 A CN116302327 A CN 116302327A CN 202310127349 A CN202310127349 A CN 202310127349A CN 116302327 A CN116302327 A CN 116302327A
- Authority
- CN
- China
- Prior art keywords
- load
- node
- numa
- target
- core
- 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 70
- 238000004364 calculation method Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 12
- 238000012163 sequencing technique Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000006978 adaptation Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000011157 data evaluation Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 238000006467 substitution reaction 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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节点中,根据负载值确定待分配的目标物理核,将目标物理核的计算资源分配给虚拟核使用,其中,目标物理核的负载值小于其他物理核的负载值。本申请解决了宿主机存在负载不均、资源利用率低的问题。
Description
技术领域
本申请涉及到计算机技术领域,具体而言,涉及一种资源调度方法及相关设备。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。不应以此处的描述包括在本部分中就承认是现有技术。
非统一内存访问技术NUMA,英文全称为NonUniformMemoryAccessArchitecture,是一种为多处理器的设备设计的内存架构,在NUMA场景下,根据元器件位置距离对多个处理器所分的组为NUMA节点,即一个NUMA节点包含一组处理器(例如多个物理CPU,CPU为处理器CentralProcessingUnit的缩写),这组处理器共享同一块本地内存,内存通过内存控制器直接绑定在处理器上。多个NUMA节点中的处理器可以访问全部的***物理存储器,但是访问本NUMA节点内的存储器所需要的时间,比访问其他NUMA节点内的存储器所花的时间要少得多,即在多处理器的情况下,非统一内存访问技术NUMA能使各处理器访问距离其最近的存储器,访问速度更快。
宿主机作为真实的物理硬件服务器,其上可运行虚拟机,虚拟机是指在物理计算机上模拟出一台或多台虚拟的计算机(虚拟机如kvm,kvm为基于内核的虚拟机Kernel-basedVirtual Machine的英文缩写),这些虚拟机能像真正的计算机那样进行工作。在虚拟化实现技术中,一个虚拟机使用的虚拟机中央处理器(又称虚拟核,常用英文缩写VCPU表示)在宿主机上一般实现为一个宿主机上的线程。对于宿主机来说,调度虚拟核VCPU实际上就是调度一个线程,通常,虚拟机调度到宿主机上运行时,在不做任何处理器资源分配策略的情况下,随机调度经常会出现以下问题:
1)宿主机NUMA场景中各NUMA节点整体的CPU负载不均衡:各NUMA节点内有些处理器的CPU负载很高,有些CPU负载很低没有被用到,其中,CPU负载用来衡量处理器CPU计算任务量的大小。
2)单个节点node中各处理器的CPU负载也不均衡:有些跑了很多虚拟机kvm进程,有些没有调度虚拟机kvm。
3)虚拟机kvm内部CPU负载很高,远高于宿主机整体平均的负载:3-4倍或更高。
目前基于宿主机CPU负载的调度策略有简单的轮询调度,如图1所示,宿主机上共有5个物理核(宿主机具有的物理CPU计算资源用物理核的数量表示,即宿主机上一个CPU处理器里面通常有多个计算单元,一个计算单元作为一个物理核来计量,如图1中,将宿主机具有的物理核分别标注为core0-core4),若在宿主机上分配2个虚拟机kvm,其中一个虚拟机kvm-1需要7个虚拟核(VCPU),另一个虚拟机kvm-2需要4个虚拟核(VCPU)。该轮询调度方法如下:
1.首先统计宿主机共有多少物理核(core),图1中为5个,并将其编号排序core0~core4。
2.当有kvm-1分配到该宿主机时,因其需要7个虚拟核(VCPU),因此按顺序从物理核中依次选出对应的物理核做虚拟核与物理核的一一绑定,即按图中的圈编号1-5来分配。
3.当实际物理核数少于虚拟机kvm虚拟核数需求时,分配完一轮物理核后,再重头选取物理核,即按途中的圈编号6-7来分配。
4.当kvm-1虚拟核分配完毕后,记下当前分配的物理核编号,即core1。
5.当有kvm-2分配到该宿主机时,因其需要4个虚拟核(VCPU),因此从4步骤记录的core1的后一个物理核(即core2)开始按顺序继续分配,即按图中的圈编号8-11来分配。
该方法虽然考量了宿主机物理核数,并做到尽可能的轮询均匀分配,但有以下问题:
11.该方案的轮询平均不一定会对负载的均衡有所帮助。
12.该方案未考虑实际宿主机的计算存储架构,NUMA场景下各物理核是有计算亲和性的,不考虑这一点会导致虚拟机kvm因虚拟核分配不合理而存在宿主机上跨NUMA节点读取内存的情况,增加不必要的性能开销,负载依然很高。
因此,上述方法在实际运用中,宿主机存在负载不均、资源利用率低、性能发挥受限等问题,使宿主机具有的处理器资源难以被充分利用,且可能会因为分配不合理(如跨NUMA节点读取内存的情况)导致虚拟机kvm的内部负载很高,影响虚拟机性能。
发明内容
本申请实施例提供了一种资源调度方法及相关设备,以至少解决现有技术中,宿主机存在负载不均、资源利用率低的问题。
根据本申请的一个方面,还提供了一种资源调度方法,所述方法应用于宿主机,所述宿主机上运行有虚拟机,所述宿主机的计算存储架构为NUMA架构,所述宿主机在所述NUMA架构下具有多个NUMA节点,所述NUMA节点包括一个或多个物理核,所述物理核为所述宿主机的处理器具有的计算单元,所述方法包括:
为虚拟机的虚拟核分配物理核之前,获取各个所述NUMA节点下所述物理核当前具有的负载值,所述负载值包括所述物理核已被占用的计算资源产生的负载;
根据所述负载值,计算各个所述NUMA节点的节点负载,以根据所述节点负载确定目标NUMA节点,其中,所述目标NUMA节点的所述节点负载小于其他所述NUMA节点的所述节点负载;
从所述目标NUMA节点中,根据所述负载值确定待分配的目标物理核,将所述目标物理核的计算资源分配给所述虚拟核使用,其中,所述目标物理核的所述负载值小于其他所述物理核的所述负载值。
在其中的一些实施例中,根据所述节点负载确定目标NUMA节点的步骤包括:
基于所述节点负载对所述NUMA节点进行排序获得第一排序信息,以基于所述第一排序信息确定所述目标NUMA节点。
在其中的一些实施例中,从所述目标NUMA节点中,根据所述负载值确定待分配的目标物理核的步骤包括:
确定属于所述目标NUMA节点的一个或多个所述物理核,基于所述负载值对所述目标NUMA节点中的所述物理核进行排序获得第二排序信息,以基于所述第二排序信息确定所述目标物理核。
在其中的一些实施例中,将所述目标物理核的计算资源分配给所述虚拟核使用之前,所述方法还包括:
确定所述虚拟机已分配的虚拟核中,使用所述目标物理核的计算资源的所述虚拟核的个数;
根据所述负载值和所述个数,确定所述目标物理核的核均负载,其中,所述核均负载等于所述负载值与所述个数之比;
则,将所述目标物理核的计算资源分配给所述虚拟核使用之后,所述方法还包括:
将所述核均负载作为负载增量,累加在所述目标NUMA节点的所述节点负载中,获得所述目标NUMA节点的节点预计负载;
根据所述节点预计负载和其他所述NUMA节点的所述节点负载,确定下一个目标NUMA节点;
从所述下一个目标NUMA节点中,确定待分配的下一个目标物理核,以将所述下一个目标物理核的计算资源分配给所述虚拟机的下一个虚拟核使用。
在其中的一些实施例中,从所述下一个目标NUMA节点中,确定待分配的下一个目标物理核之前,所述方法还包括:
将所述核均负载作为负载增量,累加在所述目标物理核的所述负载值的中,获得所述目标物理核的预计负载;
若所述目标物理核属于所述下一个目标NUMA节点,则,从所述下一个目标NUMA节点中,确定待分配的下一个目标物理核的步骤包括:
根据所述预计负载和其他所述物理核的所述负载值,确定待分配的所述下一个目标物理核。
在其中的一些实施例中,所述方法还包括:
判断所述虚拟机具有的预定个数的所述虚拟核是否均被分配了计算资源,若是,则执行下一步;
根据各个所述目标物理核所属的所述NUMA节点,为所述虚拟机的所述虚拟核分配虚拟NUMA节点,其中,所述虚拟NUMA节点中的一个或多个所述虚拟核使用的计算资源来自同一个所述NUMA节点下的相同或不同的所述目标物理核。
根据本申请的另一个方面,还提供了一种资源调度方法,所述方法应用于虚拟机,所述虚拟机运行在宿主机上,所述宿主机的计算存储架构为NUMA架构,所述宿主机在所述NUMA架构下具有多个NUMA节点,所述NUMA节点包括一个或多个物理核,所述物理核为所述宿主机的处理器具有的计算单元,所述方法包括:
将调取的目标物理核的计算资源,分配给所述虚拟机的虚拟核使用,其中,所述目标物理核由所述宿主机通过如下步骤确定:
获取各个所述NUMA节点下所述物理核当前具有的负载值,所述负载值包括所述物理核已被占用的计算资源产生的负载;
根据所述负载值,计算各个所述NUMA节点的节点负载,以根据所述节点负载确定目标NUMA节点,其中,所述目标NUMA节点的所述节点负载小于其他所述NUMA节点的所述节点负载;
从所述目标NUMA节点中,根据所述负载值确定所述目标物理核,其中,所述目标物理核的所述负载值小于其他所述物理核的所述负载值。
根据本申请的另一个方面,还提供了一种资源调度装置,所述装置设置于运行有虚拟机的宿主机内,所述宿主机的计算存储架构为NUMA架构,所述宿主机在所述NUMA架构下具有多个NUMA节点,所述NUMA节点包括一个或多个物理核,所述物理核为所述宿主机的处理器具有的计算单元,所述装置包括:
获取模块,用于为虚拟机的虚拟核分配物理核之前,获取各个所述NUMA节点下所述物理核当前具有的负载值,所述负载值包括所述物理核已被占用的计算资源产生的负载;
计算模块,用于根据所述负载值,计算各个所述NUMA节点的节点负载,以根据所述节点负载确定目标NUMA节点,其中,所述目标NUMA节点的所述节点负载小于其他所述NUMA节点的所述节点负载;
确定模块,用于从所述目标NUMA节点中,根据所述负载值确定待分配的目标物理核,将所述目标物理核的计算资源分配给所述虚拟核使用,其中,所述目标物理核的所述负载值小于其他所述物理核的所述负载值。
根据本申请的另一个方面,还提供了一种宿主机,所述宿主机运行有虚拟机,所述宿主机设置有所述的资源调度装置。
根据本申请的另一个方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法步骤。
根据本申请的另一个方面,还提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述的方法步骤。
在本申请实施例中,每次为虚拟机的虚拟核分配计算资源时,都基于宿主机的物理核当前具有的负载值作为判断依据找出节点负载最小的目标NUMA节点后,从目标NUMA节点中找出适合分配的目标物理核,即优先将当前负载值更低的物理核的计算资源分配给虚拟机的虚拟核使用,使宿主机的处理器计算资源得以充分利用,资源调度策略更精准,实现了在确保宿主机的负载达到均衡的情况下,兼提升宿主机上运行的虚拟机的性能。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为目前基于宿主机CPU负载的轮询调度原理图;
图2为本发明一实施例提供的一种资源调度方法的流程图;
图3为本发明一实施例提供的核均负载的计算流程图;
图4为本发明一实施例提供的确定下一个目标物理核的流程示意图;
图5为本发明一实施例提供的虚拟机的NUMA架构适配流程;
图6为本发明一实施例提供的一种资源调度装置的结构示意图;
图7为宿主机在NUMA架构下的NUMA节点与物理核之间的关系示意图;
图8为调度一个有8个虚拟核的虚拟机的分配逻辑图;
图9为虚拟机的NUMA架构适配图。
其中,上述附图包括以下附图标记:
11、获取模块;12、计算模块;13、确定模块;14、判断模块;15、虚拟节点配置模块。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
虚拟机调度到宿主机上运行时,虽然目前基于宿主机资源的调度有简单的轮询调度(如图1所示的调度策略),但该轮询调度方式并没有考虑当前宿主机实际各物理核的负载情况来做调度,这种轮询平均不一定会对负载的均衡有所帮助,譬如:有些物理核虽然绑定了很多虚拟核,但负载值不高,本来也可纳入被调度选择中来,但实际并未被作为调度选择对象再次调度给虚拟机使用。有些物理核虽然绑定了很少的虚拟核,但负载值很高,则不宜再列为被选择对象。对此,需要基于负载分析的均衡调度算法,来解决宿主机负载不均、资源利用率低、性能发挥受限等问题,为解决上述问题,本发明第一个实施例提供了一种资源调度方法,该方法应用于宿主机,宿主机上运行有虚拟机,宿主机的计算存储架构为NUMA架构,宿主机在NUMA架构下具有多个NUMA节点,NUMA节点包括一个或多个物理核,物理核为宿主机的处理器具有的计算单元,如图2所示,该资源调度方法包括如下步骤:
步骤S11:为虚拟机的虚拟核分配物理核之前,获取各个NUMA节点下物理核当前具有的负载值,负载值包括物理核已被占用的计算资源产生的负载,物理核的计算资源除了给虚拟核使用,同时还会给操作***、各音视频等应用程序占用,物理核的负载值因不同时机下的计算资源的占用对象不同,产生的负载大小也将是不同的,实时变化的,如一个物理核没有把计算资源分配给任一虚拟核使用的时候,该物理核的负载值主要来自操作***、应用程序等运行时产生的负载,若该物理核在此之前给一虚拟核分配了计算资源,则该物理核再次给一个虚拟核分配计算资源后,该物理核的负载值还包括来自虚拟核占用的负载,由于虚拟核还未实际运行,对此,本发明实施例在下文将得到的核均负载作为相应物理核每次分配虚拟核后产生的负载增量计入该物理核的负载值中,来对下一个虚拟核分配计算资源时需确定的目标物理核提供数据依据。
步骤S12:根据负载值,计算各个NUMA节点的节点负载,以根据节点负载确定目标NUMA节点,其中,目标NUMA节点的节点负载小于其他NUMA节点的节点负载。
步骤S13:从目标NUMA节点中,根据负载值确定待分配的目标物理核,将目标物理核的计算资源分配给虚拟核使用,其中,目标物理核的负载值小于其他物理核的负载值。
由此,本发明实施例在每次为虚拟机的虚拟核分配计算资源时,都基于宿主机的物理核当前实际具有的负载值作为判断依据找出节点负载最小的目标NUMA节点后,从目标NUMA节点中找出适合分配的目标物理核,即优先将当前负载值更低的物理核的计算资源分配给虚拟机的虚拟核使用,使宿主机的处理器计算资源得以充分利用,资源调度策略更精准,实现了在确保宿主机的负载达到均衡的情况下,兼提升宿主机上运行的虚拟机的性能。
在本发明实施例中,步骤S12计算各个NUMA节点的节点负载时,将节点负载为属于相应NUMA节点的一个或多个物理核的负载值之和,作为相应NUMA节点的节点负载。如一宿主机具有node0、node1和node2三个NUMA节点,其中node0节点下具有core0、core3和core6三个物理核,若将物理核的负载值用Lc表示,则各core0、core3和core6的负载值分别为Lc11、Lc12和Lc13,则node0节点的节点负载等于Lc11、Lc12和Lc13之和,即Sum(Lc)。
本发明实施例鉴于宿主机在NUMA架构下具有多个NUMA节点,因此,针对每一次虚拟机的虚拟核分配都基于当前宿主机各NUMA节点及物理核实际具有的负载值作为判断依据,首先计算出当前适合分配的目标NUMA节点(即节点负载最低的NUMA节点),在找到目标NUMA节点后,再从目标NUMA节点中选出负载值最小的物理核作为目标物理核,以将该目标物理核的计算资源分配给虚拟机的其中一个虚拟核使用,资源调度策略更精准,使虚拟核的分配能够基于宿主机的负载均衡的情况下进行,提高了宿主机的资源利用率。
因此,本发明实施例考虑了宿主机在NUMA架构下各NUMA节点的节点负载情况和物理核在各NUMA节点下的分布,优先选择节点负载更低的目标NUMA节点,再选择目标NUMA节点下负载值最小的物理核,因此兼顾了NUMA节点内分配的亲和性因素,尽量降低虚拟机在宿主机上跨NUMA节点读取内存引起的负载增加,避免了不必要的性能开销。
在本发明实施例中,步骤S12根据节点负载确定目标NUMA节点的步骤包括:基于节点负载对NUMA节点进行排序获得第一排序信息,以基于第一排序信息确定目标NUMA节点。如一宿主机具有node0、node1和node2三个NUMA节点,分别计算出各NUMA节点的节点负载后,按节点负载的大小对各个NUMA节点进行排序得到第一排序信息,如图8所示,计算得出node0的节点负载小于node1和node2的节点负载,则将node0确定为目标NUMA节点,进而将目标NUMA节点下负载值最低的物理核作为目标物理核分配给虚拟机。
因此,本发明实施例优先将当前节点负载更低的NUMA节点作为目标NUMA节点,将目标NUMA节点下负载值最低的物理核的计算资源,分配给当前要分配的虚拟机的虚拟核使用,不会将负载值很高的NUMA节点及其下的物理核的计算资源分配给虚拟核使用,确保宿主机各NUMA节点整体的负载均衡,使宿主机下各NUMA节点的计算资源得以充分利用,资源调度策略更精准,在确保宿主机的负载达到均衡的情况下,兼提升了宿主机上运行的虚拟机的性能。
步骤S13中,从目标NUMA节点中,根据负载值确定待分配的目标物理核的步骤包括:确定属于目标NUMA节点的一个或多个物理核,基于负载值对目标NUMA节点中的物理核进行排序获得第二排序信息,以基于第二排序信息确定目标物理核。如图8所示的NUMA节点(node0)中,core3的负载值小于core0的负载值,core0的负载值小于core6的负载值,对node0节点下的各个物理核进行排序获得第二排序信息后,即可依据第二排序信息将负载值最小的core3作为当前分配轮次中的目标物理核。由此,本发明实施例能够将目标NUMA节点下负载值最低的物理核作为目标物理核分配给虚拟机,确保单个NUMA节点的各物理核之间的负载均衡,不会存在有些物理核跑了很多虚拟机进程、有些没有调度虚拟机的情况,确保宿主机负载均衡,进而提升了宿主机上运行的虚拟机的运行性能。且本发明实施例仅对选出的目标NUMA节点中的物理核进行排序,进一步提升了宿主机的运行性能。
当给虚拟机的下一个虚拟核分配计算资源时,步骤S13将目标物理核的计算资源分配给虚拟核使用之前,如图3所示,本发明实施例提供的方法还包括如下步骤:
步骤S21:确定虚拟机已分配的虚拟核中,使用目标物理核的计算资源的虚拟核的个数,如虚拟机有四个虚拟核已经被分配了计算资源,其中有两个虚拟核的计算资源来自当前的目标物理核,即当前目标物理核在将计算资源分配给虚拟机还未被分配的虚拟核使用之前,该目标物理核已绑定的虚拟核有两个,即使用该目标物理核的计算资源的虚拟核的个数为二。
步骤S22:根据负载值和个数,确定目标物理核的核均负载,其中,核均负载等于负载值与个数之比。即本发明实施例首先确定目标物理核当前已绑定的虚拟核的个数(该个数本发明实施例定义为虚拟核比Vc)。然后根据负载值和个数,确定目标物理核的核均负载,其中,核均负载等于负载值(此处用Lc1标识)与个数之比,即Lc1/Vc。则,如图4所示,步骤S13将目标物理核的计算资源分配给虚拟核使用之后,本发明实施例提供的方法还包括:
步骤S31:将核均负载作为负载增量,累加在目标NUMA节点的节点负载中,获得目标NUMA节点的节点预计负载。
步骤S32:根据节点预计负载和其他NUMA节点的节点负载,确定下一个目标NUMA节点。同理,选择的下一个目标NUMA节点的负载大小是最小的。
步骤S33:从下一个目标NUMA节点中,确定待分配的下一个目标物理核,以将下一个目标物理核的计算资源分配给虚拟机的下一个虚拟核使用。然后重复步骤S21至步骤S22,计算下一个目标物理核的核均负载后,循环步骤31至步骤33,直至虚拟机的所有虚拟核均被分配上计算资源。
本发明实施例中的负载值在分配第一个虚拟核前,每个物理核的负载值可能包括的负载来源有操作***占据的负载及其他程序占据的负载等,如core0在第一次调度的时候作为了目标物理核来绑定虚拟核,则在给虚拟机的第二个虚拟核分配物理核的时候,其中core0这一物理核的预计负载为对负载值累加了核均负载之后获得,且本发明实施例在相应目标物理核首次分配虚拟核时,将核均负载就是当前的负载值的大小,若相应物理核分配了多个虚拟核,则该物理核作为目标物理核分配一个虚拟核之后需计算的核均负载,就为目标物理核当前的负载值与虚拟核的个数之比(该虚拟核的个数不包含当前次分配的虚拟核,而是分配当前个虚拟核前已经绑定的虚拟核的个数)。因此,本发明实施例对单一虚拟机的每一次虚拟核分配,也都基于核均负载对各目标物理核的负载现状进行合理预估,即计算物理核的核均负载作为本次分配后该物理核的负载增量,基于该负载增量预估下一次分配前应得到的目标NUMA节点及该目标NUMA节点下目标物理核,由此,为每一次的目标物理核的选择提供了合理的数据支撑,确保目标NUMA节点的各物理核之间的负载均衡,不会存在有些物理核跑了很多虚拟机进程、有些没有调度虚拟机的情况,确保宿主机的负载均衡。
步骤S33从下一个目标NUMA节点中,确定待分配的下一个目标物理核之前,本发明实施例提供的方法还包括:将核均负载作为负载增量,累加在目标物理核的负载值中,获得目标物理核的预计负载。若目标物理核属于下一个目标NUMA节点,则,从下一个目标NUMA节点中,确定待分配的下一个目标物理核的步骤包括:根据预计负载和其他物理核的负载值,确定待分配的下一个目标物理核,无论是预计负载还是负载值,只要该预计负载或负载值最小,则将该预计负载或负载值对应所属的物理核作为下一个目标物理核。若上一个目标物理核不属于下一个目标NUMA节点,则从下一个目标NUMA节点中,根据各个物理核的负载值,确定待分配的下一个目标物理核,下一个目标物理核的负载值的大小是下一个目标NUMA节点中最小的。
本发明实施例中的确定的下一个目标物理核也可能跟上一个目标物理核同属于一个物理核(如core0),也可能不是,若下一个目标物理核与上一个目标物理核属于同一个物理核,则下一个目标物理核的判断依据为得到的预计负载,否则就是未累加核均负载的负载值,无论是预计负载还是负载值,只要该物理核当前的负载值最小即可被作为目标物理核与虚拟机的下一个虚拟核进行绑定,即将计算资源分配给虚拟机的下一个虚拟核使用。在对相应目标物理核累加核均负载的同时,因相应NUMA节点的节点负载为各物理核的负载之和,因此在下一次分配前选择目标NUMA节点时,将相应NUMA节点的节点负载累加核均负载得到该相应NUMA节点的节点预计负载后,基于该节点预计负载与其他NUMA节点的节点负载进行排序获得另一个第一排序信息,以基于第一排序信息找出节点负载最小的NUMA节点作为下一个目标NUMA节点,以从下一个目标NUMA节点中找出下一个目标物理核进行计算资源的分配。同理,第三次、第四次及后续的分配轮次选择的目标物理核均通过上述的选择方式确定。在给下一个虚拟机的虚拟核分配计算资源时,一个或多个物理核的负载值则将是累加过预计负载后的负载值,即一个物理核被当做目标物理核给同一个或不同虚拟机的虚拟核分配计算资源后,都会将计算得到的核均负载作为负载增量累加在相应物理核的负载值中,为同一虚拟机的下一个虚拟核或为下一个虚拟机的虚拟核分配计算资源时,提供物理核的负载值的数据支撑。
为进一步提高宿主机上运行的虚拟机的运行性能,如图5所示,本发明实施例提供的方法还包括如下步骤:
步骤S41:判断虚拟机具有的预定个数的虚拟核是否均被分配了计算资源,若是,则执行下一步,即执行步骤S42。
步骤S42:根据各个目标物理核所属的NUMA节点,为虚拟机的虚拟核分配虚拟NUMA节点,其中,虚拟NUMA节点中的一个或多个虚拟核使用的计算资源来自同一个NUMA节点下的相同或不同的目标物理核。如虚拟核1使用的计算资源是目标物理核1的,虚拟核2使用的计算资源是目标物理核2的,如果目标物理核1和目标物理核2均属于节点0,则将虚拟核1和虚拟核2设置在虚拟节点0中,即虚拟节点中的虚拟核使用的目标物理核是属于一个节点的。如图9所示,虚拟机中的VCPU0、VCPU2、VCPU4等虚拟核的计算资源主要来自宿主机中,NUMA节点node0下的core0、core6,则,将VCPU0、VCPU2、VCPU4等虚拟核设置在模拟出的虚拟NUMA节点V-node0中。由此,本发明实施例在为虚拟机所有的虚拟核分配完物理核后,确定宿主机中被绑定了虚拟核的物理核,依据各物理核在宿主机实际的NUMA节点中的分布情况,在虚拟机内模拟一致的虚拟NUMA节点,即在虚拟机中将分配到宿主机同NUMA节点上的虚拟核归属于同一个虚拟NUMA节点下,使得虚拟机之上的操作***在并行运行时,可以根据真实的物理核亲和性调度运行上层应用程序,防止在宿主机上运行的虚拟机跨NUMA节点读取内存,避免增加不必要的性能开销,从而让虚拟机性能更高、虚拟机内部负载更低。
本发明第二个实施例还提供了一种资源调度方法,该方法应用于虚拟机,虚拟机运行在宿主机上,宿主机的计算存储架构为NUMA架构,宿主机在NUMA架构下具有多个NUMA节点,NUMA节点包括一个或多个物理核,物理核为宿主机的处理器具有的计算单元,该方法包括:
将调取的目标物理核的计算资源,分配给虚拟机的虚拟核使用,其中,目标物理核由宿主机通过如下步骤确定:
步骤S11:获取各个NUMA节点下物理核当前具有的负载值,负载值包括物理核已被占用的计算资源产生的负载;
步骤S12:根据负载值,计算各个NUMA节点的节点负载,以根据节点负载确定目标NUMA节点,其中,目标NUMA节点的节点负载小于其他NUMA节点的节点负载;
步骤S13:从目标NUMA节点中,根据负载值确定目标物理核,其中,目标物理核的负载值小于其他物理核的负载值。
由此,本发明实施例在每次为虚拟机的虚拟核分配计算资源时,都基于宿主机的物理核当前实际具有的负载值作为判断依据找出节点负载最小的目标NUMA节点后,由宿主机从目标NUMA节点中找出适合分配的目标物理核,即虚拟机优先将当前负载值更低的物理核的计算资源调取给自身的虚拟核使用,使宿主机的处理器计算资源得以充分利用,资源调度策略更精准,实现了在确保宿主机的负载达到均衡的情况下,提升了虚拟机的性能。
在本发明实施例中,步骤S12计算各个NUMA节点的节点负载时,将节点负载为属于相应NUMA节点的一个或多个物理核的负载值之和,作为相应NUMA节点的节点负载。如一宿主机具有node0、node1和node2三个NUMA节点,其中node0节点下具有core0、core3和core6三个物理核,若将物理核的负载值用Lc表示,则各core0、core3和core6的负载值分别为Lc11、Lc12和Lc13,则node0节点的节点负载等于Lc11、Lc12和Lc13之和,即Sum(Lc)。
本发明实施例鉴于宿主机在NUMA架构下具有多个NUMA节点,因此,针对每一次虚拟机的虚拟核分配都基于当前宿主机各NUMA节点及物理核实际具有的负载值作为判断依据,首先计算出当前适合分配的目标NUMA节点(即节点负载最低的NUMA节点),在找到目标NUMA节点后,再从目标NUMA节点中选出负载值最小的物理核作为目标物理核,以将该目标物理核的计算资源分配给虚拟机的其中一个虚拟核使用,资源调度策略更精准,使虚拟核的分配能够基于宿主机的负载均衡的情况下进行,提高了宿主机的资源利用率。
因此,本发明实施例考虑了宿主机在NUMA架构下各NUMA节点的节点负载情况和物理核在各NUMA节点下的分布,优先选择节点负载更低的目标NUMA节点,再选择目标NUMA节点下负载值最小的物理核,因此兼顾了NUMA节点内分配的亲和性因素,尽量降低虚拟机在宿主机上跨NUMA节点读取内存引起的负载增加,避免了不必要的性能开销。
在本发明实施例中,步骤S12根据节点负载确定目标NUMA节点的步骤包括:基于节点负载对NUMA节点进行排序获得第一排序信息,以基于第一排序信息确定目标NUMA节点。如一宿主机具有node0、node1和node2三个NUMA节点,分别计算出各NUMA节点的节点负载后,按节点负载的大小对各个NUMA节点进行排序得到第一排序信息,如图8所示,计算得出node0的节点负载小于node1和node2的节点负载,则将node0确定为目标NUMA节点,进而将目标NUMA节点下负载值最低的物理核作为目标物理核分配给虚拟机。
因此,本发明实施例优先将当前节点负载更低的NUMA节点作为目标NUMA节点,将目标NUMA节点下负载值最低的物理核的计算资源,分配给虚拟机的虚拟核使用,不会将负载值很高的NUMA节点及其下的物理核的计算资源分配给虚拟核使用,确保宿主机各NUMA节点整体的负载均衡,使宿主机下各NUMA节点的计算资源得以充分利用,资源调度策略更精准,在确保宿主机的负载达到均衡的情况下,兼提升了宿主机上运行的虚拟机的性能。
步骤S13中,从目标NUMA节点中,根据负载值确定待分配的目标物理核的步骤包括:确定属于目标NUMA节点的一个或多个物理核,基于负载值对目标NUMA节点中的物理核进行排序获得第二排序信息,以基于第二排序信息确定目标物理核。如图8所示的NUMA节点(node0)中,core3的负载值小于core0的负载值,core0的负载值小于core6的负载值,对node0节点下的各个物理核进行排序获得第二排序信息后,即可依据第二排序信息将负载值最小的core3作为当前分配轮次中的目标物理核。由此,本发明实施例能够将目标NUMA节点下负载值最低的物理核作为目标物理核分配给虚拟机,确保单个NUMA节点的各物理核之间的负载均衡,不会存在有些物理核跑了很多虚拟机进程、有些没有调度虚拟机的情况,确保宿主机负载均衡,进而提升了虚拟机的运行性能。
当虚拟机给下一个虚拟核分配计算资源时,步骤S13将目标物理核的计算资源分配给虚拟核使用之前,如图3所示,本发明实施例提供的方法还包括如下步骤:
步骤S21:确定虚拟机已分配的虚拟核中,使用目标物理核的计算资源的虚拟核的个数,如虚拟机有四个虚拟核已经被分配了计算资源,其中有两个虚拟核的计算资源来自当前的目标物理核,即当前目标物理核在将计算资源分配给虚拟机还未被分配的虚拟核使用之前,该目标物理核已绑定的虚拟核有两个,即使用该目标物理核的计算资源的虚拟核的个数为二。
步骤S22:根据负载值和个数,确定目标物理核的核均负载,其中,核均负载等于负载值与个数之比。即本发明实施例首先确定目标物理核当前已绑定的虚拟核的个数(该个数本发明实施例定义为虚拟核比Vc)。然后根据负载值和个数,确定目标物理核的核均负载,其中,核均负载等于负载值(此处用Lc1标识)与个数之比,即Lc1/Vc。则,如图4所示,步骤S13将目标物理核的计算资源分配给虚拟核使用之后,本发明实施例提供的方法还包括:
步骤S31:将核均负载作为负载增量,累加在目标NUMA节点的节点负载中,获得目标NUMA节点的节点预计负载。
步骤S32:根据节点预计负载和其他NUMA节点的节点负载,确定下一个目标NUMA节点。同理,选择的下一个目标NUMA节点的负载大小是最小的。
步骤S33:从下一个目标NUMA节点中,确定待分配的下一个目标物理核,以将下一个目标物理核的计算资源分配给虚拟机的下一个虚拟核使用。然后重复步骤S21至步骤S22,计算下一个目标物理核的核均负载后,循环步骤31至步骤33,直至虚拟机的所有虚拟核均被分配上计算资源。
因此,本发明实施例对虚拟机的每一次虚拟核分配,也都基于核均负载对各目标物理核的负载现状进行合理预估,即计算物理核的核均负载作为本次分配后该物理核的负载增量,基于该负载增量预估下一次分配前应得到的目标NUMA节点及该目标NUMA节点下目标物理核,由此,为每一次的目标物理核的选择提供了合理的数据支撑,确保目标NUMA节点的各物理核之间的负载均衡,不会存在有些物理核跑了很多虚拟机进程、有些没有调度虚拟机的情况,确保了虚拟机最终的运行性能。
步骤S33从下一个目标NUMA节点中,确定待分配的下一个目标物理核之前,本发明实施例提供的方法还包括:将核均负载作为负载增量,累加在目标物理核的负载值中,获得目标物理核的预计负载。若目标物理核属于下一个目标NUMA节点,则,从下一个目标NUMA节点中,确定待分配的下一个目标物理核的步骤包括:根据预计负载和其他物理核的负载值,确定待分配的下一个目标物理核,无论是预计负载还是负载值,只要该预计负载或负载值最小,则将该预计负载或负载值对应所属的物理核作为下一个目标物理核。若上一个目标物理核不属于下一个目标NUMA节点,则从下一个目标NUMA节点中,根据各个物理核的负载值,确定待分配的下一个目标物理核,下一个目标物理核的负载值的大小是下一个目标NUMA节点中最小的。
为进一步提高虚拟机的运行性能,如图5所示,本发明实施例提供的方法还包括如下步骤:
步骤S41:判断虚拟机具有的预定个数的虚拟核是否均被分配了计算资源,若是,则执行下一步,即执行步骤S42。
步骤S42:根据各个目标物理核所属的NUMA节点,为虚拟机的虚拟核分配虚拟NUMA节点,其中,虚拟NUMA节点中的一个或多个虚拟核使用的计算资源来自同一个NUMA节点下的相同或不同的目标物理核。如虚拟核1使用的计算资源是目标物理核1的,虚拟核2使用的计算资源是目标物理核2的,如果目标物理核1和目标物理核2均属于节点0,则将虚拟核1和虚拟核2设置在虚拟节点0中,即虚拟节点中的虚拟核使用的目标物理核是属于一个节点的。如图9所示,虚拟机中的VCPU0、VCPU2、VCPU4等虚拟核的计算资源主要来自宿主机中,NUMA节点node0下的core0、core6,则,将VCPU0、VCPU2、VCPU4等虚拟核设置在模拟出的虚拟NUMA节点V-node0中。由此,本发明实施例在为虚拟机所有的虚拟核分配完物理核后,确定宿主机中被绑定了虚拟核的物理核,依据各物理核在宿主机实际的NUMA节点中的分布情况,在虚拟机内模拟一致的虚拟NUMA节点,即在虚拟机中将分配到宿主机同NUMA节点上的虚拟核归属于同一个虚拟NUMA节点下,使得虚拟机之上的操作***在并行运行时,可以根据真实的物理核亲和性调度运行上层应用程序,防止在宿主机上运行的虚拟机跨NUMA节点读取内存,避免增加不必要的性能开销,从而让虚拟机性能更高、虚拟机内部负载更低。
如图6所示,本发明第三个实施例还提供了一种资源调度装置,该装置设置于运行有虚拟机的宿主机内,宿主机的计算存储架构为NUMA架构,宿主机在NUMA架构下具有多个NUMA节点,NUMA节点包括一个或多个物理核,物理核为宿主机的处理器具有的计算单元。该装置包括获取模块11、计算模块12和确定模块13。其中,获取模块11用于为虚拟机的虚拟核分配物理核之前,获取各个NUMA节点下物理核当前具有的负载值,负载值包括物理核已被占用的计算资源产生的负载。计算模块12用于根据负载值,计算各个NUMA节点的节点负载,以根据节点负载确定目标NUMA节点,其中,目标NUMA节点的节点负载小于其他NUMA节点的节点负载。确定模块13用于从目标NUMA节点中,根据负载值确定待分配的目标物理核,将目标物理核的计算资源分配给虚拟核使用,其中,目标物理核的负载值小于其他物理核的负载值。
本发明实施例提供的装置在每一分配轮次中为虚拟机的虚拟核分配计算资源时,都基于宿主机的物理核当前具有的负载值作为判断依据找出节点负载最小的目标NUMA节点后,从目标NUMA节点中找出适合分配的目标物理核,即优先将当前负载值更低的物理核的计算资源分配给虚拟机的虚拟核使用,使宿主机的处理器计算资源得以充分利用,资源调度策略更精准,实现了在确保宿主机的负载达到均衡的情况下,兼提升宿主机上运行的虚拟机的性能。
在本发明实施例中,计算模块12计算各个NUMA节点的节点负载时,将节点负载为属于相应NUMA节点的一个或多个物理核的负载值之和,作为相应NUMA节点的节点负载。如一宿主机具有node0、node1和node2三个NUMA节点,其中node0节点下具有core0、core3和core6三个物理核,若将物理核的负载值用Lc表示,则各core0、core3和core6的负载值分别为Lc11、Lc12和Lc13,则node0节点的节点负载等于Lc11、Lc12和Lc13之和,即Sum(Lc)。
本发明实施例鉴于宿主机在NUMA架构下具有多个NUMA节点,因此,针对每一次虚拟机的虚拟核分配都基于当前宿主机各NUMA节点及物理核实际具有的负载值作为判断依据,首先计算出当前适合分配的目标NUMA节点(即节点负载最低的NUMA节点),找到目标NUMA节点后,再从目标NUMA节点中选出负载值最小的物理核作为目标物理核,以将该目标物理核的计算资源分配给虚拟机的其中一个虚拟核使用,资源调度策略更精准,使虚拟核的分配能够基于宿主机的负载均衡的情况下进行,提高了宿主机的资源利用率。
因此,本发明实施例提供的装置考虑了宿主机在NUMA架构下各NUMA节点的节点负载情况和物理核在各NUMA节点下的分布,优先选择节点负载更低的目标NUMA节点,再选择目标NUMA节点下负载值最小的物理核,因此兼顾了NUMA节点内分配的亲和性因素,尽量降低虚拟机在宿主机上跨NUMA节点读取内存引起的负载增加,避免了不必要的性能开销。
在本发明实施例中,计算模块12根据节点负载确定目标NUMA节点的步骤包括:基于节点负载对NUMA节点进行排序获得第一排序信息,以基于第一排序信息确定目标NUMA节点。如一宿主机具有node0、node1和node2三个NUMA节点,分别计算出各NUMA节点的节点负载后,按节点负载的大小对各个NUMA节点进行排序得到第一排序信息,如图8所示,计算得出node0的节点负载小于node1和node2的节点负载,则将node0确定为目标NUMA节点,进而将目标NUMA节点下负载值最低的物理核作为目标物理核分配给虚拟机。
因此,本发明实施例提供的装置通过计算模块12优先将当前节点负载更低的NUMA节点作为目标NUMA节点,通过确定模块13将目标NUMA节点下负载值最低的物理核的计算资源,分配给虚拟机的虚拟核使用,不会将负载值很高的NUMA节点及其下的物理核的计算资源分配给虚拟核使用,确保宿主机各NUMA节点整体的负载均衡,使宿主机下各NUMA节点的计算资源得以充分利用,资源调度策略更精准,在确保宿主机的负载达到均衡的情况下,兼提升了宿主机上运行的虚拟机的性能。
确定模块13从目标NUMA节点中,根据负载值确定待分配的目标物理核的步骤包括:确定属于目标NUMA节点的一个或多个物理核,基于负载值对目标NUMA节点中的物理核进行排序获得第二排序信息,以基于第二排序信息确定目标物理核。如图8所示的NUMA节点(node0)中,core3的负载值小于core0的负载值,core0的负载值小于core6的负载值,对node0节点下的各个物理核进行排序获得第二排序信息后,即可依据第二排序信息将负载值最小的core3作为当前分配轮次中的目标物理核。由此,本发明实施例提供的装置能够将目标NUMA节点下负载值最低的物理核作为目标物理核分配给虚拟机,确保单个NUMA节点的各物理核之间的负载均衡,不会存在有些物理核跑了很多虚拟机进程、有些没有调度虚拟机的情况,确保宿主机负载均衡,进而提升了虚拟机的运行性能。
当本发明实施例提供的装置需要给虚拟机的下一个虚拟核分配计算资源时,确定模块13将目标物理核的计算资源分配给虚拟核使用之前,本发明实施例提供的确定模块13还执行如下方法的步骤:
步骤S21:确定虚拟机已分配的虚拟核中,使用目标物理核的计算资源的虚拟核的个数,如虚拟机有四个虚拟核已经被分配了计算资源,其中有两个虚拟核的计算资源来自当前的目标物理核,即当前目标物理核在将计算资源分配给虚拟机还未被分配的虚拟核使用之前,该目标物理核已绑定的虚拟核有两个,即使用该目标物理核的计算资源的虚拟核的个数为二。
步骤S22:根据负载值和个数,确定目标物理核的核均负载,其中,核均负载等于负载值与个数之比。即本发明实施例首先确定目标物理核当前已绑定的虚拟核的个数(该个数本发明实施例定义为虚拟核比Vc)。然后根据负载值和个数,确定目标物理核的核均负载,其中,核均负载等于负载值(此处用Lc1标识)与个数之比,即Lc1/Vc。则,如图4所示,确定模块13将目标物理核的计算资源分配给虚拟核使用之后,本发明实施例提供的计算模块12还执行如下方法的步骤:
步骤S31:将核均负载作为负载增量,累加在目标NUMA节点的节点负载中,获得目标NUMA节点的节点预计负载。
步骤S32:根据节点预计负载和其他NUMA节点的节点负载,确定下一个目标NUMA节点。
步骤S33:通过确定模块13从下一个目标NUMA节点中,确定待分配的下一个目标物理核,以将下一个目标物理核的计算资源分配给虚拟机的下一个虚拟核使用。然后重复步骤S21至步骤S22,计算下一个目标物理核的核均负载后,循环步骤31至步骤33,直至虚拟机的所有虚拟核均被分配上计算资源。
因此,本发明实施例提供的装置对虚拟机的每一次虚拟核分配,也都基于核均负载对各目标物理核的负载现状进行合理预估,即计算物理核的核均负载作为本次分配后该物理核的负载增量,基于该负载增量预估下一次分配前应得到的目标NUMA节点及该目标NUMA节点下目标物理核,由此,为每一次的目标物理核的选择提供了合理的数据支撑,确保目标NUMA节点的各物理核之间的负载均衡,不会存在有些物理核跑了很多虚拟机进程、有些没有调度虚拟机的情况。
计算模块12通过确定模块13从下一个目标NUMA节点中,确定待分配的下一个目标物理核之前,本发明实施例提供的计算模块12还用于将核均负载作为负载增量,累加在目标物理核的负载值中,获得目标物理核的预计负载。若目标物理核属于下一个目标NUMA节点,则,从下一个目标NUMA节点中,确定待分配的下一个目标物理核的步骤包括:根据预计负载和其他物理核的负载值,确定待分配的下一个目标物理核,无论是预计负载还是负载值,只要该预计负载或负载值最小,则将该预计负载或负载值对应所属的物理核作为下一个目标物理核。若上一个目标物理核不属于下一个目标NUMA节点,则从下一个目标NUMA节点中,根据各个物理核的负载值,确定待分配的下一个目标物理核,下一个目标物理核的负载值的大小是下一个目标NUMA节点中最小的。
为进一步提高虚拟机的运行性能,如图6所示,本发明实施例提供的装置还包括判断模块14和虚拟节点配置模块15。其中,判断模块14用于判断虚拟机具有的预定个数的虚拟核是否均被分配了计算资源,若是,则通过虚拟节点配置模块15根据各个目标物理核所属的NUMA节点,为虚拟机的虚拟核分配虚拟NUMA节点,其中,虚拟NUMA节点中的一个或多个虚拟核使用的计算资源来自同一个NUMA节点下的相同或不同的目标物理核。如虚拟核1使用的计算资源是目标物理核1的,虚拟核2使用的计算资源是目标物理核2的,如果目标物理核1和目标物理核2均属于节点0,则将虚拟核1和虚拟核2设置在虚拟节点0中,即虚拟节点中的虚拟核使用的目标物理核是属于一个节点的。如图9所示,虚拟机中的VCPU0、VCPU2、VCPU4等虚拟核的计算资源主要来自宿主机中,NUMA节点node0下的core0、core6,则,将VCPU0、VCPU2、VCPU4等虚拟核设置在模拟出的虚拟NUMA节点V-node0中。由此,本发明实施例在为虚拟机所有的虚拟核分配完物理核后,确定宿主机中被绑定了虚拟核的物理核,依据各物理核在宿主机实际的NUMA节点中的分布情况,在虚拟机内模拟一致的虚拟NUMA节点,即在虚拟机中将分配到宿主机同NUMA节点上的虚拟核归属于同一个虚拟NUMA节点下,使得虚拟机之上的操作***在并行运行时,可以根据真实的物理核亲和性调度运行上层应用程序,防止在宿主机上运行的虚拟机跨NUMA节点读取内存,避免增加不必要的性能开销,从而让虚拟机性能更高、虚拟机内部负载更低。
本发明第四个实施例还提供了一种宿主机,宿主机运行有虚拟机,宿主机设置有本发明第三个实施例提供的资源调度装置,该资源调度装置的结构具体请参见本发明第三个实施例提供的内容,本发明实施例在此不再赘述。
本发明第五个实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现本发明第一个实施例提供的资源调度方法的步骤,资源调度方法具体请参见本发明第一个实施例提供的内容,本发明实施例在此不再赘述。
本发明第六个实施例还提供了一种计算机程序产品,计算机程序产品包括计算机程序,计算机程序被处理器执行时实现本发明第一个实施例提供的资源调度方法的步骤,资源调度方法具体请参见本发明第一个实施例提供的内容,本发明实施例在此不再赘述。
本发明第七个实施例结合上述六个实施例,在宿主机的计算存储架构为NUMA架构时,还提供了一种NUMA架构下基于负载均衡的资源调度方法,以利用该方法真正解决宿主机负载不均、虚拟机负载过高等问题。
如图7所示,图7为宿主机在NUMA架构下的NUMA节点与物理核(core)之间关系的举例,本发明实施例提供的宿主机在NUMA架构下具有三个NUMA节点,即node0、node1、node2,各NUMA节点下的物理核如图7所示,如node0下的物理核有编号为core0、core3、core6的三个物理核,node1下的物理核有编号为core1、core4和core7的三个物理核,每个NUMA节点均有单独的内存空间。若程序运行所在的物理核属于不同的NUMA节点,会存在跨NUMA节点访问不同内存空间的情况,效率低、增加CPU负载。因此,程序在同一NUMA节点的物理核上运行效率更高,对此,本发明实施例所要解决的问题即:如何在确保宿主机各NUMA节点、物理核负载均衡的情况下,兼提升其上所运行虚拟机的性能。
首先,本发明实施例提供了如下度量定义:
物理核负载Lc:物理核当前具有的负载值(进行每一轮次的物理核的调度时,都要获取各个物理核在当前调度轮次具有的负载值,如其中一个物理核的当前负载值可能是首次分配前得到的负载值,也可能是该物理核已经分配有虚拟核后得到的预计负载)。
虚拟核比Vc:物理核当前所绑定的虚拟核的个数。
核均负载Ac:物理核上当前平均虚拟核所占用的负载值,即Lc/Vc。
节点负载Ln:隶属于该NUMA节点的所有物理核的当前负载值之和,即Sum(Lc)。
首先,对宿主机内的各NUMA节点进行双重排序:
a.对每个NUMA节点中的各物理核分别计算其当前负载值Lc,并在相应NUMA节点内对各物理核按负载值Lc的大小进行排序,获得第二排序信息。
b.分别计算宿主机中的各NUMA节点当前的节点负载Ln,并进行排序,获得第一排序信息。
本发明实施例提供的基于负载均衡的资源调度方法的算法流程主要分三个阶段,下面分别介绍:
阶段一:在所有虚拟机未调度之前对宿主机进行资源初始化的操作,设置所有NUMA节点中的所有物理核的虚拟核比Vc=0,即所有物理核均还未绑定虚拟核。
阶段二:虚拟机kvm虚拟核调度,以图8为例,调度一个有8个虚拟核的虚拟机kvm,分配逻辑如下:
步骤1)、全局执行双重排序,即进行双重排序得到第一排序信息和第二排序信息。
步骤2)、基于第一排序信息选择当前节点负载Ln最小的NUMA节点为目标NUMA节点,如node0。即本发明实施例考虑了宿主机实际的NUMA节点的负载情况和物理核在各NUMA节点的分布,优先选择节点负载最小的NUMA节点,再选择该NUMA节点下首次分配前负载值最小的物理核,兼顾了NUMA节点内分配的亲和性因素,尽量降低跨NUMA节点读取内存引起的负载增加。
步骤3)、选择该目标NUMA节点下当前负载值(用Lc1表示)最小的物理核作为目标物理核,如图8中所示的core3。
步骤4)、将此虚拟机的第一个虚拟核绑定在该目标物理核core3上。
步骤5)、计算该物理核core3的核均负载Ac,即Lc1/Vc,此时,由于该物理核core3再次之前未将计算资源分配给任一虚拟核,即Vc=0时(宿主机第一次分配物理核时),令Ac=Lc1。
步骤6)、对core3的虚拟核比Vc执行加1计数操作,以便在给虚拟机的第二个虚拟核分配计算资源后,给第二个虚拟核提供计算资源的物理核计算核均负载提供虚拟核比Vc的数据来源。
步骤7)、对core3的负载值Lc执行加Ac操作,以更新调整该物理核的预计负载,便于在下一次分配时依据物理核在累加该核均负载后得到的预计负载,来确定需要选定的下一个目标物理核。该预计负载为分配了虚拟核的物理核累加了核均负载后得到的负载值,如在第二次分配的时候,因物理核core3绑定了一个虚拟核,则第二次给相应虚拟核分配计算资源时,对物理核core3与其他物理核计算当前分配轮次的负载值时,物理核core3的当前负载值(即预计负载)等于各操作***、应用程序等运行产生的负载加上计算得到的核均负载Ac的值,其他物理核的负载值仍是各操作***、应用程序等运行产生的负载。依次类推,每轮次分配虚拟核时,针对已绑定有虚拟核的物理核的负载值均会基于相应物理核的核均负载来计算其当前分配轮次的预计负载的大小,并基于各物理核的负载值、预计负载去计算当前分配轮次下NUMA节点的节点负载(即进行步骤8)的操作)。
步骤8)、对NUMA节点node0的节点负载Ln执行加Ac操作,以更新调整该node0的节点预计负载,便于在下一次分配时依据node0在累加该核均负载后得到的负载值,来确定需要选定的下一个目标NUMA节点。
步骤9)、循环步骤1)至步骤8)分配虚拟机的第二个虚拟核,直至8个虚拟核分配完毕结束。
阶段三:虚拟机kvm的NUMA架构适配:
以图9为例,完成一个有8个虚拟核的虚拟机分配后,针对该虚拟机的NUMA架构适配逻辑如下:
1)统计已分配到虚拟核的宿主机真实物理核所属的NUMA节点,即node0至node2。
2)在虚拟机中也模拟与宿主机相对应的3个虚拟NUMA节点(用v-node表示),即v-node0至v-node2。
3)在虚拟机中将分配到宿主机同NUMA节点上的虚拟核归属于同一个虚拟NUMA节点v-node下。如图9所示,虚拟机中的VCPU0、VCPU2、VCPU4等虚拟核的计算资源主要来自宿主机中,NUMA节点node0下的物理核core0、物理核core6,则,将VCPU0、VCPU2、VCPU4等虚拟核设置在模拟出的虚拟NUMA节点V-node0中。虚拟机中的VCPU3和VCPU5等虚拟核的计算资源主要来自宿主机中,NUMA节点node1下的物理核core1、物理核core7,则,将VCPU3和VCPU5等虚拟核设置在模拟出的虚拟NUMA节点V-node1中。本发明实施例选出分配的物理核后,依据实际宿主机内划分的NUMA节点,在虚拟机内模拟一致的虚拟NUMA节点,使得虚拟机之上的操作***在并行运行时,可以根据真实的物理核亲和性调度运行上层应用程序,让虚拟机性能更高、虚拟机内部负载更低。
所有虚拟机的虚拟核调度均按阶段二和阶段三步骤执行。
相比于现有技术中的轮询调度方法,本发明实施例针对每一次虚拟机的虚拟核分配都基于当前宿主机各NUMA节点及物理核的负载值作判断依据,计算出当前适合分配的物理核,策略更精准。针对单一虚拟机的每一次虚拟核分配,也都基于对当前宿主机各NUMA节点及物理核负载现状的合理预估(计算核均负载Ac作为本次分配后相应物理核的负载增量之一),并依赖此预估分配下一个虚拟核,有合理的数据评估。
因此,使用本发明实施例作为虚拟机CPU调度策略后:
在宿主机层面:各NUMA节点间负载相对均衡,同NUMA节点下的各物理核负载也相对均衡。
虚拟机层面:***内负载降低、***性能提升。
终上,本发明实施例根据实际宿主机的NUMA架构及各物理核的负载,对宿主机的负载采用双重排序的策略,选取当前最适合的目标NUMA节点下的物理核做调度,并根据宿主机的NUMA节点分布,模拟虚拟机的对应NUMA节点分布,以达到宿主机CPU资源负载的均衡及虚拟机性能的提升。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (11)
1.一种资源调度方法,其特征在于,所述方法应用于运行有虚拟机的宿主机,所述宿主机的计算存储架构为NUMA架构,所述宿主机在所述NUMA架构下具有多个NUMA节点,所述NUMA节点包括一个或多个物理核,所述物理核为所述宿主机的处理器具有的计算单元,所述方法包括:
为虚拟机的虚拟核分配物理核之前,获取各个所述NUMA节点下所述物理核当前具有的负载值,所述负载值包括所述物理核已被占用的计算资源产生的负载;
根据所述负载值,计算各个所述NUMA节点的节点负载,以根据所述节点负载确定目标NUMA节点,其中,所述目标NUMA节点的所述节点负载小于其他所述NUMA节点的所述节点负载;
从所述目标NUMA节点中,根据所述负载值确定待分配的目标物理核,将所述目标物理核的计算资源分配给所述虚拟核使用,其中,所述目标物理核的所述负载值小于其他所述物理核的所述负载值。
2.根据权利要求1所述的方法,其特征在于,根据所述节点负载确定目标NUMA节点的步骤包括:
基于所述节点负载对所述NUMA节点进行排序获得第一排序信息,以基于所述第一排序信息确定所述目标NUMA节点。
3.根据权利要求1所述的方法,其特征在于,从所述目标NUMA节点中,根据所述负载值确定待分配的目标物理核的步骤包括:
确定属于所述目标NUMA节点的一个或多个所述物理核,基于所述负载值对所述目标NUMA节点中的所述物理核进行排序获得第二排序信息,以基于所述第二排序信息确定所述目标物理核。
4.根据权利要求1所述的方法,其特征在于,将所述目标物理核的计算资源分配给所述虚拟核使用之前,所述方法还包括:
确定所述虚拟机已分配的虚拟核中,使用所述目标物理核的计算资源的所述虚拟核的个数;
根据所述负载值和所述个数,确定所述目标物理核的核均负载,其中,所述核均负载等于所述负载值与所述个数之比;
则,将所述目标物理核的计算资源分配给所述虚拟核使用之后,所述方法还包括:
将所述核均负载作为负载增量,累加在所述目标NUMA节点的所述节点负载中,获得所述目标NUMA节点的节点预计负载;
根据所述节点预计负载和其他所述NUMA节点的所述节点负载,确定下一个目标NUMA节点;
从所述下一个目标NUMA节点中,确定待分配的下一个目标物理核,以将所述下一个目标物理核的计算资源分配给所述虚拟机的下一个虚拟核使用。
5.根据权利要求4所述的方法,其特征在于,从所述下一个目标NUMA节点中,确定待分配的下一个目标物理核之前,所述方法还包括:
将所述核均负载作为负载增量,累加在所述目标物理核的所述负载值中,获得所述目标物理核的预计负载;
若所述目标物理核属于所述下一个目标NUMA节点,则,从所述下一个目标NUMA节点中,确定待分配的下一个目标物理核的步骤包括:
根据所述预计负载和其他所述物理核的所述负载值,确定待分配的所述下一个目标物理核。
6.根据权利要求1至5任一所述的方法,其特征在于,所述方法还包括:
判断所述虚拟机具有的预定个数的所述虚拟核是否均被分配了计算资源,若是,则执行下一步;
根据各个所述目标物理核所属的所述NUMA节点,为所述虚拟机的所述虚拟核分配虚拟NUMA节点,其中,所述虚拟NUMA节点中的一个或多个所述虚拟核使用的计算资源来自同一个所述NUMA节点下的相同或不同的所述目标物理核。
7.一种资源调度方法,其特征在于,所述方法应用于虚拟机,所述虚拟机运行在宿主机上,所述宿主机的计算存储架构为NUMA架构,所述宿主机在所述NUMA架构下具有多个NUMA节点,所述NUMA节点包括一个或多个物理核,所述物理核为所述宿主机的处理器具有的计算单元,所述方法包括:
将调取的目标物理核的计算资源,分配给所述虚拟机的虚拟核使用,其中,所述目标物理核由所述宿主机通过如下步骤确定:
获取各个所述NUMA节点下所述物理核当前具有的负载值,所述负载值包括所述物理核已被占用的计算资源产生的负载;
根据所述负载值,计算各个所述NUMA节点的节点负载,以根据所述节点负载确定目标NUMA节点,其中,所述目标NUMA节点的所述节点负载小于其他所述NUMA节点的所述节点负载;
从所述目标NUMA节点中,根据所述负载值确定所述目标物理核,其中,所述目标物理核的所述负载值小于其他所述物理核的所述负载值。
8.一种资源调度装置,其特征在于,所述装置设置于运行有虚拟机的宿主机内,所述宿主机的计算存储架构为NUMA架构,所述宿主机在所述NUMA架构下具有多个NUMA节点,所述NUMA节点包括一个或多个物理核,所述物理核为所述宿主机的处理器具有的计算单元,所述装置包括:
获取模块(11),用于为虚拟机的虚拟核分配物理核之前,获取各个所述NUMA节点下所述物理核当前具有的负载值,所述负载值包括所述物理核已被占用的计算资源产生的负载;
计算模块(12),用于根据所述负载值,计算各个所述NUMA节点的节点负载,以根据所述节点负载确定目标NUMA节点,其中,所述目标NUMA节点的所述节点负载小于其他所述NUMA节点的所述节点负载;
确定模块(13),用于从所述目标NUMA节点中,根据所述负载值确定待分配的目标物理核,将所述目标物理核的计算资源分配给所述虚拟核使用,其中,所述目标物理核的所述负载值小于其他所述物理核的所述负载值。
9.一种宿主机,其特征在于,所述宿主机运行有虚拟机,所述宿主机设置有权利要求7所述的资源调度装置。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至6任一所述的方法步骤。
11.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至6任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310127349.0A CN116302327A (zh) | 2023-02-16 | 2023-02-16 | 资源调度方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310127349.0A CN116302327A (zh) | 2023-02-16 | 2023-02-16 | 资源调度方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116302327A true CN116302327A (zh) | 2023-06-23 |
Family
ID=86833404
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310127349.0A Pending CN116302327A (zh) | 2023-02-16 | 2023-02-16 | 资源调度方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116302327A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117056431A (zh) * | 2023-10-11 | 2023-11-14 | 中电数创(北京)科技有限公司 | 基于hbase亲和性计算的二阶段调度的分布式执行方法和*** |
-
2023
- 2023-02-16 CN CN202310127349.0A patent/CN116302327A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117056431A (zh) * | 2023-10-11 | 2023-11-14 | 中电数创(北京)科技有限公司 | 基于hbase亲和性计算的二阶段调度的分布式执行方法和*** |
CN117056431B (zh) * | 2023-10-11 | 2024-02-09 | 中电数创(北京)科技有限公司 | 基于hbase亲和性计算的二阶段调度的分布式执行方法和*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9262181B2 (en) | Process grouping for improved cache and memory affinity | |
US7945913B2 (en) | Method, system and computer program product for optimizing allocation of resources on partitions of a data processing system | |
CN103226467B (zh) | 数据并行处理方法、***及负载均衡调度器 | |
Jung et al. | Agent-based adaptive resource allocation on the cloud computing environment | |
JP2008047126A (ja) | 精密なcpu消費量データを用いてアフィニティをディスパッチする負荷バランサ | |
CN111124687B (zh) | 一种cpu资源预留方法、装置及其相关设备 | |
US7698529B2 (en) | Method for trading resources between partitions of a data processing system | |
CN104008013A (zh) | 一种核资源分配方法、装置及众核*** | |
US8527988B1 (en) | Proximity mapping of virtual-machine threads to processors | |
CN108900626B (zh) | 一种云环境下数据存储方法、装置及*** | |
US10313265B1 (en) | System and methods for sharing memory subsystem resources among datacenter applications | |
CN105389211B (zh) | 适用于numa架构的内存分配方法及延时感知-内存分配装置 | |
JP2008191949A (ja) | マルチコアシステムおよびマルチコアシステムの負荷分散方法 | |
US20170339069A1 (en) | Allocating Cloud Computing Resources In A Cloud Computing Environment | |
JP2022539955A (ja) | タスクスケジューリング方法及び装置 | |
CN103425536A (zh) | 一种面向分布式***性能测试的测试资源管理方法 | |
CN115562870B (zh) | 一种集群的任务节点资源构建方法 | |
US9189279B2 (en) | Assignment method and multi-core processor system | |
CN116302327A (zh) | 资源调度方法及相关设备 | |
US9563532B1 (en) | Allocation of tasks in large scale computing systems | |
US20190114079A1 (en) | Apparatus for managing disaggregated memory and method thereof | |
Rampersaud et al. | Sharing-aware online algorithms for virtual machine packing in cloud environments | |
CN116048773B (zh) | 一种基于波函数坍缩的分布式协作任务指派方法和*** | |
US20120042322A1 (en) | Hybrid Program Balancing | |
JP5257077B2 (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 |