首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KVM:将VM升级到windows 101803后的高主机CPU负载

KVM:将VM升级到windows 101803后的高主机CPU负载
EN

Ask Ubuntu用户
提问于 2018-05-09 11:07:50
回答 3查看 18.7K关注 0票数 7

我正在使用KVM/libvirt/qemu和Windows 10虚拟机运行Ubuntu16.04服务器。在将Windows 10升级到最新的1803版本(2018年4月更新)之后,我注意到VM响应速度减慢,主机CPU负载过高。我所做的测试:

  • 主机上使用的"top“报告说,qemu-system-x86进程占用CPU的38-44%,而VM空闲,并报告windows进程管理器中负载的4-6%。当windows显示CPU负载的50%时,主机显示qemu-system-x86进程的cpu负载为150%-200%。在旧的windows 10 1709 VM中,主机CPU负载不会增加8-10倍。
  • 主机上的"dstat“报告了很多系统->csw,大约13k。
  • 我用AMD FX-4300、Ubuntu 17.10 dekstop + kvm、将windows 10升级到1803的相同设置测试了另一个系统,我在这台机器上也遇到了主机CPU和dstat-csw高的问题。
  • 我拿了第三台带有英特尔核心i7的机器,安装了一个新的Ubuntu18.04桌面+ kvm,安装了一个新的Windows 10,安装了来自这里的Virtio驱动程序,我也有同样的高cpu问题。

我能做什么?我用的是正确的车夫吗?

谢谢

EN

回答 3

Ask Ubuntu用户

发布于 2018-06-17 16:45:25

在这里找到了具有相同问题的人,并可能对此进行修复:https://forum.proxmox.com/threads/high-cpu-load-for-windows-10-guests-when-idle.44531/

测试了更改我自己的配置,并在vm中将hpet设置为yes,并为我修复了它。

代码语言:javascript
复制
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='yes'/>
    <timer name='hypervclock' present='yes'/>
  </clock>

宠物部分是很重要的。

票数 9
EN

Ask Ubuntu用户

发布于 2021-09-22 20:43:34

Windows1021H1和qemu-kvm-4.2.0也有同样的问题。当windows机器空闲时,我获得了大约30%的cpu使用率。修复后,我得到了大约5%。

通过添加hv_synichv_stimer hyperv的启发,解决了这个问题。您可能会遇到以下错误

代码语言:javascript
复制
error: Failed to start domain mymachine.local
error: internal error: process exited while connecting to monitor: Hyper-V synthetic timers (hv-stimer) requires Hyper-V clocksources (hv-time)
Hyper-V synthetic interrupt controller (hv-synic) requires Hyper-V VP_INDEX MSR (hv-vpindex)
2021-09-22T20:30:06.440656Z qemu-kvm: kvm_init_vcpu failed: Function not implemented

为了使上面的启发工作,您必须添加hv_time (它在libvirt中被翻译成hypervclock )和hv_vpindex启发。

我的最后一个libvirt XML文件看起来像

代码语言:javascript
复制
  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
      <vpindex state='on'/>
      <synic state='on'/>
      <stimer state='on'/>
    </hyperv>
    <smm state='on'/>
  </features>

  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='discard'/>
    <timer name='hpet' present='yes'/>
    <timer name='hypervclock' present='yes'/>
  </clock>

免责声明:这是在CentOS 8下完成的,但是应该在任何libvirt控制的KVM下工作。

票数 1
EN

Ask Ubuntu用户

发布于 2022-04-13 19:57:33

目前的答案对我都没有用。一个对我有用的解决方法就是让Windows 10任务管理器保持打开状态。我总是注意到,当CPU使用率很高时,我会打开Windows 10任务管理器,会有使用100% CPU的“系统中断”,但它会立即消失。显然,对于那些没有保持交互式会话打开的人,FWIW不起作用。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1033985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档