掌桥专利:专业的专利平台
掌桥专利
首页

基于NUMA架构的虚拟机调度方法、装置、设备及存储介质

文献发布时间:2024-04-18 20:02:40


基于NUMA架构的虚拟机调度方法、装置、设备及存储介质

技术领域

本申请涉及虚拟化技术领域,尤其涉及一种基于NUMA架构的虚拟机调度方法、装置、设备及存储介质。

背景技术

伴随着虚拟机技术的快速发展,尤其是近几年“云计算”的快速普及,越来越多的公司开始将自己的业务迁移或者部署在云上,以达到降低开发成本、提高运维效率、增强网络安全的目的。虚拟机技术通过采用硬件虚拟化技术,可以让多个上层系统共享底层硬件资源,以达到节省资源的目的。

在单核CPU(Central Processing Unit,中央处理器)遇到瓶颈的现状下,多核CPU得到了长远发展,多核CPU在带来较高性能提升的同时也带来了一个问题:多核CPU对内存访问的竞争。

NUMA(Non-Uniform Memory Access,非一致性内存访问架构)架构通过设置多个独立模块,每个模块拥有独立的CPU和与其直连的“本地内存”,不同模块的CPU也可以通过总线访问不和自己直连的“远端内存”或者“邻端内存”。这种方式能有效降低多CPU对内存访问的竞争,同时借助“本地内存”降低访问延迟。

基于NUMA架构的虚拟机调度通过选择NUMA节点来获取CPU和内存资源,选择一个合适的NUMA节点可以提高虚拟机的运行效率。然而现有的基于NUMA架构的虚拟机调度并没有考虑到NUMA架构的特性,将虚拟机的CPU和内存分别分配到不同的NUMA节点上,这样CPU访问“远端内存”的次数变多,导致访问延迟、总线冲突概率增加、效率降低等问题。同时,现有虚拟机运行状态变化频繁,对内存的要求始终存在变化,通用的调度算法无法准确感知虚拟机负载情况,往往只有等待问题发生了才会着手解决。因此,如何根据预测得到的虚拟机下一阶段的任务特性,提前进行虚拟机的动态调度,以降低虚拟机内存访问延迟成为目前亟待解决的技术问题。

发明内容

本申请提供了一种基于NUMA架构的虚拟机调度方法、装置、设备及存储介质,根据预测得到的虚拟机下一阶段的任务特性,提前进行虚拟机的动态调度,降低了虚拟机内存访问延迟。

第一方面,本申请提供了一种基于NUMA架构的虚拟机调度方法,所述方法包括:

对虚拟机进行初始化调度,以进入初始运行状态;

监测所述虚拟机在所述初始运行状态下的内存状态与中央处理器CPU状态,并分别根据预设预测算法预测所述虚拟机在下一阶段的任务特性,并比较所述任务特性中的资源负载状态与初始非一致性内存访问架构NUMA节点负载阈值的关系;

在所述资源负载状态超过所述初始NUMA节点负载阈值的情况下,基于所述任务特性,生成虚拟机调度策略,并根据所述虚拟机调度策略对所述虚拟机进行调度。

进一步地,对虚拟机进行初始化调度,以进入初始运行状态之前,包括:

计算各所述NUMA节点的资源系数,并对各所述资源系数进行降序排列,生成NUMA节点列表;

根据预设节点适应算法,将所述NUMA节点列表中各NUMA节点按照资源系数降序规则,分别与所述虚拟机的所述配置参数信息进行匹配;

将所述NUMA节点列表中与所述配置参数信息相匹配的NUMA节点确定为所述初始NUMA节点。

进一步地,根据预设节点适应算法,将所述NUMA节点列表中各NUMA节点按照资源系数降序规则,分别与所述虚拟机的所述配置参数信息进行匹配之后,包括:

在所述NUMA节点列表中不存在与所述配置参数信息相匹配的NUMA节点的情况下,基于预设分配原则,将所述虚拟机分配至所述预设待分配链表的随机NUMA节点中,并将所述随机NUMA节点确定为所述初始NUMA节点。

进一步地,预设预测算法包括CPU需求预测算法和内存需求预测算法,所述监测所述虚拟机在所述初始运行状态下的内存状态与中央处理器CPU状态,并分别根据预设预测算法预测所述虚拟机在下一阶段的任务特性,包括:

分别通过所述CPU需求预测算法和所述内存需求预测算法,对所述虚拟机的CPU需求与内存需求进行预测,得到CPU需求预测值与内存需求预测值;

通过预设任务特性函数、所述CPU需求预测值与所述内存需求预测值,确定所述虚拟机在下一阶段的所述任务特性。

进一步地,资源负载状态包括CPU负载状态与内存负载状态,所述虚拟机调度策略包括第一调度策略和第二调度策略,所述在所述资源负载状态超过所述初始NUMA节点负载阈值的情况下,基于所述任务特性,生成虚拟机调度策略,包括:

根据预设优先级制定规则,确定所述虚拟机的调度优先级,并根据所述调度优先级、所述CPU负载状态与内存负载状态,生成第一调度策略;

基于所述第一调度策略,判断所述虚拟机的CPU和内存是否分配至相同NUMA节点;

若所述虚拟机的CPU和内存未分配至相同NUMA节点,则根据预设远端内存调度规则,生成所述第二调度策略。

进一步地,若所述虚拟机的CPU和内存未分配至相同NUMA节点,则根据预设远端内存调度规则,生成所述第二调度策略之后,包括:

通过所述第二调度策略对所述虚拟机进行调度后,若所述虚拟机的CPU和/或内存未分配至相同NUMA节点,则基于节点负载均衡原则将所述虚拟机随机分配至NUMA节点。

进一步地,若所述虚拟机的CPU和内存未分配至相同NUMA节点,则根据预设远端内存调度规则,生成所述第二调度策略之后,包括:

计算通过所述第一调度策略对所述虚拟机进行调度前的初始资源负载系数和通过所述虚拟机调度策略进行调度后的当前资源负载系数;

在所述当前资源负载系数小于所述初始资源负载系数的情况下,按照所述虚拟机调度策略对所述虚拟机进行调度。

第二方面,本申请还提供了一种基于NUMA架构的虚拟机调度装置,所述装置包括:

初始化调度模块,用于对虚拟机进行初始化调度,以进入初始运行状态;

任务特性预测模块,用于监测所述虚拟机在所述初始运行状态下的内存状态与中央处理器CPU状态,并分别根据预设预测算法预测所述虚拟机在下一阶段的任务特性,并比较所述任务特性中的资源负载状态与初始非一致性内存访问架构NUMA节点负载阈值的关系;

调度策略生成模块,用于在所述资源负载状态超过所述初始NUMA节点负载阈值的情况下,基于所述任务特性,生成虚拟机调度策略,并根据所述虚拟机调度策略对所述虚拟机进行调度。

第三方面,本申请还提供了一种计算机设备,所述计算机设备包括存储器和处理器;所述存储器用于存储计算机程序;所述处理器,用于执行所述计算机程序并在执行所述计算机程序时实现如上述的基于NUMA架构的虚拟机调度方法。

第四方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如上述的基于NUMA架构的虚拟机调度方法。

本申请公开了一种基于NUMA架构的虚拟机调度方法、装置、设备及存储介质,所述基于NUMA架构的虚拟机调度方法包括对虚拟机进行初始化调度,以进入初始运行状态;监测所述虚拟机在所述初始运行状态下的内存状态与中央处理器CPU状态,并分别根据预设预测算法预测所述虚拟机在下一阶段的任务特性,并比较所述任务特性中的资源负载状态与初始非一致性内存访问架构NUMA节点负载阈值的关系;在所述资源负载状态超过所述初始NUMA节点负载阈值的情况下,基于所述任务特性,生成虚拟机调度策略,并根据所述虚拟机调度策略对所述虚拟机进行调度。通过上述方式,本申请在虚拟机的初始运行状态下,根据内存状态与CPU状态对虚拟机下一阶段的任务特性进行预测,并根据下一阶段的任务特性与初始NUMA节点负载阈值的关系,制定相应的虚拟机调度策略,提前进行虚拟机的动态调度,降低了虚拟机内存访问延迟。

附图说明

为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请的第一实施例提供的一种基于NUMA架构的虚拟机调度方法的示意流程图;

图2是本申请的第二实施例提供的一种基于NUMA架构的虚拟机调度方法的示意流程图;

图3是本申请的第三实施例提供的一种基于NUMA架构的虚拟机调度方法的示意流程图;

图4为本申请的实施例提供的一种基于NUMA架构的虚拟机调度装置的示意性框图;

图5为本申请的实施例提供的一种计算机设备的结构示意性框图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。

应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

本申请的实施例提供了一种基于NUMA架构的虚拟机调度方法、装置、设备及存储介质。其中,该基于NUMA架构的虚拟机调度方法可以应用于服务器中,在虚拟机的初始运行状态下,根据内存状态与CPU状态对虚拟机下一阶段的任务特性进行预测,并根据下一阶段的任务特性与初始NUMA节点负载阈值的关系,制定相应的虚拟机调度策略,提前进行虚拟机的动态调度,降低了虚拟机内存访问延迟。其中,该服务器可以为独立的服务器,也可以为服务器集群。

下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。

请参阅图1,图1是本申请的第一实施例提供的一种基于NUMA架构的虚拟机调度方法的示意流程图。该基于NUMA架构的虚拟机调度方法可应用于服务器中,在虚拟机的初始运行状态下,根据内存状态与CPU状态对虚拟机下一阶段的任务特性进行预测,并根据下一阶段的任务特性与初始NUMA节点负载阈值的关系,制定相应的虚拟机调度策略,提前进行虚拟机的动态调度,降低了虚拟机内存访问延迟。

如图1所示,该基于NUMA架构的虚拟机调度方法具体包括步骤S10至步骤S30。

步骤S10、对虚拟机进行初始化调度,以进入初始运行状态;

步骤S20、监测所述虚拟机在所述初始运行状态下的内存状态与中央处理器CPU状态,并分别根据预设预测算法预测所述虚拟机在下一阶段的任务特性,并比较所述任务特性中的资源负载状态与初始非一致性内存访问架构NUMA节点负载阈值的关系;

在一个实施例中,对虚拟机运行时各个虚拟机的内存和CPU状态进行记录,并存储到数据库中。采用定时任务对该节点下一阶段的任务特性进行预测,通过采用“时序预测”等算法对虚拟机的CPU和内存需求进行预测。同时,考虑到机器学习和深度学习的不同特性,本实施例同时采用两种不同领域的算法对虚拟机的CPU和内存需求进行预测,并取其加权平均值得到如下公式:

其中表示具体的预测模型或函数,常见的时序预测算法有LSTNET、PROPHET、Holt-Winters等,通过采用多算法预测,能有效规避不同模型或算法的缺点,增加预测结果的准确性和稳定性。

针对预测结果判断其任务特性,考虑其当前CPU或内存的增长率来判断其下一阶段的任务特性,公式如下:

其中,表示下一阶段任务对内存需求增加,表示下一阶段任务对CPU需求增加。

步骤S30、在所述资源负载状态超过所述初始NUMA节点负载阈值的情况下,基于所述任务特性,生成虚拟机调度策略,并根据所述虚拟机调度策略对所述虚拟机进行调度。

在一个实施例中,在虚拟机所绑定的NUMA节点资源负载增高的场景下,对虚拟机执行调度,减少CPU对“远端内存”的访问,从而降低内存访问延迟,同时达到负载均衡的效果,提高虚拟机工作效率。

在虚拟机中,为虚拟机分配的CPU其实是虚拟的VCPU,NUMA节点的分配也是虚拟的VNUMA节点,本发明的NUMA节点调度均指的是虚拟的VNUMA节点调度。

虚拟机调度考虑的因素主要有三个,分别是:当前NUMA节点的负载情况、虚拟机对内存执行“远端访问”的延迟、虚拟机的优先级。

本实施例公开了一种基于NUMA架构的虚拟机调度方法、装置、设备及存储介质,所述基于NUMA架构的虚拟机调度方法包括对虚拟机进行初始化调度,以进入初始运行状态;监测所述虚拟机在所述初始运行状态下的内存状态与中央处理器CPU状态,并分别根据预设预测算法预测所述虚拟机在下一阶段的任务特性,并比较所述任务特性中的资源负载状态与初始非一致性内存访问架构NUMA节点负载阈值的关系;在所述资源负载状态超过所述初始NUMA节点负载阈值的情况下,基于所述任务特性,生成虚拟机调度策略,并根据所述虚拟机调度策略对所述虚拟机进行调度。通过上述方式,本申请在虚拟机的初始运行状态下,根据内存状态与CPU状态对虚拟机下一阶段的任务特性进行预测,并根据下一阶段的任务特性与初始NUMA节点负载阈值的关系,制定相应的虚拟机调度策略,提前进行虚拟机的动态调度,降低了虚拟机内存访问延迟。

请参阅图2,图2是本申请的第二实施例提供的一种基于NUMA架构的虚拟机调度方法的示意流程图。该基于NUMA架构的虚拟机调度方法可应用于服务器中,在虚拟机的初始运行状态下,根据内存状态与CPU状态对虚拟机下一阶段的任务特性进行预测,并根据下一阶段的任务特性与初始NUMA节点负载阈值的关系,制定相应的虚拟机调度策略,提前进行虚拟机的动态调度,降低了虚拟机内存访问延迟。

基于图1所示实施例,本实施例如图2所示,步骤S10之前具体包括步骤S01至步骤S03。

步骤S01、计算各所述NUMA节点的资源系数,并对各所述资源系数进行降序排列,生成NUMA节点列表;

步骤S02、根据预设节点适应算法,将所述NUMA节点列表中各NUMA节点按照资源系数降序规则,分别与所述虚拟机的所述配置参数信息进行匹配;

步骤S03、将所述NUMA节点列表中与所述配置参数信息相匹配的NUMA节点确定为所述初始NUMA节点。

基于图2所示实施例,本实施例中,步骤S02之后,还包括:

在所述NUMA节点列表中不存在与所述配置参数信息相匹配的NUMA节点的情况下,基于预设分配原则,将所述虚拟机分配至所述预设待分配链表的随机NUMA节点中,并将所述随机NUMA节点确定为所述初始NUMA节点。

在一个实施例中,用户在购买虚拟机时,通常会指定虚拟机相关的配置信息,如CPU核心数、内存容量等。初始化调度针对用户购买的虚拟机和NUMA节点的空闲状况,选择满足用户配置需求的NUMA节点配置给虚拟机。

通过维护NUMA节点链表,按照资源系数λ

(1)遍历按资源系数λ

(2)遍历“待分配链表”,将虚拟机按照NUMA节点负载均衡的原则随机分配到NUMA节点中。

本实施例公开了一种基于NUMA架构的虚拟机调度方法、装置、设备及存储介质,所述基于NUMA架构的虚拟机调度方法包括计算各所述NUMA节点的资源系数,并对各所述资源系数进行降序排列,生成NUMA节点列表;根据预设节点适应算法,将所述NUMA节点列表中各NUMA节点按照资源系数降序规则,分别与所述虚拟机的所述配置参数信息进行匹配;将所述NUMA节点列表中与所述配置参数信息相匹配的NUMA节点确定为所述初始NUMA节点;在所述NUMA节点列表中不存在与所述配置参数信息相匹配的NUMA节点的情况下,基于预设分配原则,将所述虚拟机分配至所述预设待分配链表的随机NUMA节点中,并将所述随机NUMA节点确定为所述初始NUMA节点。通过上述方式,本申请在虚拟机的初始运行状态下,根据内存状态与CPU状态对虚拟机下一阶段的任务特性进行预测,并根据下一阶段的任务特性与初始NUMA节点负载阈值的关系,制定相应的虚拟机调度策略,提前进行虚拟机的动态调度,降低了虚拟机内存访问延迟。

基于图1所示实施例,本实施例中,步骤S20包括:

分别通过所述CPU需求预测算法和所述内存需求预测算法,对所述虚拟机的CPU需求与内存需求进行预测,得到CPU需求预测值与内存需求预测值;

通过预设任务特性函数、所述CPU需求预测值与所述内存需求预测值,确定所述虚拟机在下一阶段的所述任务特性。

请参阅图3,图3是本申请的第三实施例提供的一种基于NUMA架构的虚拟机调度方法的示意流程图。该基于NUMA架构的虚拟机调度方法可应用于服务器中,在虚拟机的初始运行状态下,根据内存状态与CPU状态对虚拟机下一阶段的任务特性进行预测,并根据下一阶段的任务特性与初始NUMA节点负载阈值的关系,制定相应的虚拟机调度策略,提前进行虚拟机的动态调度,降低了虚拟机内存访问延迟。

基于图1所示实施例,本实施例如图3所示,步骤S30包括步骤S301至步骤S303。

步骤S301、根据预设优先级制定规则,确定所述虚拟机的调度优先级,并根据所述调度优先级、所述CPU负载状态与内存负载状态,生成第一调度策略;

在一个实施例中,通过在定时任务中对虚拟机的资源使用情况进行预测,判断预测的资源使用情况是否超过该NUMA节点设定的阈值,若超过阈值则启动虚拟机调度的初始化程序。

遍历所有的虚拟机,针对单个虚拟机,按照CPU实际使用率从大到小的顺序遍历与其绑定的NUMA节点,可根据Linux命令计算当前NUMA节点的CPU实际使用负载,如果超过CPU负载阈值,则考虑对当前虚拟机进行调度,内存同理。

将需要调度的虚拟机进行标记,按从大到小的顺序分别存储到“CPU待调度链表”和“内存待调度链表”中,标记其状态为“暂无匹配节点”。

计算此时整体资源负载系数δ

其中,n表示NUMA节点总数,m表示每个节点中存在访问“非本地内存”的CPU核心个数,dis

其中,x表示当前NUMA节点的实际CPU或内存使用率,q表示CPU或内存的实际使用率阈值。

在一个实施例中,虚拟机的调度策略基于贪心思想,根据虚拟机之间的优先级来执行调度,虚拟机的优先级可以根据积分制、用户自定义配置、使用时间、使用类型等来决定。例如,求解虚拟机优先级P的公式:

其中a

遍历“CPU待调度链表”,针对链表中的每一个虚拟机K,按照CPU剩余核心数从大到小的顺序遍历所有NUMA节点,求出该NUMA节点中虚拟机优先级低于虚拟机K的CPU核心总数,以及该NUMA节点中空闲的CPU核心数。

计算两者之和是否满足虚拟机K的要求,若满足则表示“暂时匹配成功”,添加“暂时匹配成功”的标记,如果被抢占的虚拟机资源全部被抢占,则添加其标记为“暂未匹配成功”,如果只是部分资源被抢占,则将其添加到“暂未完全分配链表”中。

若两者之和不满足要求,则继续与后续NUMA节点链表匹配,内存同理。

步骤S302、基于所述第一调度策略,判断所述虚拟机的CPU和内存是否分配至相同NUMA节点;

在一个实施例中,经过第一调度策略,可以为需要调度的虚拟机选择合适的NUMA节点,但是这会存在一个问题:假如虚拟机预测的是CPU使用率提高,按照第一调度策略会找到满足其CPU要求的新的NUMA节点,但是有可能存在新的节点其内存并不满足条件,这样会导致虚拟机分配的CPU和内存不在同一个NUMA节点,根据NUMA架构原理,这种情况会导致CPU因访问“远端内存”而产生的性能瓶颈问题。

步骤S303、若所述虚拟机的CPU和内存未分配至相同NUMA节点,则根据预设远端内存调度规则,生成所述第二调度策略。

在一个实施例中,遍历第一调度策略后标记为“暂时匹配成功”的虚拟机集合,针对每一个虚拟机v,判断其是否完整的(CPU和内存均全部)添加到对应NUMA节点k,如果不符合则需要对其进行第二阶段的调度。第二阶段的调度主要分为以下几个步骤:

(a)判断节点k的内存总容量和CPU总的核心数是否满足当前虚拟机的需求,满足则进行(b)步骤,否则执行(e)步骤;

(b)比较当前节点k绑定的虚拟机优先级,找到最小优先级的虚拟机,如果当前虚拟机优先级不是最小的,则进行(c)步骤,否则执行(e)步骤;

(c)计算当前节点k中比虚拟机v优先级低的虚拟机列表list,计算列表中的内存容量和CPU核心数是否满足虚拟机v中缺少的部分,若满足则进行(d)步骤,否则执行(e)步骤;

(d)按照虚拟机v中缺少的资源部分,在list中选择优先级较低的虚拟机,标记其状态为“暂无匹配节点”或者添加到“暂未完全分配链表”,直到满足虚拟机v的资源需求,将虚拟机v状态标记为“暂时匹配成功”,修改相关链表信息;

(e)获取节点k的所有“邻端节点”,计算k与“邻端节点”的时延,按照时延从短到长依次排序。采用BFS的遍历策略遍历所有“邻端节点”,针对每一个“邻端节点”k’,跳转步骤(a)继续执行。

基于图3所示实施例,本实施例中,步骤S303之后,包括:

通过所述第二调度策略对所述虚拟机进行调度后,若所述虚拟机的CPU和/或内存未分配至相同NUMA节点,则基于节点负载均衡原则将所述虚拟机随机分配至NUMA节点。

在一个实施例中,通过第一调度策略和第二调度策略的处理之后,部分虚拟机已选择了合适的NUMA节点

此时CPU“待调度节点链表”和“内存待调度节点链表”中可能还存在状态为“暂无匹配节点”的虚拟机,以及存在未全部分配资源的“暂未完全分配链表”。遍历上述链表,按照节点负载均衡的策略将其随机分配在NUMA节点上。

基于图3所示实施例,本实施例中,步骤S20之后还包括:

计算通过所述第一调度策略对所述虚拟机进行调度前的初始资源负载系数和通过所述虚拟机调度策略进行调度后的当前资源负载系数;

在所述当前资源负载系数小于所述初始资源负载系数的情况下,按照所述虚拟机调度策略对所述虚拟机进行调度。

在一个实施例中,最后,计算按照动态调度策略分配后系统整体的资源负载系数δ

请参阅图4,图4是本申请的实施例提供一种基于NUMA架构的虚拟机调度装置的示意性框图,该基于NUMA架构的虚拟机调度装置用于执行前述的基于NUMA架构的虚拟机调度方法。其中,该基于NUMA架构的虚拟机调度装置可以配置于服务器。

如图4所示,该基于NUMA架构的虚拟机调度装置400,包括:

初始化调度模块410,用于对虚拟机进行初始化调度,以进入初始运行状态;

任务特性预测模块420,用于监测所述虚拟机在所述初始运行状态下的内存状态与中央处理器CPU状态,并分别根据预设预测算法预测所述虚拟机在下一阶段的任务特性,并比较所述任务特性中的资源负载状态与初始非一致性内存访问架构NUMA节点负载阈值的关系;

调度策略生成模块430,用于在所述资源负载状态超过所述初始NUMA节点负载阈值的情况下,基于所述任务特性,生成虚拟机调度策略,并根据所述虚拟机调度策略对所述虚拟机进行调度。

进一步地,所述基于NUMA架构的虚拟机调度装置400,还包括:

NUMA节点列表生成模块,用于计算各所述NUMA节点的资源系数,并对各所述资源系数进行降序排列,生成NUMA节点列表;

节点匹配模块,用于根据预设节点适应算法,将所述NUMA节点列表中各NUMA节点按照资源系数降序规则,分别与所述虚拟机的所述配置参数信息进行匹配;

第一初始NUMA节点确定模块,用于将所述NUMA节点列表中与所述配置参数信息相匹配的NUMA节点确定为所述初始NUMA节点。

进一步地,所述基于NUMA架构的虚拟机调度装置400,还包括:

第二初始NUMA节点确定模块,用于在所述NUMA节点列表中不存在与所述配置参数信息相匹配的NUMA节点的情况下,基于预设分配原则,将所述虚拟机分配至所述预设待分配链表的随机NUMA节点中,并将所述随机NUMA节点确定为所述初始NUMA节点。

进一步地,所述任务特性预测模块420包括:

需求预测单元,用于分别通过所述CPU需求预测算法和所述内存需求预测算法,对所述虚拟机的CPU需求与内存需求进行预测,得到CPU需求预测值与内存需求预测值;

任务特性确定单元,用于通过预设任务特性函数、所述CPU需求预测值与所述内存需求预测值,确定所述虚拟机在下一阶段的所述任务特性。

进一步地,所述调度策略生成模块430包括:

第一调度策略生成单元,用于根据预设优先级制定规则,确定所述虚拟机的调度优先级,并根据所述调度优先级、所述CPU负载状态与内存负载状态,生成第一调度策略;

判断单元,用于基于所述第一调度策略,判断所述虚拟机的CPU和内存是否分配至相同NUMA节点;

第二调度策略生成单元,用于若所述虚拟机的CPU和内存未分配至相同NUMA节点,则根据预设远端内存调度规则,生成所述第二调度策略。

进一步地,所述调度策略生成模块430包括:

节点负载均衡单元,用于通过所述第二调度策略对所述虚拟机进行调度后,若所述虚拟机的CPU和/或内存未分配至相同NUMA节点,则基于节点负载均衡原则将所述虚拟机随机分配至NUMA节点。

进一步地,所述调度策略生成模块430包括:

资源负载系数计算单元,用于计算通过所述第一调度策略对所述虚拟机进行调度前的初始资源负载系数和通过所述虚拟机调度策略进行调度后的当前资源负载系数;

资源负载系数比较单元,用于在所述当前资源负载系数小于所述初始资源负载系数的情况下,按照所述虚拟机调度策略对所述虚拟机进行调度。

需要说明的是,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和各模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

上述的装置可以实现为一种计算机程序的形式,该计算机程序可以在如图5所示的计算机设备上运行。

请参阅图5,图5是本申请的实施例提供的一种计算机设备的结构示意性框图。该计算机设备可以是服务器。

参阅图5,该计算机设备包括通过系统总线连接的处理器、存储器和网络接口,其中,存储器可以包括非易失性存储介质和内存储器。

非易失性存储介质可存储操作系统和计算机程序。该计算机程序包括程序指令,该程序指令被执行时,可使得处理器执行任意一种基于NUMA架构的虚拟机调度方法。

处理器用于提供计算和控制能力,支撑整个计算机设备的运行。

内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行任意一种基于NUMA架构的虚拟机调度方法。

该网络接口用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

应当理解的是,处理器可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

其中,在一个实施例中,所述处理器用于运行存储在存储器中的计算机程序,以实现如下步骤:

对虚拟机进行初始化调度,以进入初始运行状态;

监测所述虚拟机在所述初始运行状态下的内存状态与中央处理器CPU状态,并分别根据预设预测算法预测所述虚拟机在下一阶段的任务特性,并比较所述任务特性中的资源负载状态与初始非一致性内存访问架构NUMA节点负载阈值的关系;

在所述资源负载状态超过所述初始NUMA节点负载阈值的情况下,基于所述任务特性,生成虚拟机调度策略,并根据所述虚拟机调度策略对所述虚拟机进行调度。

在一个实施例中,对虚拟机进行初始化调度,以进入初始运行状态之前,用于实现:

计算各所述NUMA节点的资源系数,并对各所述资源系数进行降序排列,生成NUMA节点列表;

根据预设节点适应算法,将所述NUMA节点列表中各NUMA节点按照资源系数降序规则,分别与所述虚拟机的所述配置参数信息进行匹配;

将所述NUMA节点列表中与所述配置参数信息相匹配的NUMA节点确定为所述初始NUMA节点。

在一个实施例中,根据预设节点适应算法,将所述NUMA节点列表中各NUMA节点按照资源系数降序规则,分别与所述虚拟机的所述配置参数信息进行匹配之后,用于实现:

在所述NUMA节点列表中不存在与所述配置参数信息相匹配的NUMA节点的情况下,基于预设分配原则,将所述虚拟机分配至所述预设待分配链表的随机NUMA节点中,并将所述随机NUMA节点确定为所述初始NUMA节点。

在一个实施例中,预设预测算法包括CPU需求预测算法和内存需求预测算法,所述监测所述虚拟机在所述初始运行状态下的内存状态与中央处理器CPU状态,并分别根据预设预测算法预测所述虚拟机在下一阶段的任务特性,用于实现:

分别通过所述CPU需求预测算法和所述内存需求预测算法,对所述虚拟机的CPU需求与内存需求进行预测,得到CPU需求预测值与内存需求预测值;

通过预设任务特性函数、所述CPU需求预测值与所述内存需求预测值,确定所述虚拟机在下一阶段的所述任务特性。

在一个实施例中,资源负载状态包括CPU负载状态与内存负载状态,所述虚拟机调度策略包括第一调度策略和第二调度策略,所述在所述资源负载状态超过所述初始NUMA节点负载阈值的情况下,基于所述任务特性,生成虚拟机调度策略,用于实现:

根据预设优先级制定规则,确定所述虚拟机的调度优先级,并根据所述调度优先级、所述CPU负载状态与内存负载状态,生成第一调度策略;

基于所述第一调度策略,判断所述虚拟机的CPU和内存是否分配至相同NUMA节点;

若所述虚拟机的CPU和内存未分配至相同NUMA节点,则根据预设远端内存调度规则,生成所述第二调度策略。

在一个实施例中,若所述虚拟机的CPU和内存未分配至相同NUMA节点,则根据预设远端内存调度规则,生成所述第二调度策略之后,用于实现:

通过所述第二调度策略对所述虚拟机进行调度后,若所述虚拟机的CPU和/或内存未分配至相同NUMA节点,则基于节点负载均衡原则将所述虚拟机随机分配至NUMA节点。

在一个实施例中,若所述虚拟机的CPU和内存未分配至相同NUMA节点,则根据预设远端内存调度规则,生成所述第二调度策略之后,用于实现:

计算通过所述第一调度策略对所述虚拟机进行调度前的初始资源负载系数和通过所述虚拟机调度策略进行调度后的当前资源负载系数;

在所述当前资源负载系数小于所述初始资源负载系数的情况下,按照所述虚拟机调度策略对所述虚拟机进行调度。

本申请的实施例中还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序中包括程序指令,所述处理器执行所述程序指令,实现本申请实施例提供的任一项基于NUMA架构的虚拟机调度方法。

其中,所述计算机可读存储介质可以是前述实施例所述的计算机设备的内部存储单元,例如所述计算机设备的硬盘或内存。所述计算机可读存储介质也可以是所述计算机设备的外部存储设备,例如所述计算机设备上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

相关技术
  • 基于NTB硬件的虚拟机通信方法、装置、设备及存储介质
  • 虚拟机应用程序管理方法、装置、设备及可读存储介质
  • 一种虚拟机迁移方法、装置、设备及可读存储介质
  • 一种虚拟机启动方法、装置、存储介质和计算机设备质
  • 虚拟机操作系统安装方法、装置、设备及可读存储介质
  • 虚拟机的NUMA节点调度方法、装置、设备及存储介质
  • 基于负载预测的NUMA架构中虚拟机调度方法
技术分类

06120116586504