首页 / 专利库 / 软件 / 虚拟机迁移 / 一种虚拟机的NUMA节点调度方法、装置、设备及介质

一种虚拟机的NUMA节点调度方法、装置、设备及介质

阅读:1017发布:2020-05-08

专利汇可以提供一种虚拟机的NUMA节点调度方法、装置、设备及介质专利检索,专利查询,专利分析的服务。并且本 申请 公开了一种 虚拟机 的NUMA 节点 调度方法、装置、 电子 设备及计算机可读存储介质,该方法包括:为各个虚拟机分别确定对应的NUMA节点数量;分别选择对应数量个NUMA节点初始分配给各个虚拟机;监测NUMA集群中各个NUMA节点的CPU负载;在NUMA节点的CPU负载超配时进行NUMA节点调度调整以均衡负载;其中,预设重要虚拟机所在NUMA节点的CPU负载超配 阈值 低于非预设重要虚拟机所在NUMA节点的CPU负载超配阈值。本申请可有效实现集群内的负载均衡,改善NUMA集群的整体运行性能;此外,本申请利用虚拟机的优先级机制,可更灵活方便地进行调度调整,满足用户对不同业务应用的不同性能需求。,下面是一种虚拟机的NUMA节点调度方法、装置、设备及介质专利的具体信息内容。

1.一种虚拟机的NUMA节点调度方法,其特征在于,包括:
为各个虚拟机分别确定对应的NUMA节点数量;
分别选择对应数量个NUMA节点初始分配给各个所述虚拟机;
监测NUMA集群中各个NUMA节点的CPU负载;
在NUMA节点的CPU负载超配时进行NUMA节点调度调整以均衡负载;其中,预设重要虚拟机所在NUMA节点的CPU负载超配阈值低于非预设重要虚拟机所在NUMA节点的CPU负载超配阈值。
2.根据权利要求1所述的虚拟机的NUMA节点调度方法,其特征在于,所述为各个虚拟机分别确定对应的NUMA节点数量,包括:
根据虚拟机的预设VCPU数与单节点CPU核数的大小关系,确定所述虚拟机对应的NUMA节点数量。
3.根据权利要求2所述的虚拟机的NUMA节点调度方法,其特征在于,所述根据虚拟机的预设VCPU数与单节点CPU核数的大小关系,确定所述虚拟机对应的NUMA节点数量,包括:
判断所述预设VCPU数是否小于所述NUMA集群的总CPU核数;所述总CPU核数为所述单节点CPU核数与节点总数的乘积;
若是,则将所述预设VCPU数与所述单节点CPU核数的比值向上取整后确定为所述虚拟机对应的NUMA节点数量;
若否,则将所述节点总数确定为所述虚拟机对应的NUMA节点数量。
4.根据权利要求1所述的虚拟机的NUMA节点调度方法,其特征在于,所述分别选择对应数量个NUMA节点初始分配给各个所述虚拟机,包括:
为虚拟机选择对应数量个NUMA节点;
对所述对应数量个NUMA节点的CPU和本地内存均进行配置以便供对应的虚拟机调用。
5.根据权利要求4所述的虚拟机的NUMA节点调度方法,其特征在于,所述为虚拟机选择对应数量个NUMA节点,包括:
判断当前CPU负载最低的NUMA节点与其他NUMA节点的CPU负载的差值是否高于预设差值;
若是,则将当前CPU负载最低的NUMA节点划分给所述虚拟机;
若否,则将当前已承载VCPU数最少的NUMA节点划分给所述虚拟机;
重复执行所述判断当前CPU负载最低的NUMA节点与其他NUMA节点的CPU负载的差值是否高于预设差值及其后续步骤,直至为所述虚拟机划分的NUMA节点达到所述对应数量个。
6.根据权利要求1所述的虚拟机的NUMA节点调度方法,其特征在于,所述进行NUMA节点调度调整,包括:
将CPU负载超配的NUMA节点作为待优化节点;
判断NUMA集群中是否存在可接收节点;所述可接收节点为在接收了从所述待优化节点中迁移的虚拟机后CPU负载不超配的节点;
若存在可接收节点,则从所述待优化节点向所述可接收节点迁移虚拟机;
若不存在可接收节点,则判断所述NUMA集群中是否存在可交换节点;所述可交换节点为在与所述待优化节点交换虚拟机后CPU负载不超配的节点;
若存在可交换节点,则将所述待优化节点与所述可交换节点交换虚拟机。
7.根据权利要求6所述的虚拟机的NUMA节点调度方法,其特征在于,所述从所述待优化节点向所述可接收节点迁移虚拟机,包括:
向没有承载预设重要虚拟机的CPU负载最低的可接收节点迁移虚拟机。
8.根据权利要求6所述的虚拟机的NUMA节点调度方法,其特征在于,所述从所述待优化节点向所述可接收节点迁移虚拟机,包括:
将所述待优化节点中占用内存最小的虚拟机迁移至所述可接收节点;其中,向所述可接收节点迁移的虚拟机不包括承载在所有NUMA节点上的虚拟机。
9.根据权利要求6所述的虚拟机的NUMA节点调度方法,其特征在于,当各个NUMA节点均承载有预设重要虚拟机时,向所述可接收节点迁移的虚拟机为非预设重要虚拟机。
10.根据权利要求1至9任一项所述的虚拟机的NUMA节点调度方法,其特征在于,预设重要虚拟机在NUMA节点中的CPU时间片权重高于本节点中的非预设重要虚拟机。
11.根据权利要求10所述的虚拟机的NUMA节点调度方法,其特征在于,还包括:
当监测到使用大页内存的预设重要虚拟机时,将使用大页内存的预设重要虚拟机所在的NUMA节点作为重要节点;
对NUMA集群的预设重要服务进行隔离操作,以使所述预设重要服务运行在除所述重要节点以外的其他NUMA节点中。
12.一种虚拟机的NUMA节点调度装置,其特征在于,包括:
数量确定模,用于为各个虚拟机分别确定对应的NUMA节点数量;
初始分配模块,用于分别选择对应数量个NUMA节点初始分配给各个所述虚拟机;
负载监测模块,用于监测NUMA集群中各个NUMA节点的CPU负载;
调度调整模块,用于在NUMA节点的CPU负载超配时进行NUMA节点调度调整以均衡负载;
其中,预设重要虚拟机所在NUMA节点的CPU负载超配阈值低于非预设重要虚拟机所在NUMA节点的CPU负载超配阈值。
13.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序
处理器,用于执行所述计算机程序以实现如权利要求1至11任一项所述的虚拟机的NUMA节点调度方法的步骤。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用以实现如权利要求1至11任一项所述的虚拟机的NUMA节点调度方法的步骤。

说明书全文

一种虚拟机的NUMA节点调度方法、装置、设备及介质

技术领域

[0001] 本申请涉及虚拟机技术领域,特别涉及一种虚拟机的NUMA节点调度方法、装置、电子设备及计算机可读存储介质。

背景技术

[0002] 虚拟机(Virtual Machine)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。虚拟机的创建和使用基于物理机的硬件基础,需要将实体机的物理CPU、内存资源作为虚拟机的VCPU、内存。由此,虚拟机对硬件资源的调度是一个重要问题。然而,现有技术中对虚拟机的硬件资源调度方法往往存在一定的不足而无法满足用户日益丰富的需求。鉴于此,提供一种解决上述技术问题的方案,已经是本领域技术人员所亟需关注的。发明内容
[0003] 本申请的目的在于提供一种虚拟机的NUMA节点调度方法、装置、电子设备及计算机可读存储介质,以便根据不同虚拟机应用需求灵活、合理进行资源调度,满足用户需求。
[0004] 为解决上述技术问题,第一方面,本申请公开了一种虚拟机的NUMA节点调度方法,包括:
[0005] 为各个虚拟机分别确定对应的NUMA节点数量;
[0006] 分别选择对应数量个NUMA节点初始分配给各个所述虚拟机;
[0007] 监测NUMA集群中各个NUMA节点的CPU负载;
[0008] 在NUMA节点的CPU负载超配时进行NUMA节点调度调整以均衡负载;其中,预设重要虚拟机所在NUMA节点的CPU负载超配阈值低于非预设重要虚拟机所在NUMA节点的CPU负载超配阈值。
[0009] 可选地,所述为各个虚拟机分别确定对应的NUMA节点数量,包括:
[0010] 根据虚拟机的预设VCPU数与单节点CPU核数的大小关系,确定所述虚拟机对应的NUMA节点数量。
[0011] 可选地,所述根据虚拟机的预设VCPU数与单节点CPU核数的大小关系,确定所述虚拟机对应的NUMA节点数量,包括:
[0012] 判断所述预设VCPU数是否小于所述NUMA集群的总CPU核数;所述总CPU核数为所述单节点CPU核数与节点总数的乘积;
[0013] 若是,则将所述预设VCPU数与所述单节点CPU核数的比值向上取整后确定为所述虚拟机对应的NUMA节点数量;
[0014] 若否,则将所述节点总数确定为所述虚拟机对应的NUMA节点数量。
[0015] 可选地,所述分别选择对应数量个NUMA节点初始分配给各个所述虚拟机,包括:
[0016] 为虚拟机选择对应数量个NUMA节点;
[0017] 对所述对应数量个NUMA节点的CPU和本地内存均进行配置以便供对应的虚拟机调用。
[0018] 可选地,所述为虚拟机选择对应数量个NUMA节点,包括:
[0019] 判断当前CPU负载最低的NUMA节点与其他NUMA节点的CPU负载的差值是否高于预设差值;
[0020] 若是,则将当前CPU负载最低的NUMA节点划分给所述虚拟机;
[0021] 若否,则将当前已承载VCPU数最少的NUMA节点划分给所述虚拟机;
[0022] 重复执行所述判断当前CPU负载最低的NUMA节点与其他NUMA节点的CPU负载的差值是否高于预设差值及其后续步骤,直至为所述虚拟机划分的NUMA节点达到所述对应数量个。
[0023] 可选地,所述进行NUMA节点调度调整,包括:
[0024] 将CPU负载超配的NUMA节点作为待优化节点;
[0025] 判断NUMA集群中是否存在可接收节点;所述可接收节点为在接收了从所述待优化节点中迁移的虚拟机后CPU负载不超配的节点;
[0026] 若存在可接收节点,则从所述待优化节点向所述可接收节点迁移虚拟机;
[0027] 若不存在可接收节点,则判断所述NUMA集群中是否存在可交换节点;所述可交换节点为在与所述待优化节点交换虚拟机后CPU负载不超配的节点;
[0028] 若存在可交换节点,则将所述待优化节点与所述可交换节点交换虚拟机。
[0029] 可选地,所述从所述待优化节点向所述可接收节点迁移虚拟机,包括:
[0030] 向没有承载预设重要虚拟机的CPU负载最低的可接收节点迁移虚拟机。
[0031] 可选地,所述从所述待优化节点向所述可接收节点迁移虚拟机,包括:
[0032] 将所述待优化节点中占用内存最小的虚拟机迁移至所述可接收节点;其中,向所述可接收节点迁移的虚拟机不包括承载在所有NUMA节点上的虚拟机。
[0033] 可选地,当各个NUMA节点均承载有预设重要虚拟机时,向所述可接收节点迁移的虚拟机为非预设重要虚拟机。
[0034] 可选地,预设重要虚拟机在NUMA节点中的CPU时间片权重高于本节点中的非预设重要虚拟机。
[0035] 可选地,还包括:
[0036] 当监测到使用大页内存的预设重要虚拟机时,将使用大页内存的预设重要虚拟机所在的NUMA节点作为重要节点;
[0037] 对NUMA集群的预设重要服务进行隔离操作,以使所述预设重要服务运行在除所述重要节点以外的其他NUMA节点中。
[0038] 第二方面,本申请还公开了一种虚拟机的NUMA节点调度装置,包括:
[0039] 数量确定模,用于为各个虚拟机分别确定对应的NUMA节点数量;
[0040] 初始分配模块,用于分别选择对应数量个NUMA节点初始分配给各个所述虚拟机;
[0041] 负载监测模块,用于监测NUMA集群中各个NUMA节点的CPU负载;
[0042] 调度调整模块,用于在NUMA节点的CPU负载超配时进行NUMA节点调度调整以均衡负载;其中,预设重要虚拟机所在NUMA节点的CPU负载超配阈值低于非预设重要虚拟机所在NUMA节点的CPU负载超配阈值。
[0043] 可选地,所述数量确定模块具体用于:根据虚拟机的预设VCPU数与单节点CPU核数的大小关系,确定所述虚拟机对应的NUMA节点数量。
[0044] 可选地,所述数量确定模块具体用于:判断所述预设VCPU数是否小于所述NUMA集群的总CPU核数;所述总CPU核数为所述单节点CPU核数与节点总数的乘积;若是,则将所述预设VCPU数与所述单节点CPU核数的比值向上取整后确定为所述虚拟机对应的NUMA节点数量;若否,则将所述节点总数确定为所述虚拟机对应的NUMA节点数量。
[0045] 可选地,所述初始分配模块具体用于:为虚拟机选择对应数量个NUMA节点;对所述对应数量个NUMA节点的CPU和本地内存均进行配置以便供对应的虚拟机调用。
[0046] 可选地,所述初始分配模块具体用于:判断当前CPU负载最低的NUMA节点与其他NUMA节点的CPU负载的差值是否高于预设差值;若是,则将当前CPU负载最低的NUMA节点划分给所述虚拟机;若否,则将当前已承载VCPU数最少的NUMA节点划分给所述虚拟机;重复执行所述判断当前CPU负载最低的NUMA节点与其他NUMA节点的CPU负载的差值是否高于预设差值及其后续步骤,直至为所述虚拟机划分的NUMA节点达到所述对应数量个。
[0047] 可选地,所述调度调整模块具体包括:
[0048] 选择单元,用于将CPU负载超配的NUMA节点作为待优化节点;
[0049] 第一判断单元,用于判断NUMA集群中是否存在可接收节点;所述可接收节点为在接收了从所述待优化节点中迁移的虚拟机后CPU负载不超配的节点;
[0050] 迁移单元,用于在存在可接收节点时,从所述待优化节点向所述可接收节点迁移虚拟机;
[0051] 第二判断单元,用于在不存在可接收节点时,判断所述NUMA集群中是否存在可交换节点;所述可交换节点为在与所述待优化节点交换虚拟机后CPU负载不超配的节点;
[0052] 交换单元,用于在存在可交换节点时,将所述待优化节点与所述可交换节点交换虚拟机。
[0053] 可选地,所述迁移单元具体用于:向没有承载预设重要虚拟机的CPU负载最低的可接收节点迁移虚拟机。
[0054] 可选地,所述迁移单元具体用于:将所述待优化节点中占用内存最小的虚拟机迁移至所述可接收节点;其中,向所述可接收节点迁移的虚拟机不包括承载在所有NUMA节点上的虚拟机。
[0055] 可选地,当各个NUMA节点均承载有预设重要虚拟机时,向所述可接收节点迁移的虚拟机为非预设重要虚拟机。
[0056] 可选地,预设重要虚拟机在NUMA节点中的CPU时间片权重高于本节点中的非预设重要虚拟机。
[0057] 可选地,还包括隔离模块,用于在监测到使用大页内存的预设重要虚拟机时,将使用大页内存的预设重要虚拟机所在的NUMA节点作为重要节点;对NUMA集群的预设重要服务进行隔离操作,以使所述预设重要服务运行在除所述重要节点以外的其他NUMA节点中。
[0058] 第三方面,本申请还公开了一种电子设备,包括:
[0059] 存储器,用于存储计算机程序
[0060] 处理器,用于执行所述计算机程序以实现如上所述的任一种虚拟机的NUMA节点调度方法的步骤。
[0061] 第四方面,本申请还公开了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用以实现如上所述的任一种虚拟机的NUMA节点调度方法的步骤。
[0062] 本申请所提供的虚拟机的NUMA节点调度方法包括:为各个虚拟机分别确定对应的NUMA节点数量;分别选择对应数量个NUMA节点初始分配给各个所述虚拟机;监测NUMA集群中各个NUMA节点的CPU负载;在NUMA节点的CPU负载超配时进行NUMA节点调度调整以均衡负载;其中,预设重要虚拟机所在NUMA节点的CPU负载超配阈值低于非预设重要虚拟机所在NUMA节点的CPU负载超配阈值。
[0063] 可见,本申请基于对虚拟机NUMA节点的调度调整机制,可有效实现集群内的负载均衡,进而均衡和改善NUMA集群的整体运行性能;同时,本申请引入了虚拟机的优先级机制,在进行调度调整中可灵活方便地优先保障预设重要虚拟机所在节点的运行性能,满足用户对不同应用业务的性能需求,极大地便利了用户使用。本申请所提供的虚拟机的NUMA节点调度装置、电子设备及计算机可读存储介质同样具有上述有益效果。附图说明
[0064] 为了更清楚地说明现有技术和本申请实施例中的技术方案,下面将对现有技术和本申请实施例描述中需要使用的附图作简要的介绍。当然,下面有关本申请实施例的附图描述的仅仅是本申请中的一部分实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图,所获得的其他附图也属于本申请的保护范围。
[0065] 图1为本申请实施例公开的一种虚拟机的NUMA节点调度方法的流程图
[0066] 图2为本申请实施例公开的一种为虚拟机选择对应数量个NUMA节点的方法流程图;
[0067] 图3为本申请实施例公开的一种进行NUMA节点初始分配的应用示例图;
[0068] 图4为本申请实施例公开的一种进行NUMA节点调度调整的方法流程图;
[0069] 图5为本申请实施例公开的一种虚拟机的NUMA节点调度装置的结构框图
[0070] 图6为本申请实施例公开的一种电子设备的结构框图。

具体实施方式

[0071] 本申请的核心在于提供一种虚拟机的NUMA节点调度方法、装置、电子设备及计算机可读存储介质,以便根据不同虚拟机应用需求灵活、合理进行资源调度,满足用户需求。
[0072] 为了对本申请实施例中的技术方案进行更加清楚、完整地描述,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行介绍。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0073] 当前,现有技术中对虚拟机的硬件资源调度方法往往存在一定的不足而无法满足用户日益丰富的需求。例如,在某些特定业务场景中,用于执行一些特定重要任务的虚拟机可能需要较高的资源保障供应,而当前业界的Linux内核调度策略并不能做到这一点。鉴于此,本申请提供了一种虚拟机的NUMA节点调度方法,可有效解决上述问题。
[0074] 参见图1所示,本申请实施例公开了一种虚拟机的NUMA节点调度方法,主要包括:
[0075] S101:为各个虚拟机分别确定对应的NUMA节点数量。
[0076] 目前主流的服务器大都采用NUMA架构(Non-uniform memory access,非统一内存访问架构),用于承载构建虚拟机的服务器集群可称为NUMA集群。在一些具体应用场景中,从功能上来说,该NUMA集群可具体为超融合平台系统,即融合了存储、计算、网络等多功能的服务器集群。
[0077] 需要说明的是,对于一个虚拟机,其每个VCPU即虚拟CPU均基于NUMA集群中的物理CPU实现,该物理CPU便构成了该虚拟机的一个NUMA节点。当然,除了CPU硬件以外,NUMA节点还包括内存硬件;为一个虚拟机分配NUMA节点的过程就是为其配置物理CPU和物理内存的过程。
[0078] 还需说明的是,受制于实际应用情况,一个物理CPU可以只分配给一个虚拟机,并且可以进一步构建该虚拟机的一个或多个VCPU。一个物理CPU也可以同时分配给多个虚拟机,即为多个虚拟机同时提供硬件资源服务。
[0079] NUMA集群的硬件资源总数是固定的。在为各个虚拟机进行资源调度以分配NUMA节点时,可首先确定各个虚拟机所对应的NUMA节点数。容易理解的是,用于执行不同任务的虚拟机所需使用的VCPU数是不同的,因此所需要的NUMA节点数也不一定相同。
[0080] S102:分别选择对应数量个NUMA节点初始分配给各个虚拟机。
[0081] 对于一个虚拟机,在确定了与其对应的NUMA节点数量后,便可以基于NUMA集群的硬件资源为其进行节点分配。当虚拟机数量为多个时,可依次为各个虚拟机进行初始分配。
[0082] S103:监测NUMA集群中各个NUMA节点的CPU负载。
[0083] S104:在NUMA节点的CPU负载超配时进行NUMA节点调度调整以均衡负载。
[0084] 其中,预设重要虚拟机所在NUMA节点的CPU负载超配阈值低于非预设重要虚拟机所在NUMA节点的CPU负载超配阈值。
[0085] 需要说明的是,本申请实施例所提供的虚拟机的NUMA节点调度方法,在完成了对虚拟机的NUMA节点初始分配之后,还进一步进行了调度调整。具体地,考虑到不同虚拟机执行的任务不同,因而对NUMA节点的硬件资源占用情况不同,各NUMA节点之间有可能会出现负载不均衡的情况,因此有必要进行调度调整以均衡负载。
[0086] 值得一提的是,本申请为了充分适应不同应用场景下的不同业务需求,而对执行不同任务的虚拟机进行来了优先级划分。具体地,根据用户的设置,一些被用于执行重要任务的虚拟机可享有较高的优先级,在资源调用等方面具有优势地位,称为预设重要虚拟机。除了这些预设重要虚拟机之外的其他虚拟机可称为非预设重要虚拟机。
[0087] 当NUMA节点出现CPU负载超配时,便可进行NUMA节点调度调整。其中,超配是指NUMA节点的CPU负荷较重,当实际负荷超过CPU负载超配阈值时即为超配。对于某个超配的NUMA节点来说,调度调整可令该NUMA节点不再超配;而对于整个NUMA集群来说,调度调整则可以有效均衡集群整体的负载情况,平衡各NUMA节点的负荷与运行性能。
[0088] 由于预设重要虚拟机的优先级较高,因此,本申请在进行负载均衡时,要优先保障预设重要虚拟机所在NUMA节点的运行性能,故而,预设重要虚拟机所在NUMA节点的CPU负载超配阈值可低于非预设重要虚拟机所在NUMA节点的CPU负载超配阈值。
[0089] 具体地,对于一个没有承载有预设重要虚拟机的NUMA节点来说,在没有超线程时,CPU负载超过其物理CPU核数的0.9倍可视为超配;在有超线程时,CPU负载超过其物理CPU核数的1.3倍可视为超配。
[0090] 例如,对于具有14核CPU的NUMA节点,若没有超线程,则其CPU负载超过14*0.9=1260%即为超配;若有超线程,则其CPU负载超过14*1.3=1820%即为超配。
[0091] 而对于承载有预设重要虚拟机的NUMA节点,其CPU负载超配阈值可均比上述同等情况下的阈值低,以便为预设重要虚拟机的运行提供相对较为有利的资源环境。
[0092] 本申请实施例所提供的虚拟机的NUMA节点调度方法包括:为各个虚拟机分别确定对应的NUMA节点数量;分别选择对应数量个NUMA节点初始分配给各个虚拟机;监测NUMA集群中各个NUMA节点的CPU负载;在NUMA节点的CPU负载超配时进行NUMA节点调度调整以均衡负载;其中,预设重要虚拟机所在NUMA节点的CPU负载超配阈值低于非预设重要虚拟机所在NUMA节点的CPU负载超配阈值。
[0093] 可见,本申请基于对虚拟机NUMA节点的调度调整机制,可有效实现集群内的负载均衡,进而均衡和改善NUMA集群的整体运行性能;同时,本申请引入了虚拟机的优先级机制,在进行调度调整中可灵活方便地优先保障预设重要虚拟机所在节点的运行性能,满足用户对不同应用业务的性能需求,极大地便利了用户使用。
[0094] 作为一种具体实施例,在步骤S101中确定虚拟机对应的NUMA节点数量时,可具体根据虚拟机的预设VCPU数与单节点CPU核数的大小关系来确定虚拟机对应的NUMA节点数量。一般,各NUMA节点的配置如CPU核数等是相同的。
[0095] 具体地,对于一个虚拟机,可判断该虚拟机的预设VCPU数是否小于NUMA集群的总CPU核数;其中,总CPU核数为单节点CPU核数与节点总数的乘积。若是,则可将预设VCPU数与单节点CPU核数的比值向上取整后确定为虚拟机对应的NUMA节点数量;若否,则可将节点总数确定为虚拟机对应的NUMA节点数量,此时可将VCPU数平分到每个NUMA节点。
[0096] 例如,若某个虚拟机的VCPU数大于单个NUMA节点的CPU核数而小于2个NUMA节点的CPU核数,则对应数量即为2,即可为该虚拟机选择2个NUMA节点,并且可进一步将该虚拟机所需的VCPU平均分配到这2个NUMA节点。
[0097] 作为一种具体实施例,本申请实施例所提供的虚拟机的NUMA节点调度方法中,步骤S102即分别选择对应数量个NUMA节点初始分配给各个虚拟机,可具体包括:为虚拟机选择对应数量个NUMA节点;对对应数量个NUMA节点的CPU和本地内存均进行配置以便供对应的虚拟机调用。
[0098] 如前,当前业界服务器多采用NUMA架构,在NUMA架构中内存访问时间取决于处理器的内存位置,CPU访问本节点本地内存的速度比非本地内存快一些,远地内存的访问势必会影响访问速度。由此,在本实施例中,在为虚拟机初步分配NUMA节点时,具体可将同一节点的CPU与内存资源配置给该虚拟机,以便避免因远地内存访问而影响访问效率。
[0099] 其中,为虚拟机选择对应数量个NUMA节点的过程可具体参考图2,主要包括:
[0100] S201:判断当前CPU负载最低的NUMA节点与其他NUMA节点的CPU负载的差值是否高于预设差值;若是,则进入S202;若否,则进入S203。
[0101] S202:将当前CPU负载最低的NUMA节点划分给虚拟机;进入S204。
[0102] S203:将当前已承载VCPU数最少的NUMA节点划分给虚拟机;进入S204。
[0103] 本实施例中在为虚拟机初始选择NUMA节点时具体考虑了NUMA节点的当前负荷情况,以便实现对NUMA集群的负荷均衡。具体地,在每一次为虚拟机选择NUMA节点时,可选择当前CPU负载最低的NUMA节点。但是,若NUMA节点间的CPU负载相差不大,即不高于预设差值,此时是否选择CPU负载最低的NUMA节点都相差不大,因此可选择当前已承载VCPU数最少的NUMA节点。其中,预设差值可具体为5%。
[0104] S204:判断为虚拟机划分的NUMA节点是否达到对应数量个;若否,则进入S201。
[0105] 通过重复执行步骤S201-S203,不断为虚拟机选择NUMA节点,直至达到对应数量个。
[0106] 参见图3所示,图3为本申请实施例提供的一种进行NUMA节点初始分配的应用示例图。具体地,图3示出了4个虚拟机,其VCPU数依次是8、14、30、18。假设当前的NUMA集群中有2个NUMA节点,每个NUMA节点的CPU核数均为14。
[0107] 在图3所示出的一种初始分配方法中,对于虚拟机VM1,其VCPU数(8)小于14,因此可全部划分至NUMA1节点;对于虚拟机VM2,其VCPU数(14)等于14,因此可全部划分至NUMA0节点;对于虚拟机VM3,其VCPU数(30)大于总CPU核数(28),因此可平分至NUMA0节点和NUMA1节点,每个节点为虚拟机VM3承载15个VCPU;对于虚拟机VM4,其VCPU数(18)大于14而小于总CPU核数(28),因此可同样平分至NUMA0节点和NUMA1节点,每个节点为虚拟机VM4承载9个VCPU。
[0108] 作为一种具体实施例,步骤104中进行NUMA节点调度调整的过程可具体参考图4,主要包括:
[0109] S301:将CPU负载超配的NUMA节点作为待优化节点。
[0110] S302:判断NUMA集群中是否存在可接收节点;若是,则进入S303;若否,则进入S304。
[0111] 其中,可接收节点为在接收了从待优化节点中迁移的虚拟机后CPU负载不超配的节点。
[0112] 具体地,如果集群中存在有不超配的NUMA节点,并且通过向该不超配的NUMA节点迁移虚拟机后可使该节点与待优化节点均不超配,则可将该节点确定为可接收节点,即用于接收从待优化节点中迁移出的虚拟机的节点。
[0113] S303:从待优化节点向可接收节点迁移虚拟机。
[0114] 作为一种具体实施例,可具体向没有承载预设重要虚拟机的CPU负载最低的可接收节点迁移虚拟机。具体地,在从待优化节点向可接收节点迁移虚拟机时,若可接收节点为多个,则可优选从没有承载预设重要虚拟机的可接收节点中,选择CPU负载最低的节点进行虚拟机迁移。
[0115] 作为一种具体实施例,可具体将待优化节点中占用内存最小的虚拟机迁移至可接收节点;其中,向可接收节点迁移的虚拟机不包括承载在所有NUMA节点上的虚拟机。
[0116] 具体地,由于内存过大的虚拟机的迁移较为繁琐,且将占用可接收节点较多的资源,因此,本实施例优选迁移占用内存最小的虚拟机。
[0117] 此外,在选择待迁移的虚拟机时,除了考虑内存占用大小,还可以考虑虚拟机在NUMA节点中年的分布情况。出于业务安全性考虑,一个虚拟机的VCPU应当尽可能多地分布在不同NUMA节点上,因此,若一个虚拟机因VCPU数较大而承载在所有的NUMA节点上时,则在选择待迁移的虚拟机时可忽略该虚拟机。
[0118] 除此之外,在选择待迁移虚拟机时还可以考虑虚拟机的优先级。作为一种具体实施例,当各个NUMA节点均承载有预设重要虚拟机时,向可接收节点迁移的虚拟机为非预设重要虚拟机。具体地,由于预设重要虚拟机所执行的任务较为重要,不建议频繁迁移,因此,在该情况下可从非预设重要虚拟机中选择待迁移虚拟机。
[0119] S304:判断NUMA集群中是否存在可交换节点;若是,则进入S305。
[0120] 其中,可交换节点为在与待优化节点交换虚拟机后CPU负载不超配的节点。
[0121] 具体地,如果集群中存在有某个不超配的NUMA节点,令待优化节点与该不超配的NUMA节点交换虚拟机后可使该节点与待优化节点均不超配,则可将该节点确定为可交换节点,即用于与待优化节点中交换虚拟机的节点。
[0122] S305:将待优化节点与可交换节点交换虚拟机。
[0123] 由于不同虚拟机需占用的资源不同,因此可通过交换不同虚拟机的方式来实现对待优化节点、可交换节点的性能均衡。因此在进行虚拟机交换时,可将待优化节点中占用内存较大的虚拟机与可交换节点中占用内存较小的虚拟机进行交换。容易理解的是,当可交换节点为多个时,其选择依据可参考可接收节点的选择依据。
[0124] 此外,还需说明的是,当上述可接收节点、可交换节点均不存在时,可可优先保障承载有预设重要虚拟机的NUMA节点不超配,而允许没有承载预设重要虚拟机的NUMA节点超配。
[0125] 例如,当某个承载有预设重要虚拟机的NUMA节点超配时,若上述可接收节点、可交换节点均不存在,则可依然选择一个没有承载有预设重要虚拟机的NUMA节点进行虚拟机迁移操作或者交换操作,以便确保该承载有预设重要虚拟机的NUMA节点不超配,至于用于接收或者交换虚拟机的另一个NUMA节点,则可允许在迁移或者交换虚拟机后出现超配情况。
[0126] 作为一种具体实施例,在上述内容的基础上,本申请实施例所提供的虚拟机的NUMA节点调度方法中,预设重要虚拟机在NUMA节点中的CPU时间片权重高于本节点中的非预设重要虚拟机。
[0127] 具体地,除了在NUMA节点调度调整时对预设重要虚拟机所在节点进行优先保障,本实施例还可以在对物理CPU的使用中对预设重要虚拟机进行优先保障。当一个NUMA节点被分配给多个虚拟机时,不同虚拟机的VCPU线程需要根据时间片分时调用该NUMA节点的物理CPU资源。如此,为了充分优化预设重要虚拟机的运行环境,可将预设重要虚拟机的CPU时间片权重设置为较高的数值,令其高于同节点中非预设重要虚拟机的CPU时间片权重。
[0128] 作为一种具体实施例,在上述内容的基础上,本申请实施例所提供的虚拟机的NUMA节点调度方法,还可以进一步对某些预设重要虚拟机提供特定的资源保障:当监测到使用大页内存的预设重要虚拟机时,将使用大页内存的预设重要虚拟机所在的NUMA节点作为重要节点;对NUMA集群的预设重要服务进行隔离操作,以使预设重要服务运行在除重要节点以外的其他NUMA节点中。
[0129] 具体地,一些体系较大的预设重要虚拟机所占用的内存资源较大,因此可能会使用大页内存(large page memory)。相比于一些普通虚拟机使用的2kB的普通内存,大页内存在4kB以上,甚至可达到GB数量级。
[0130] 因为NUMA集群中的一些预设重要服务往往也需要占用一定的硬件资源,如存储服务、管理服务等,因此,为了保障这类预设重要虚拟机的顺利运行,可将这些预设重要服务隔离至其他节点中,以防止与该预设重要虚拟机竞争节点硬件资源。如此既可以保障集群服务的正常运转,又可以保障该预设重要虚拟机的计算性能,进而可最大程度地提升集群业务性能。
[0131] 参见图5所示,本申请实施例公开了一种虚拟机的NUMA节点调度装置,主要包括:
[0132] 数量确定模块401,用于为各个虚拟机分别确定对应的NUMA节点数量;
[0133] 初始分配模块402,用于分别选择对应数量个NUMA节点初始分配给各个虚拟机;
[0134] 负载监测模块403,用于监测NUMA集群中各个NUMA节点的CPU负载;
[0135] 调度调整模块404,用于在NUMA节点的CPU负载超配时进行NUMA节点调度调整以均衡负载;其中,预设重要虚拟机所在NUMA节点的CPU负载超配阈值低于非预设重要虚拟机所在NUMA节点的CPU负载超配阈值。
[0136] 可见,本申请实施例所公开的虚拟机的NUMA节点调度装置,基于对虚拟机NUMA节点的调度调整机制,可有效实现集群内的负载均衡,进而均衡和改善NUMA集群的整体运行性能;同时,本申请引入了虚拟机的优先级机制,在进行调度调整中可灵活方便地优先保障预设重要虚拟机所在节点的运行性能,满足用户对不同应用业务的性能需求,极大地便利了用户使用。
[0137] 关于上述虚拟机的NUMA节点调度装置的具体内容,可参考前述关于虚拟机的NUMA节点调度方法的详细介绍,这里就不再赘述。
[0138] 在一种具体实施方式中,本申请实施例所公开的虚拟机的NUMA节点调度装置在上述内容的基础上,数量确定模块401具体用于:根据虚拟机的预设VCPU数与单节点CPU核数的大小关系,确定虚拟机对应的NUMA节点数量。
[0139] 在一种具体实施方式中,本申请实施例所公开的虚拟机的NUMA节点调度装置在上述内容的基础上,数量确定模块401具体用于:判断预设VCPU数是否小于NUMA集群的总CPU核数;总CPU核数为单节点CPU核数与节点总数的乘积;若是,则将预设VCPU数与单节点CPU核数的比值向上取整后确定为虚拟机对应的NUMA节点数量;若否,则将节点总数确定为虚拟机对应的NUMA节点数量。
[0140] 在一种具体实施方式中,本申请实施例所公开的虚拟机的NUMA节点调度装置在上述内容的基础上,初始分配模块402具体用于:为虚拟机选择对应数量个NUMA节点;对对应数量个NUMA节点的CPU和本地内存均进行配置以便供对应的虚拟机调用。
[0141] 在一种具体实施方式中,本申请实施例所公开的虚拟机的NUMA节点调度装置在上述内容的基础上,初始分配模块402具体用于:判断当前CPU负载最低的NUMA节点与其他NUMA节点的CPU负载的差值是否高于预设差值;若是,则将当前CPU负载最低的NUMA节点划分给虚拟机;若否,则将当前已承载VCPU数最少的NUMA节点划分给虚拟机;重复执行判断当前CPU负载最低的NUMA节点与其他NUMA节点的CPU负载的差值是否高于预设差值及其后续步骤,直至为虚拟机划分的NUMA节点达到对应数量个。
[0142] 在一种具体实施方式中,本申请实施例所公开的虚拟机的NUMA节点调度装置在上述内容的基础上,调度调整模块404具体包括:
[0143] 选择单元,用于将CPU负载超配的NUMA节点作为待优化节点;
[0144] 第一判断单元,用于判断NUMA集群中是否存在可接收节点;可接收节点为在接收了从待优化节点中迁移的虚拟机后CPU负载不超配的节点;
[0145] 迁移单元,用于在存在可接收节点时,从待优化节点向可接收节点迁移虚拟机;
[0146] 第二判断单元,用于在不存在可接收节点时,判断NUMA集群中是否存在可交换节点;可交换节点为在与待优化节点交换虚拟机后CPU负载不超配的节点;
[0147] 交换单元,用于在存在可交换节点时,将待优化节点与可交换节点交换虚拟机。
[0148] 在一种具体实施方式中,本申请实施例所公开的虚拟机的NUMA节点调度装置在上述内容的基础上,迁移单元具体用于:向没有承载预设重要虚拟机的CPU负载最低的可接收节点迁移虚拟机。
[0149] 在一种具体实施方式中,本申请实施例所公开的虚拟机的NUMA节点调度装置在上述内容的基础上,迁移单元具体用于:将待优化节点中占用内存最小的虚拟机迁移至可接收节点;其中,向可接收节点迁移的虚拟机不包括承载在所有NUMA节点上的虚拟机。
[0150] 在一种具体实施方式中,本申请实施例所公开的虚拟机的NUMA节点调度装置在上述内容的基础上,当各个NUMA节点均承载有预设重要虚拟机时,向可接收节点迁移的虚拟机为非预设重要虚拟机。
[0151] 在一种具体实施方式中,本申请实施例所公开的虚拟机的NUMA节点调度装置在上述内容的基础上,预设重要虚拟机在NUMA节点中的CPU时间片权重高于本节点中的非预设重要虚拟机。
[0152] 在一种具体实施方式中,本申请实施例所公开的虚拟机的NUMA节点调度装置在上述内容的基础上,还包括:
[0153] 隔离模块,用于在监测到使用大页内存的预设重要虚拟机时,将使用大页内存的预设重要虚拟机所在的NUMA节点作为重要节点;对NUMA集群的预设重要服务进行隔离操作,以使预设重要服务运行在除重要节点以外的其他NUMA节点中。
[0154] 参见图6所示,本申请实施例公开了一种电子设备,包括:
[0155] 存储器501,用于存储计算机程序;
[0156] 处理器502,用于执行所述计算机程序以实现如上所述的任一种虚拟机的NUMA节点调度方法的步骤。
[0157] 进一步地,本申请实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用以实现如上所述的任一种虚拟机的NUMA节点调度方法的步骤。
[0158] 关于上述电子设备和计算机可读存储介质的具体内容,可参考前述关于虚拟机的NUMA节点调度方法的详细介绍,这里就不再赘述。
[0159] 本申请中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的设备而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0160] 还需说明的是,在本申请文件中,诸如“第一”和“第二”之类的关系术语,仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或者操作之间存在任何这种实际的关系或者顺序。此外,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0161] 以上对本申请所提供的技术方案进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请的保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈