问题描述
在笔记本运行KVM虚拟机,然后休眠,在恢复时,出现CPU占用极高的现象。
在笔记本睡眠恢复时,在KVM中虚拟机出现CPU使用极高的现象。
原因分析
在休眠唤醒时,客户机的虚拟CPU认为自己错过了一些时间。然后,它会读取很多的数据到内存中,并将“内存”映射到“虚拟机的页偏移”将带来CPU与磁盘错误负载。
虚拟机的“暂停”与“恢复”需要“读取”与“重新映射”整个“内存转储”到“内存”中。
解决办法
所有问题都在于CPU时间上。
在Launchpad的「Bug #1174654」中有人给出了解决方案,但是没有经过严格验证,我也没有测试:
<clock offset='localtime'> <timer name='rtc' track='guest'/> </clock>
!!!我们没有深入研究,这是以个解决方向。
附加说明
回到需求当中,用Docker也可以解决问题(虽然用Linux发行版,但是我不是在Linux中运行Windows虚拟机),只需要在容器中运行systemd进程,然后将容器当作“虚拟机”使用即可。还没有到必须使用虚拟机的地步。
相关链接
!!! Live snapshot revert times increases linearly with snapshot age
参考文献
Why Linux inside KVM gets busy after I put the host to suspend-to-ram?
qemu-system-x86_64 takes 100% CPU after host machine resumed from suspend to ram