一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种自动选择虚拟机热迁移加速方案的方法、装置、设备与流程

2022-02-19 12:36:19 来源:中国专利 TAG:


1.本发明涉及虚拟机热迁移加速技术领域,具体涉及一种自动选择虚拟机热迁移加速方案的方法、装置、设备。


背景技术:

2.对于基于qemu

kvm的虚拟机,在使用过程中,往往由于种种原因需要对虚拟机进行迁移并且保证迁移的过程中虚拟机内部运行的业务不能够中断,例如当虚拟机所属的宿主机需要停机进行维护的时候,就需要将该宿主机上所有虚拟机迁出到其它物理主机上,此时对于运行有重要业务的虚拟机来说,在迁移的过程中需要保证业务不能够中断,这边用到了虚拟机的热迁移技术。
3.对于qemu

kvm来说,实现虚拟机的热迁移,在底层技术上,需要对运行状态的虚拟机的内存数据进行整理并发送到目标宿主机上,然后依据内存数据在目标虚拟机上继续运行该虚拟机,虚拟机在热迁移过程中需要经历短暂的停机状态,但是由于停机时间非常短,从用户和业务层面上无法感知到该停机状态的存在。对于热迁移来说,目前最大的问题在于,迁移过程中虚拟机始终处于运行状态,那么虚拟机内部运行的业务也持续的对内存数据进行读写,源虚拟机内存数据时刻在发生着变化,那么在对虚拟机内存数据进行源节点到目标节点的拷贝过程中,有一部分内存页数据将被修改,这一部分内存页称之为内存脏页,因此整个虚拟机内存拷贝的过程实际上就是持续产生脏页和消灭脏页的过程,因此如果虚拟机内业务比较繁忙时,脏页的产生速率将非常快,而在网络传输带宽一定的情况下,如果内存脏页的产生速率大于网络的传输速率,将导致虚拟机内存拷贝永远无法完成,最终导致热迁移无法完成。
4.为了解决以上问题,qemu内部实现了一些对内存拷贝过程进行加速的方法,不同的加速方法各有优劣,目前需要用户根据特定虚拟机的具体业务场景,手动指定虚拟机迁移加速方案,这种情况下,就要求用户对虚拟化底层技术有一定的了解,对用户的专业技术技能要求较高,但是,大多数情况下,普通用户无法判断自己的业务场景应该使用哪种方案进行热迁移的加速,如果选择了错误的迁移加速方案,往往会适得其反,导致虚拟机迁移时间增加,甚至无法完成热迁移过程。


技术实现要素:

5.目前需要用户根据特定虚拟机的具体业务场景,手动指定虚拟机迁移加速方案,这种情况下,就要求用户对虚拟化底层技术有一定的了解,对用户的专业技术技能要求较高,但是,大多数情况下,普通用户无法判断自己的业务场景应该使用哪种方案进行热迁移的加速,如果选择了错误的迁移加速方案,往往会适得其反,导致虚拟机迁移时间增加,甚至无法完成热迁移过程,本发明提供一种自动选择虚拟机热迁移加速方案的方法、装置、设备。
6.本发明的技术方案是:
7.第一方面,本发明技术方案提供一种自动选择虚拟机热迁移加速方案的方法,包括如下步骤:
8.接收到执行虚拟机热迁移的请求后,解析自动加速参数;
9.根据解析的参数值判断需要启动自动迁移加速时,调用第一虚拟化接口获取虚拟机的cpu时间;
10.通过cpu时间计算cpu的平均使用率;
11.当cpu的平均使用率大于设定的第一阈值时,调用第二虚拟化接口获取内存使用状态;
12.根据获取的内存使用状态计算内存使用率;
13.当内存使用率大于设定的第二阈值时,选择自动收敛的方案;
14.调用第三虚拟化接口对选择的加速方案进行参数配置,完成迁移。
15.在虚拟机热迁移时,通过虚拟化接口获取虚拟机cpu时间和内存使用状态,从而通过虚拟机cpu和内存使用状态确定一种合适的热迁移加速方案。
16.进一步的,接收到执行虚拟机热迁移的指令后,解析自动加速参数的步骤之前包括:
17.在接口服务中扩展用于接收用于控制是否启用自动选择迁移加速方案的自动加速参数的虚拟机热迁移接口。
18.通过扩展的接口收收请求时,解析请求中的自动加速参数的值。
19.进一步的,调用第一虚拟化接口获取虚拟机的cpu时间的步骤包括:
20.调用第一虚拟化接口获取虚拟机的cpu时间;
21.经过t秒后,调用第一虚拟化接口获取虚拟机的cpu时间;
22.通过cpu时间计算cpu的平均使用率的步骤包括:
23.通过两次cpu时间的差值计算出在过去t秒内虚拟机cpu的平均使用率。
24.进一步的,该方法还包括:
25.当cpu的平均使用率小于或等于设定的第一阈值时,选择多线程压缩的方案;
26.根据cpu使用率计算压缩内存数据使用的线程数;执行步骤:调用第三虚拟化接口对选择的加速方案进行参数配置,完成迁移。
27.进一步的,该方法还包括:
28.当内存使用率小于或等于设定的第二阈值时,选择基于异或运算内存差异数据压缩的方案;
29.计算基于异或运算内存差异数据压缩可用缓存的大小;执行步骤:调用第三虚拟化接口对选择的加速方案进行参数配置,完成迁移。
30.进一步的,当内存使用率大于设定的第二阈值时,选择自动收敛的方案的步骤之后还包括:
31.设置自动收敛的初始cpu限制频率比例以及限频递增幅度。
32.进一步的,调用第三虚拟化接口对选择的加速方案进行参数配置,完成迁移的步骤包括:调用第三虚拟化接口通过传递参数的方式将选择的迁移加速方案传递到虚拟化层面,虚拟化接口执行迁移过程时根据传递的迁移加速方案对热迁移过程进行加速。
33.第二方面,本发明技术方案提供一种自动选择虚拟机热迁移加速方案的装置,包
括参数解析模块、cpu时间获取模块、计算模块、内存使用状态获取模块、判断选择模块、执行模块;
34.参数解析模块,用于接收到执行虚拟机热迁移的请求后,解析自动加速参数;
35.cpu时间获取模块,用于根据解析的参数值判断需要启动自动迁移加速时,调用第一虚拟化接口获取虚拟机的cpu时间;
36.计算模块,用于通过cpu时间计算cpu的平均使用率;根据获取的内存使用状态计算内存使用率;
37.内存使用状态获取模块,用于当cpu的平均使用率大于设定的第一阈值时,调用第二虚拟化接口获取内存使用状态;
38.判断选择模块,用于当内存使用率大于设定的第二阈值时,选择自动收敛的方案;
39.执行模块,用于调用第三虚拟化接口对选择的加速方案进行参数配置,完成迁移。
40.进一步的,该装置还包括接口设置模块;
41.接口设置模块,用于在接口服务中扩展用于接收用于控制是否启用自动选择迁移加速方案的自动加速参数的虚拟机热迁移接口。
42.进一步的,cpu时间获取模块,具体用于调用第一虚拟化接口获取虚拟机的cpu时间;经过t秒后,调用第一虚拟化接口获取虚拟机的cpu时间;
43.计算模块,用于通过两次cpu时间的差值计算出在过去t秒内虚拟机cpu的平均使用率。
44.进一步的,判断选择模块,还用于当cpu的平均使用率小于或等于设定的第一阈值时,选择多线程压缩的方案;
45.计算模块,还用于根据cpu使用率计算压缩内存数据使用的线程数。
46.进一步的,判断选择模块,还用于当内存使用率小于或等于设定的第二阈值时,选择基于异或运算内存差异数据压缩的方案;
47.计算模块,还用于计算基于异或运算内存差异数据压缩可用缓存的大小。
48.进一步的,该装置还包括设置模块;
49.设置模块,用于设置自动收敛的初始cpu限制频率比例以及限频递增幅度。
50.进一步的,执行模块,具体用于调用第三虚拟化接口通过传递参数的方式将选择的迁移加速方案传递到虚拟化层面,虚拟化接口执行迁移过程时根据传递的迁移加速方案对热迁移过程进行加速。
51.从以上技术方案可以看出,本发明具有以下优点:可以根据虚拟机运行状态,自动的选择一种合适的迁移加速方案,避免了用户由于对相关技术原理不熟悉导致的迁移失败问题的发生。可以在用户对虚拟机进行热迁移的时候自动选择迁移加速方案,提高了迁移效率。避免了需要用户手动选择迁移加速方案的情况,同时也避免了用户对底层专业技术不够了解时选择错误的迁移加速方案导致迁移失败。采用本发明后,无论是从云平台易用性还是从产品性能指标,都能够提高用户的使用体验。
52.此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
53.由此可见,本发明与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。
附图说明
54.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
55.图1是本发明一个实施例的方法的示意性流程图。
56.图2是本发明另一个实施例的方法的示意性流程图。
57.图3是本发明一个实施例的装置的示意性框图。
具体实施方式
58.为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
59.qemu:一种开源的模拟处理器,是icos项目中负责在底层创建虚拟机的程序;
60.qemu

kvm:qemu程序基于kvm内核虚拟机的一种实现,在本技术中可以认为等同于qemu;
61.xbzrle:一种基于异或运算内存差异数据压缩技术,该技术通过异或运算获取内存页数据差异并根据一定格式进行压缩;
62.内存脏页收敛:随着热迁移的进行,剩余的内存脏页越来越少并趋于零的过程。
63.如图1所示,本发明实施例提供一种自动选择虚拟机热迁移加速方案的方法,包括如下步骤:
64.步骤11:接收到执行虚拟机热迁移的请求后,解析自动加速参数;
65.步骤12:根据解析的参数值判断需要启动自动迁移加速时,调用第一虚拟化接口获取虚拟机的cpu时间;
66.步骤13:通过cpu时间计算cpu的平均使用率;
67.步骤14:当cpu的平均使用率大于设定的第一阈值时,调用第二虚拟化接口获取内存使用状态;
68.步骤15:根据获取的内存使用状态计算内存使用率;
69.步骤16:当内存使用率大于设定的第二阈值时,选择自动收敛的方案;
70.步骤17:调用第三虚拟化接口对选择的加速方案进行参数配置,完成迁移。
71.在虚拟机热迁移时,通过虚拟化接口获取虚拟机cpu时间和内存使用状态,从而通过虚拟机cpu和内存使用状态确定一种合适的热迁移加速方案。
72.如图2所示,本发明实施例提供一种自动选择虚拟机热迁移加速方案的方法,影响加速方案选择的变量主要有虚拟机cpu使用率、内存使用率和网络传输带宽,由于在用户云平台部署时往往采用独立的网卡设备用于虚拟机的管理业务,而虚拟机运行具体业务使用另外一套网络设备,因此虚拟机内部网络资源占用率并不影响热迁移加速方案的选择,所以我们在选择热迁移加速方案时主要考虑cpu使用率和内存使用率两个指标。
73.上层云管平台openstack在接收到用户下发的热迁移指令后,通过调用libvirt提
供的接口并经过一定计算,可以获取对应虚拟机的cpu和内存使用情况,此时对虚拟机cpu和内存使用率进行综合判断,最终选择出一种合适的迁移加速方案。如果cpu资源占用率小于或等于60%,便可选择采用多线程压缩的方案进行迁移加速,相反,如果cpu资源占用率大于60%时,即可排除多线程压缩的方案,然后判断内存占用率,如果内存占用率小于或等于50%,可以选择xbzrle的加速方案,如果内存占用率大于50%,则最终选择自动收敛的方案,通过牺牲虚拟机业务的连续稳定性来避免热迁移的失败。确定了热迁移加速方案后,便可以在调用libvirt迁移接口时,通过传参的方式将选定的迁移加速方案传递到libvirt层面,libvirt执行迁移过程时会根据传递的迁移加速方案对热迁移过程进行加速。所述的方法包括如下步骤:
74.步骤21:在接口服务中扩展用于接收用于控制是否启用自动选择迁移加速方案的自动加速参数的虚拟机热迁移接口;
75.本步骤中,在上层云管平台openstack的nova_api服务中扩展虚拟机热迁移接口,可以接收额外的自动加速参数auto_accelerate=true/false,用于控制是否启用自动选择迁移加速方案。
76.步骤22:接收到执行虚拟机热迁移的请求后,解析自动加速参数;
77.本步骤中,nova_compute服务在接收到nova_api热迁移流程后,解析auto_accelerate参数,并根据参数值确定是否启用自动选择迁移加速。
78.步骤23:根据解析的参数值判断需要启动自动迁移加速时,调用第一虚拟化接口获取虚拟机的cpu时间;
79.当热迁移请求中auto_accelerate值为true时,nova_compute先调用libvirt getcpustats接口,获取虚拟机的cpu时间,经过一秒后再次调用getcpustats获取虚拟机此时的cpu时间,其中,第一虚拟化接口为libvirt getcpustats接口,t为1秒。
80.步骤24:通过cpu时间计算cpu的平均使用率;
81.本步骤中,通过两次cpu时间的差值计算出在过去一秒内虚拟机cpu的平均使用率。
82.步骤25:判断cpu的平均使用率是否大于设定的第一阈值,若是,执行步骤26;否则执行步骤30;本步骤中,第一阈值设置为60%。
83.步骤26:调用第二虚拟化接口获取内存使用状态;
84.libvirt memorystats接口为第二虚拟化接口;当cpu使用率大于60%时,调用libvirt memorystats接口,获取虚拟机当前内存使用状态。
85.步骤27:根据获取的内存使用状态计算内存使用率;
86.通过步骤26中调用返回结果中的available字段和unused字段的值可以计算出当前虚拟机的内存使用率。
87.步骤28:判断内存使用率是否大于设定的第二阈值,若是,执行步骤29,否则,执行步骤31;
88.本步骤中,第二阈值为50%;
89.步骤29:选择自动收敛的方案,设置自动收敛的初始cpu限制频率比例以及限频递增幅度;执行步骤32;
90.同时为了保证虚拟机内部业务的稳定和连续,设置自动收敛的初始cpu限制频率
比例为95%,限频递增幅度为5%。
91.需要说明的是,自动收敛方案:qemu会根据内存数据的拷贝情况,依据一定的算法,如果一定时间内虚拟机内存脏页无法收敛,qemu进程将会通过降低cpu频率的方式减少内存脏页的产生,以达到内存脏页快速收敛的目的,由于该方案会在一定时间内降低虚拟机cpu频率,这会导致虚拟机内部业务运行受到一定影响,因此,该方案适用于虚拟机cpu和内存资源占用率都很高,通过常规的方案无法完成热迁移过程的情况。
92.步骤30:选择多线程压缩的方案,根据cpu使用率计算压缩内存数据使用的线程数;执行步骤32;
93.具体计算方法为:cpu_cores*(1

cpu_used%),即使用虚拟机cpu数量乘以未使用的cpu百分比,对结果取整后即为压缩内存使用的线程数。
94.需要说明的是,多线程压缩的方案:在内存数据通过网络传输之前先采用压缩算法对数据进行压缩,可以减小数据的传输量,由于该方案在对内存数据压缩时需要占用一部分cpu资源,因此在cpu资源较紧张时,由于内存数据没有足够的cpu资源用于压缩运算,这种情况下不仅不能提高内存数据的迁移效率,而且会使内存数据拷贝时间变长。
95.步骤31:选择基于异或运算内存差异数据压缩的方案,计算基于异或运算内存差异数据压缩可用缓存的大小;执行步骤32;
96.计算用于xbzrle缓存的内存大小,根据步骤26中调用返回的结果,可以获取到虚拟机内未使用的内存大小,将未使用内存容量的80%用于xbzrle缓存,剩余20%留给虚拟机使用。
97.需要说明的是,xbzrle:即基于异或运算的内存差异数据压缩技术,这种方案下,对于内存脏页不会全部进行拷贝,而是只拷贝脏页的差异数据部分,也可以减小数据的传输量,但是这种方案下,在初始状态下不能减小数据的传输量,直到初始内存拷贝完毕,开始拷贝脏页数据时,才能体现出其加速效果,因此,如果虚拟机内存使用量非常高的情况下,初始状态的内存拷贝将占用大量网络带宽。该方案适用于虚拟机内存占用不高,但是cpu资源比较紧张的情况。
98.步骤32:调用第三虚拟化接口对选择的加速方案进行参数配置,完成迁移。本步骤中,将最终确定的热迁移加速方案通过设置libvirt migrate3接口flag的方式进行配置,然后通过params参数设置加速方案的额外参数。调用libvirt migrate3接口完成迁移。第三虚拟化接口为libvirt migrate3接口。
99.如图3所示,本发明实施例提供一种自动选择虚拟机热迁移加速方案的装置,包括参数解析模块、cpu时间获取模块、计算模块、内存使用状态获取模块、判断选择模块、执行模块;
100.参数解析模块,用于接收到执行虚拟机热迁移的请求后,解析自动加速参数;
101.cpu时间获取模块,用于根据解析的参数值判断需要启动自动迁移加速时,调用第一虚拟化接口获取虚拟机的cpu时间;
102.计算模块,用于通过cpu时间计算cpu的平均使用率;根据获取的内存使用状态计算内存使用率;
103.内存使用状态获取模块,用于当cpu的平均使用率大于设定的第一阈值时,调用第二虚拟化接口获取内存使用状态;
104.判断选择模块,用于当内存使用率大于设定的第二阈值时,选择自动收敛的方案;
105.执行模块,用于调用第三虚拟化接口对选择的加速方案进行参数配置,完成迁移。
106.由于在用户云平台部署时往往采用独立的网卡设备用于虚拟机的管理业务,而虚拟机运行具体业务使用另外一套网络设备,因此虚拟机内部网络资源占用率并不影响热迁移加速方案的选择,所以我们在选择热迁移加速方案时主要考虑cpu使用率和内存使用率两个指标。
107.本发明实施例提供一种自动选择虚拟机热迁移加速方案的装置,包括参数解析模块、cpu时间获取模块、计算模块、内存使用状态获取模块、判断选择模块、执行模块、接口设置模块;
108.接口设置模块,用于在接口服务中扩展用于接收用于控制是否启用自动选择迁移加速方案的自动加速参数的虚拟机热迁移接口;
109.参数解析模块,用于接收到执行虚拟机热迁移的请求后,解析自动加速参数;
110.cpu时间获取模块,用于根据解析的参数值判断需要启动自动迁移加速时,调用第一虚拟化接口获取虚拟机的cpu时间;经过t秒后,调用第一虚拟化接口获取虚拟机的cpu时间;
111.计算模块,用于通过两次cpu时间的差值计算出在过去t秒内虚拟机cpu的平均使用率;根据获取的内存使用状态计算内存使用率;还用于根据cpu使用率计算压缩内存数据使用的线程数;还用于计算基于异或运算内存差异数据压缩可用缓存的大小;
112.内存使用状态获取模块,用于当cpu的平均使用率大于设定的第一阈值时,调用第二虚拟化接口获取内存使用状态;
113.判断选择模块,用于当内存使用率大于设定的第二阈值时,选择自动收敛的方案;还用于当cpu的平均使用率小于或等于设定的第一阈值时,选择多线程压缩的方案;还用于当内存使用率小于或等于设定的第二阈值时,选择基于异或运算内存差异数据压缩的方案;
114.执行模块,用于调用第三虚拟化接口通过传递参数的方式将选择的迁移加速方案传递到虚拟化层面,虚拟化接口执行迁移过程时根据传递的迁移加速方案对热迁移过程进行加速。
115.该装置还包括设置模块;用于设置自动收敛的初始cpu限制频率比例以及限频递增幅度。具体设置自动收敛的初始cpu限制频率比例为95%,限频递增幅度为5%。
116.本发明实施例提供的一种计算机设备,该设备可以包括:处理器、通信接口、存储器和总线,其中,处理器,通信接口,存储器通过总线完成相互间的通信。总线可以用于电子设备与传感器之间的信息传输。处理器可以调用存储器中的逻辑指令,以执行如下方法:步骤11:接收到执行虚拟机热迁移的请求后,解析自动加速参数;步骤12:根据解析的参数值判断需要启动自动迁移加速时,调用第一虚拟化接口获取虚拟机的cpu时间;步骤13:通过cpu时间计算cpu的平均使用率;步骤14:当cpu的平均使用率大于设定的第一阈值时,调用第二虚拟化接口获取内存使用状态;步骤15:根据获取的内存使用状态计算内存使用率;步骤16:当内存使用率大于设定的第二阈值时,选择自动收敛的方案;步骤17:调用第三虚拟化接口对选择的加速方案进行参数配置,完成迁移。
117.在一些具体的实施例中,所述处理器可以调用存储器中的逻辑指令,具体可以实
现以下步骤:当cpu的平均使用率小于或等于设定的第一阈值时,选择多线程压缩的方案;根据cpu使用率计算压缩内存数据使用的线程数;当内存使用率小于或等于设定的第二阈值时,选择基于异或运算内存差异数据压缩的方案;计算基于异或运算内存差异数据压缩可用缓存的大小。
118.在一些具体的实施例中,所述处理器可以调用存储器中的逻辑指令,具体可以实现以下步骤:当内存使用率大于设定的第二阈值时,选择自动收敛的方案时,设置自动收敛的初始cpu限制频率比例以及限频递增幅度。
119.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
120.此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
121.尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献