一种基于虚拟机负载的虚拟机自适应热迁移方法及系统与流程

文档序号:35098233发布日期:2023-08-10 05:49阅读:39来源:国知局
一种基于虚拟机负载的虚拟机自适应热迁移方法及系统与流程

本发明涉及虚拟机领域,具体涉及一种基于虚拟机负载的虚拟机自适应热迁移方法及系统。


背景技术:

1、虚拟机的热迁移是指将运行在宿主机a上的虚拟机平滑的迁移到宿主机b上运行以保证虚拟机热迁移过程中用户服务正常运行,实际上会有短暂的毫秒(ms)级别停机服务,但是对用户感知影响较小。虚拟机热迁移时需要迁移两部分数据:磁盘和内存数据。一般情况下磁盘数据的迁移不会导致迁移失败,迁移失败多数场景发生在内存的迁移,这里只研究虚拟机内存数据的迁移的情况。内存迁移的过程有两种实现方式,分别是预拷贝(pre-copy)和提交拷贝(post-copy),post-copy方式热迁移有一定的生产风险,因此一般采用基于pre-copy热迁移方式。为简化迁移过程,可采用虚拟机磁盘采用共享存储的方式,虚拟机在进行热迁移的过程中,不需要迁移磁盘数据,直接进行内存数据的迁移。

2、内存数据的迁移受限于网络带宽,一般情况下采用管理网进行迁移,管理网一般是千兆或者万兆网卡,在此网络带宽下进行虚拟机热迁移。虚拟机热迁移目的主要目的是在不影响用户虚拟机正常运行的前提下,实现对内核和虚拟机化组件软件修复以及硬件故障修复。在管理网络带宽不高,虚拟机实际负载却很高的情况下,进行热迁移操作,热迁移就有可能出现大概率迁移失败的场景,因此需要对热迁移技术进行技术优化。

3、目前虚拟机热迁移,qemu社区已经实现auto-converge(自动收敛)功能和xbzrle功能两种热迁移优化方式:开启auto-converge功能后,可以在传输过程中不断降低vcpu被实际调度上生成数据脏页,具有良好的收敛功能,最终可以使虚拟机在规定的迁移时间内,把内存脏页全部迁移到目的端;开启xbzrle功能后,在迭代迁移的时候需要将新产生的脏页数据和原始数据进行异或操作,只传输发生变化的内存脏页,极大的减少了内存数据的重复传输,如果是内存密集型虚拟机提升了传输的效率,将数据进过压缩处理,然后传输到目的端,目的端的虚机接受到内存数据,最终完成热迁移操作。然后在实际使用的情况下,通过libvirt下发qmp命令(基于json格式的传输协议,用于与qemu虚拟机实例进行交互,例如查询虚拟机的相关状态等),一旦确定了一台计算节点上虚拟机热迁移的方式和优化方法,就不能进行更改。而在一台计算节点上虚拟机数量可能有几十台。每一台虚拟机的实际运行负载情况还不一样,即要考虑迁移的平稳性,对用户业务的影响减少到最小,又要考虑热迁移的成功率。


技术实现思路

1、研究发现,开启xbzrle功能后,如果cpu密集性的虚拟机,此时虚拟机内存脏页无法收敛,会导致迁移大概率失败。如果是内存密集型虚拟机,而迁移时开启auto-converge功能后,降低了vcpu(虚拟处理器)的运行频率,然后内存还是源源不断的动态内存分配(malloc),也会导致迁移失败。本发明要解决的技术问题:针对上述发现,提供一种基于虚拟机负载的虚拟机自适应热迁移方法及系统,本发明旨在根据目标虚拟机的cpu利用率和内存利用率识别目标虚拟机的负载情况,从而在xbzrle功能和auto-converge功能两者中自动选择最适合迁移优化手段,以避免由于负载差异所导致的虚拟机热迁移失败的概率。

2、为了解决上述技术问题,本发明采用的技术方案为:

3、一种基于虚拟机负载的虚拟机自适应热迁移方法,包括:

4、s101,在收到目标虚拟机的热迁移命令时,跳转步骤s102;

5、s102,获取目标虚拟机的cpu利用率和内存利用率;

6、s103,根据目标虚拟机的cpu利用率和内存利用率为目标虚拟机选择所需的热迁移优化方式:若cpu利用率超过第一设定阈值,则启动auto-converge功能定期削减vcpu的执行时间以减少脏页内存的产生量直至热迁移完成;否则,若内存利用率超过第二设定阈值,则启动xbzrle功能进行内存脏页传输直至热迁移完成。

7、可选地,步骤s102中获取目标虚拟机的cpu利用率包括:获取虚拟机进程的进程标识符pid以及目标虚拟机对应线程的线程标识符tid,根据进程标识符pid和线程标识符tid确定目标虚拟机的状态文件的路径,并按照指定的间隔读取目标虚拟机在该路径下的状态文件并获取目标虚拟机的用户态时间utime和内核态时间stime,并根据用户态时间utime和内核态时间stime计算目标虚拟机的cpu利用率。

8、可选地,所述计算目标虚拟机的cpu利用率的函数表达式为:

9、cpuusage =((utime + stime)-(lastutime + laststime))/100,

10、上式中,cpuusage表示目标虚拟机的cpu利用率,utime表示目标虚拟机本次的用户态时间,stime表示目标虚拟机本次的内核态时间,lastutime表示目标虚拟机上一次的用户态时间,laststime表示目标虚拟机上一次的内核态时间。

11、可选地,步骤s102中,获取目标虚拟机的内存利用率包括:利用部署在目标虚拟机中的代理服务获取目标虚拟机的总内存大小memtotal、可用内存大小memfree 、缓冲区大小buffer、缓存大小cached以及slab内存的可回收部分大小sreclaimable;然后根据目标虚拟机的总内存大小memtotal、可用内存大小memfree 、缓冲区大小buffer、缓存大小cached以及slab内存的可回收部分大小sreclaimable计算目标虚拟机的内存利用率。

12、可选地,所述计算目标虚拟机的内存利用率的函数表达式为:

13、memutil=(memtotal-(memfree + buffer + cached + sreclaimable))/memtotal×100

14、上式中,memutil表示目标虚拟机的内存利用率,memtotal表示目标虚拟机的总内存大小,memfree表示目标虚拟机的可用内存大小,buffer表示目标虚拟机的缓冲区大小,cached表示目标虚拟机的缓存大小,sreclaimable表示目标虚拟机的slab内存的可回收部分大小。

15、可选地,步骤s101~s103的执行主体为快速仿真器qemu,步骤s101中收到目标虚拟机的热迁移命令是指快速仿真器qemu收到虚拟化平台libvirt通过qmp协议下发的目标虚拟机的热迁移命令。

16、可选地,步骤s101包括:快速仿真器qemu收到虚拟化平台libvirt通过qmp协议下发的目标虚拟机的热迁移命令,首先判断热迁移命令中是否包含指定的自适应参数,若包含指定的自适应参数则跳转步骤s102;否则,直接目标虚拟机的热迁移命令直至热迁移完成。

17、此外,本发明还提供一种基于虚拟机负载的虚拟机自适应热迁移方法,包括:

18、s201,在收到目标虚拟机的热迁移命令时,跳转步骤s202;

19、s202,获取目标虚拟机的cpu利用率和内存利用率以确定目标虚拟机的类型;若cpu利用率超过第一设定阈值,则判定目标虚拟机的类型为cpu密集型的虚拟机;否则,若内存利用率超过第二设定阈值,则判定目标虚拟机的类型为内存密集型的虚拟机;

20、s203,根据目标虚拟机的类型为目标虚拟机选择所需的热迁移优化方式:若目标虚拟机的类型为cpu密集型的虚拟机,则启动auto-converge功能定期削减vcpu的执行时间以减少脏页内存的产生量直至热迁移完成;若目标虚拟机的类型为内存密集型的虚拟机,则启动xbzrle功能进行内存脏页传输直至热迁移完成。

21、此外,本发明还提供一种基于虚拟机负载的虚拟机自适应热迁移系统,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述基于虚拟机负载的虚拟机自适应热迁移方法。

22、此外,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行所述基于虚拟机负载的虚拟机自适应热迁移方法。

23、和现有技术相比,本发明主要具有下述优点:本发明包括在收到目标虚拟机的热迁移命令时,获取目标虚拟机的cpu利用率和内存利用率并选择热迁移优化方式:若cpu利用率超过第一设定阈值,则启动auto-converge功能定期削减vcpu的执行时间以减少脏页内存的产生量直至热迁移完成;否则若内存利用率超过第二设定阈值,则启动xbzrle功能进行内存脏页传输直至热迁移完成,本发明通过根据目标虚拟机的cpu利用率和内存利用率识别目标虚拟机的负载情况,能够在xbzrle功能和auto-converge功能两者中自动选择最适合迁移优化手段,从而可以避免由于负载差异所导致的虚拟机热迁移失败的概率,提升虚拟机热迁移的成功概率,既能最大程度保证用户业务的连续性,又能提升热迁移的成功率,提升用户使用满意度。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1