本技术实施例涉及服务器,尤其涉及一种虚拟机绑核方法及计算设备。
背景技术:
1、随着虚拟机(virtual machine,vm)技术的普及,常见的虚拟机绑核方法是通过将vm所在的宿主机中的中央处理器(central processing unit,cpu)映射为该vm中虚拟cpu;然后,将该vm上安装的第一应用软件与该vm中虚拟cpu(即:目标虚拟cpu)绑定,以使该第一应用软件在目标虚拟cpu上运行。
2、然而,在该vm中目标虚拟cpu在宿主机上对应的物理cpu池,与该vm中其他虚拟cpu在宿主机上对应的物理cpu池存在重叠的cpu(简称:重叠物理cpu)的情况下,上述第一应用软件在目标虚拟cpu上运行时,运行在其他虚拟cpu上第二应用软件会与第一应用软件竞争上述重叠物理cpu中的cpu资源,从而降低了第一应用软件的稳定性。
技术实现思路
1、本技术实施例提供一种虚拟机绑核方法及计算设备,用于提高运行在目标虚拟cpu上的目标应用的稳定性。
2、为达到上述目的,本技术的实施例采用如下技术方案:
3、第一方面,本技术实施例提供了一种虚拟机绑核方法,该方法包括:确定目标虚拟机中是否存在第一绑定操作;该目标虚拟机是运行在宿主机中的多个虚拟机中的任一个;该第一绑定操作用于从上述目标虚拟机的多个虚拟cpu指定目标虚拟cpu,该目标虚拟cpu用于运行目标应用;在上述目标虚拟机中存在第一绑定操作的情况下,确定目标虚拟cpu在宿主机中对应的物理cpu池;该物理cpu池包括物理cpu;将物理cpu池中的目标物理cpu与目标虚拟cpu进行第二绑定操作;其中,该目标物理cpu为上述物理cpu池中的任意一个或多个物理cpu,且在上述第二绑定操作后,目标物理cpu的所有资源分配给目标虚拟cpu使用。
4、本技术实施例提供了一种虚拟机绑核方法,该方法包括:宿主机的os确定目标虚拟机中是否存在第一绑定操作,该第一绑定操作用于指定目标虚拟机中用于运行目标应用的目标虚拟cpu;在目标虚拟机中存在第一绑定操作的情况下,宿主机的os确定该目标虚拟cpu在宿主机中对应的物理cpu池;该物理cpu池包括物理cpu;宿主机的os将物理cpu池中的目标物理cpu与目标虚拟cpu进行第二绑定操作,以使进行该第二绑定操作后的目标物理cpu的所有资源分配给目标虚拟cpu使用,所以其他虚拟cpu不再占用该目标物理cpu中的cpu资源,因此提高了运行在目标虚拟cpu上的目标应用的稳定性。
5、一种可能的实现方式中,上述确定目标虚拟cpu在宿主机中对应的物理cpu池,包括:基于第一映射关系,确定目标虚拟cpu在宿主机中对应的物理cpu池;该第一映射关系包括目标虚拟机中的虚拟cpu与宿主机中的物理cpu的映射关系;该第一映射关系用于为虚拟机中的虚拟cpu分配该宿主机中的物理cpu资源。
6、一种可能的实现方式中,上述将物理cpu池中的目标物理cpu与目标虚拟cpu进行第二绑定操作,包括:基于目标物理cpu,更新第一映射关系,得到第二映射关系;其中,在该第二映射关系中,目标物理cpu与目标虚拟cpu为一对一的映射关系。
7、本技术实施例包括目标虚拟机获取用户对目标应用的第一绑定操作时,并响应于该第一绑定操作将该目标应用与目标虚拟cpu进行绑定;然后,宿主机的os获取该第一绑定操作,并根据第一映射关系确定目标虚拟cpu对应的物理cpu池,其后,宿主机的os从该物理cpu池中确定与其他虚拟cpu不存在映射关系的目标物理cpu;最后将该目标物理cpu的所有cpu资源分配给目标虚拟cpu使用,并使该目标虚拟cpu所属的物理cpu为该目标物理cpu;从而让其他虚拟cpu不再与目标虚拟cpu竞争物理cpu池中的cpu资源,因此提高了运行在目标虚拟cpu上的目标应用的稳定性。
8、一种可能的实现方式中,在上述将物理cpu池中的目标物理cpu与目标虚拟cpu进行第二绑定操作之前,该方法还包括:从物理cpu池中确定目标物理cpu;其中,在该第一映射关系中目标物理cpu与其他虚拟cpu不存在映射关系。
9、上述实施例将物理cpu池中与目标虚拟机中的其他虚拟cpu不存在映射关系的物理cpu确定为目标物理cpu,并将该目标物理cpu的cpu资源全部给上述目标虚拟机使用,以使该目标虚拟cpu所属为物理cpu为目标物理cpu(即:目标cpu与目标物理cpu存在一对一的映射关系),因此,解决了因更新上述第一映射关系而降低目标虚拟机中的其他应用的稳定性的问题。
10、一种可能的实现方式中,上述确定目标虚拟机中是否存在第一绑定操作,包括:在目标虚拟机中拦截第一绑定操作。
11、一种可能的实现方式中,上述在目标虚拟机中拦截第一绑定操作,包括:基于钩子函数在目标虚拟机中拦截上述第一绑定操作;该钩子函数被注入到目标虚拟机的内核的接入点,该接入点用于识别目标虚拟机的第一绑定操作;该钩子函数基于ebpf或kprobe实现。
12、上述实施例是通过ebpf或kprobe截获上述第一绑定操作的,所以并不需要对虚拟机的内核代码进行重新编写,因此,减少了维护代码的工作量。
13、一种可能的实现方式中,上述基于钩子函数在目标虚拟机中拦截第一绑定操作,包括:基于上述钩子函数在目标虚拟机的内核中获取上述第一绑定操作;通过上述目标虚拟机与宿主机操作系统之间的通信接口将该第一绑定操作信息传输至宿主机的内核;或,通过模拟设备将该第一绑定操作信息传输至宿主机的用户态;其中,该模拟设备是上述宿主机模拟的虚拟设备。
14、一种可能的实现方式中,上述方法还包括:确定上述目标虚拟机中是否存在解绑操作;该解绑操作用于解除上述目标应用与目标虚拟cpu的绑定关系;在上述目标虚拟机中存在解绑操作的情况下,解除该目标虚拟cpu对目标物理cpu的至少一部分资源的使用。
15、上述实施例在确定目标虚拟机中存在解绑操作的情况下,解除目标虚拟cpu对目标物理cpu的至少一部分资源的占用,以供其他虚拟cpu占用,从而提高了该目标虚拟机中其他应用的稳定性。
16、一种可能的实现方式中,上述解除目标虚拟cpu对目标物理cpu的至少一部分资源的使用,包括:将上述第二映射关系更新为第一映射关系。
17、第二方面,本技术实施例提供了一种虚拟机绑核装置,该虚拟机绑核装置包括:确定单元和绑定单元。确定单元用于确定目标虚拟机中是否存在第一绑定操作;目标虚拟机是运行在宿主机中的多个虚拟机中的任一个;第一绑定操作用于从目标虚拟机的多个虚拟cpu指定目标虚拟cpu,目标虚拟cpu用于运行目标应用;确定单元还用于在目标虚拟机中存在第一绑定操作的情况下,确定目标虚拟cpu在宿主机中对应的物理cpu池;物理cpu池包括物理cpu;绑定单元用于将物理cpu池中的目标物理cpu与目标虚拟cpu进行第二绑定操作;其中,目标物理cpu为物理cpu池中的任意一个或多个物理cpu,且进行第二绑定操作后的目标物理cpu的所有资源分配给目标虚拟cpu使用。
18、一种可能的实现方式中,确定单元用于基于第一映射关系,确定目标虚拟cpu在宿主机中对应的物理cpu池;第一映射关系包括目标虚拟机中的虚拟cpu与宿主机中的物理cpu的映射关系;第一映射关系用于为虚拟机中的虚拟cpu分配宿主机中的物理cpu资源。
19、一种可能的实现方式中,上述计算设备还包括:更新单元;该更新单元用于基于目标物理cpu,更新第一映射关系,得到第二映射关系;其中,在第二映射关系中,目标物理cpu与目标虚拟cpu为一对一的映射关系。
20、一种可能的实现方式中,确定单元用于从物理cpu池中确定目标物理cpu;其中,在第一映射关系中目标物理cpu与其他虚拟cpu不存在映射关系。
21、一种可能的实现方式中,上述虚拟机绑核装置还包括:收发单元;该收发单元用于在目标虚拟机中拦截第一绑定操作;确定单元用于在目标虚拟机中拦截到第一绑定操作的情况下,确定目标虚拟机中存在第一绑定操作;并在目标虚拟机中未拦截到第一绑定操作的情况下,确定目标虚拟机中不存在第一绑定操作。
22、一种可能的实现方式中,收发单元用于基于钩子函数在目标虚拟机中拦截第一绑定操作;钩子函数被注入到目标虚拟机的内核的接入点,接入点用于识别目标虚拟机的第一绑定操作;钩子函数基于ebpf或kprobe实现。
23、一种可能的实现方式中,收发单元用于基于钩子函数在目标虚拟机的内核中获取第一绑定操作;收发单元还用于通过目标虚拟机与宿主机操作系统之间的通信接口将第一绑定操作信息传输至宿主机的内核;或,通过模拟设备将第一绑定操作信息传输至宿主机的用户态;其中,模拟设备是宿主机模拟的虚拟设备。
24、一种可能的实现方式中,上述虚拟机绑核装置还包括:解绑单元;确定单元用于确定目标虚拟机中是否存在解绑操作;解绑操作用于解除目标应用与目标虚拟cpu的绑定关系;解绑单元用于在目标虚拟机中存在解绑操作的情况下,解除目标虚拟cpu对目标物理cpu的至少一部分资源的使用。
25、一种可能的实现方式中,上述更新单元用于将第二映射关系更新为第一映射关系。
26、第三方面,提供了一种计算设备,计算设备包括处理器和存储器,该存储器和处理器电连接;存储器用于存储程序指令,处理器执行该程序指令,以实现第一方面及其可能的实现方式的虚拟机绑核方法。
27、第四方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,当计算机可读存储介质中的计算机指令被计算设备执行时,使得计算设备执行第一方面及其可能的实现方式的虚拟机绑核方法。
28、第五方面,提供了一种包含指令的计算机程序产品,当其在计算设备上运行时,使得计算设备执行上述第一方面及其可能的实现方式的虚拟机绑核方法。
29、应当理解的是,本技术实施例的第二方面至第五方面技术方案及对应的可能的实施方式所取得的有益效果可以参见上述对第一方面及其对应的可能的实施方式的技术效果,此处不再赘述。