qemu live migration 优化 3( auto-converge)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yadehuiyin/article/details/81449186

今天介绍一个比较小众的优化项,auto-converge。

auto-converge

通过上面两节优化可以了解到,对于动态迁移来说,dirty page的生成速度影响了动态迁移的速度,如果dirty page生成速度过快,带宽又不够大,动态迁移就会处在一直无法完成的状态。

为了克服这个问题,有两个角度,第一是尽快把新产生的dirty page 传输到目的服务器,让传输速度大于dirty page生成速度,从而让动态迁移顺利完成;第二是让dirty page生成速度变慢,这样也能够使得动态迁移完成。auto-converge就是用了第二种方法帮助完成动态迁移。

把auto-converge打开后,当进行动态迁移时,qemu会降低虚拟机的运行速度,从而减少写内存的操作,这样使得dirty page生成速度降低。auto-converage会不断增加vcpu的限制(最多到99%),直到迁移成功。

auto-converage 包含两个可调参量:

cpu-throttle-initial: 初始降低vcpu性能的百分比,默认值是20%。

cpu-throttle-increment:如果迁移不成功,每次增加对vcpu性能的限制百分比,默认值是10%。

setting
r/w load 2G
#########################################################################################
1g  |  downtime default |   auto-converge on   |  completed
-----------------------------------------------------------------------------------------
Migration status: active
total time: 219188 milliseconds
expected downtime: 9998 milliseconds
setup: 7 milliseconds
transferred ram: 24759143 kbytes
throughput: 973.26 mbps
remaining ram: 1105408 kbytes
total ram: 5374400 kbytes
duplicate: 58527 pages
skipped: 0 pages
normal: 386806 pages
normal bytes: 24755584 kbytes
dirty sync count: 14
page size: 64 kbytes
multifd bytes: 0 kbytes
dirty pages rate: 2219 pages
cpu throttle percentage: 99

从上面可以看到info migrate多了一个参数 cpu throttle percentage,这就是现在vcpu被限制的性能百分比。

开启这个功能后,成功把进行2g高速内存读写的虚拟机动态迁移到另外一台服务器上了。

当然这个功能的缺点也很明显,限制了虚拟机的性能,尤其是当cpu throttle percentage达到99%,基本和死机差不多,这对于用户体验的影响很大。但是也可以考虑和别的动态迁移优化手段一同使用,开源的同时节流,无疑能让动态迁移更快的完成。

 

 

展开阅读全文

没有更多推荐了,返回首页