虚拟机调度方法、装置、电子设备和可读存储介质制造方法及图纸

技术编号:33148473 阅读:19 留言:0更新日期:2022-04-22 14:01
本公开提供了一种虚拟机调度方法、装置、电子设备和可读存储介质,涉及虚拟机技术领域。其中,基于NUMA系统的虚拟机调度方法包括:基于非一致性内存访问NUMA系统中的NUMA节点拓扑和所述NUMA节点的CPU列表,生成所述CPU的NUMA拓扑;基于所述NUMA拓扑和所述CPU列表在指定目录下配置对应的本地访问控制组Cgroup;响应于调度信息,确定待调度的虚拟机,基于所述Cgroup为所述待调度的虚拟机执行平衡调度操作,以使所述虚拟机访问本地内存。通过本公开的技术方案,能够使虚拟机访问的是本地内存,从而有利于减少访问造成的延时。从而有利于减少访问造成的延时。从而有利于减少访问造成的延时。

【技术实现步骤摘要】
虚拟机调度方法、装置、电子设备和可读存储介质


[0001]本公开涉及虚拟机
,尤其涉及一种基于NUMA系统的虚拟机调度方法、基于NUMA系统的虚拟机调度装置、电子设备和计算机可读存储介质。

技术介绍

[0002]近年来,处理器的发展方向由不断提升单个处理器的频率转向扩展系统的多处理器,这种转向带来了问题是:FSB(Front

Side Bus,前端总线:指CPU与北桥芯片之间的数据传输总线,前端总线的速度指的是数据传输的速度)在多个处理器面前会成为竞争的焦点。为了解决该问题,相关研究人员将内存控制器(Integrated Memory Controller,IMC)从北桥芯片迁移至了处理器芯片中,使每个处理器都有自己的IMC连接到本地内存,基于上述改进生成了NUMA(Non Uniform Memory Access,非一致性内存访问)系统。目前NUMA系统上的多虚拟机还存在以下缺陷:
[0003](1)如果NUMA系统中一个NUMA节点的CPU要访问另一个NUMA节点上的内存,访问信号需要经过快速通道互联QPI,导致产生内存访问延迟。
[0004](2)由于Linux内核自带的调度算法不区分虚拟机里的VCPU线程与普通线程,因此即使被调度线程不属于同一虚拟机,Linux内核也会对其调度,导致同一个虚拟机里的多个VCPU被调度至不同的NUMA节点上,造成出现远程内存访问的现象,同样也会导致产生内存访问延迟。
[0005]需要说明的是,在上述
技术介绍
部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

技术实现思路

[0006]本公开的目的在于提供一种基于NUMA系统的虚拟机调度方法、基于NUMA系统的虚拟机调度装置、电子设备和计算机可读存储介质,至少在一定程度上克服由于相关技术中虚拟机内存访问延迟的问题。
[0007]本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
[0008]根据本公开的一个方面,提供一种基于NUMA系统的虚拟机调度方法,包括:基于非一致性内存访问NUMA系统中的NUMA节点拓扑和所述NUMA节点的CPU列表,生成所述CPU的NUMA拓扑;基于所述NUMA拓扑和所述CPU列表在指定目录下配置对应的本地访问控制组Cgroup;响应于调度信息,确定待调度的虚拟机,基于所述Cgroup为所述待调度的虚拟机执行平衡调度操作,以使所述虚拟机访问本地内存。
[0009]在本公开的一个实施例中,所述调度信息包括新建虚拟机的新建调度信息,所述响应于调度信息,确定待调度的虚拟机,基于所述Cgroup为所述待调度的虚拟机执行平衡调度操作,以使所述虚拟机访问本地内存,具体包括:响应于所述新建调度信息,将新建的第一虚拟机确定为所述待调度的虚拟机;确定所述第一虚拟机所需的VCPU数量与所需内
存;基于所述VCPU数量和所述所需内存执行第一平衡调度操作,以确定放置所述第一虚拟机的NUMA节点;基于所述Cgroup将所述待调度的虚拟机放置在所述NUMA节点中,以使所述虚拟机访问本地内存。
[0010]在本公开的一个实施例中,所述基于所述VCPU数量和所述所需内存执行第一平衡调度操作,以确定放置所述待调度的虚拟机的NUMA节点,具体包括:基于所述NUMA节点拓扑依次扫描所有所述NUMA节点,确定空闲CPU数量最多的第一节点;在检测到所述第一节点的空闲CPU数量大于或等于所述第一虚拟机的VCPU数量时,将所述第一节点确定为放置所述第一虚拟机的NUMA节点;在检测到所述第一节点的空闲CPU数量小于所述第一虚拟机的VCPU数量时,检测所有所述NUMA节点的空闲CPU总数是否大于或等于所述第一虚拟机的VCPU数量;在检测到所有所述NUMA节点的空闲CPU总数大于或等于所述第一虚拟机的VCPU数量时,基于跨NUMA节点操作确定放置所述第一虚拟机的NUMA节点。
[0011]在本公开的一个实施例中,所述调度信息包括删除虚拟机的删除调度信息,所述响应于调度信息,确定待调度的虚拟机,基于所述Cgroup为所述待调度的虚拟机执行平衡调度操作,以使所述虚拟机访问本地内存,具体包括:响应于所述删除调度信息,删除第二虚拟机在所述Cgroup中的子目录;以及基于第二平衡调度操作,确定剩余虚拟机中的所述待调度的虚拟机以及所述待调度的虚拟机的NUMA节点;基于所述Cgroup将所述待调度的虚拟机放置在所述NUMA节点中,以使所述虚拟机访问本地内存。
[0012]在本公开的一个实施例中,所述基于第二平衡调度操作,确定剩余虚拟机中的所述待调度的虚拟机以及所述待调度的虚拟机的NUMA节点,具体包括:在检测到所述剩余虚拟机中具有跨NUMA节点部署的跨节点虚拟机时,将所述跨节点虚拟机确定为所述待调度的虚拟机,并将删除所述第二虚拟机的NUMA节点确定为放置所述待调度的虚拟机的所述NUMA节点;和/或在检测到具有最多空闲CPU的第三节点,以及具有最多被分配CPU的第四节点时,在所述第四节点中查询第三虚拟机,所述第三虚拟机为VCPU数量最小的所述剩余虚拟机;在检测到所述第三节点中的所述空闲CPU能够放置所述第三虚拟机时,并且放置后所述第三节点中剩余空闲CPU的数量仍大于或等于所述第四节点中剩余空闲CPU的数量,将所述第三虚拟机确定为所述待调度的虚拟机,将所述第三节点确定为所述放置所述第三虚拟机的所述NUMA节点。
[0013]在本公开的一个实施例中,所述基于所述Cgroup将所述待调度的虚拟机放置在所述NUMA节点中,具体包括:基于所述待调度的虚拟机的instance ID,在对应的所述Cgroup中建立子目录;将所述虚拟机对应的所述NUMA节点中的CPU列表配置在所述子目录的第一文件中;将所述虚拟机所需内存配置在所述子目录的第二文件中;将所述instance ID配置在所述子目录的第三文件中,以在检测到所述虚拟机的内存未在所述NUMA节点中时,同步迁移所述内存;获取所述instance ID对应的PID值,将所述PID值配置在所述子目录的第四文件中。
[0014]在本公开的一个实施例中,所述基于所述NUMA拓扑和所述CPU列表在指定目录下配置对应的本地访问控制组Cgroup,具体包括:基于所述NUMA拓扑分别配置单个NUMA节点和跨NUMA节点;分别针对所述单个NUMA节点与所述跨NUMA节点在所述指定目录配置对应的所述Cgroup;基于所述CPU列表在所述Cgroup中写入可用的CPU编号,其中,在所述单个NUMA节点对应的所述Cgroup中,写入所述NUMA节点中所述可用的CPU编号,在所述跨NUMA节点对
应的所述Cgroup中,写入所述NUMA系统中所有所述可用的CPU编号。
[0015]根据本公开的另一个方面,提供一种基于NUMA系统的虚拟机调度装置,包括:生成模块,用于基于非一致性内存访问NUMA系统中的NUMA节点拓扑和所述NUMA节点的CPU列表,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于NUMA系统的虚拟机调度方法,其特征在于,包括:基于非一致性内存访问NUMA系统中的NUMA节点拓扑和所述NUMA节点的CPU列表,生成所述CPU的NUMA拓扑;基于所述NUMA拓扑和所述CPU列表在指定目录下配置对应的本地访问控制组Cgroup;响应于调度信息,确定待调度的虚拟机,基于所述Cgroup为所述待调度的虚拟机执行平衡调度操作,以使所述虚拟机访问本地内存。2.根据权利要求1所述的基于NUMA系统的虚拟机调度方法,其特征在于,所述调度信息包括新建虚拟机的新建调度信息,所述响应于调度信息,确定待调度的虚拟机,基于所述Cgroup为所述待调度的虚拟机执行平衡调度操作,以使所述虚拟机访问本地内存,具体包括:响应于所述新建调度信息,将新建的第一虚拟机确定为所述待调度的虚拟机;确定所述第一虚拟机所需的VCPU数量与所需内存;基于所述VCPU数量和所述所需内存执行第一平衡调度操作,以确定放置所述第一虚拟机的NUMA节点;基于所述Cgroup将所述待调度的虚拟机放置在所述NUMA节点中,以使所述虚拟机访问本地内存。3.根据权利要求2所述的基于NUMA系统的虚拟机调度方法,其特征在于,所述基于所述VCPU数量和所述所需内存执行第一平衡调度操作,以确定放置所述待调度的虚拟机的NUMA节点,具体包括:基于所述NUMA节点拓扑依次扫描所有所述NUMA节点,确定空闲CPU数量最多的第一节点;在检测到所述第一节点的空闲CPU数量大于或等于所述第一虚拟机的VCPU数量时,将所述第一节点确定为放置所述第一虚拟机的NUMA节点;在检测到所述第一节点的空闲CPU数量小于所述第一虚拟机的VCPU数量时,检测所有所述NUMA节点的空闲CPU总数是否大于或等于所述第一虚拟机的VCPU数量;在检测到所有所述NUMA节点的空闲CPU总数大于或等于所述第一虚拟机的VCPU数量时,基于跨NUMA节点操作确定放置所述第一虚拟机的NUMA节点。4.根据权利要求1所述的基于NUMA系统的虚拟机调度方法,其特征在于,所述调度信息包括删除虚拟机的删除调度信息,所述响应于调度信息,确定待调度的虚拟机,基于所述Cgroup为所述待调度的虚拟机执行平衡调度操作,以使所述虚拟机访问本地内存,具体包括:响应于所述删除调度信息,删除第二虚拟机在所述Cgroup中的子目录;以及基于第二平衡调度操作,确定剩余虚拟机中的所述待调度的虚拟机以及所述待调度的虚拟机的NUMA节点;基于所述Cgroup将所述待调度的虚拟机放置在所述NUMA节点中,以使所述虚拟机访问本地内存。5.根据权利要求4所述的基于NUMA系统的虚拟机调度方法,其特征在于,所述基于第二平衡调度操作,确定剩余虚拟机中的所述待调度的虚拟机以及所述待调度的虚拟机的NUMA节点,具体包括:
在检测到所述剩余虚拟机中具有跨NUMA节点部署的跨节点虚拟机时,将所述跨节点虚拟机确定为所述待调度的虚拟机,并将删除所述第二虚拟...

【专利技术属性】
技术研发人员:周亮胡亚弟
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1