Debian

Win10客人KVM主機CPU佔用率高

  • August 8, 2019

前段時間有人注意到 Win10 1803 WM 會在主機上提供高 CPU 使用率,例如 25%,即使客戶端 CPU 使用率為 0%。通過在您的 virt XML 文件中添加這些設置來解決此問題:

<hyperv>
  <relaxed state='on'/>
  <vapic state='on'/>
  <spinlocks state='on' retries='8191'/>
  <synic state='on'/> 
  <stimer state='on'/>
</hyperv>

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

但問題是新的。我已從 Debian 拉伸 ( QEMU 2.8.1/ Kernel 4.9) 轉移到 Buster ( QEMU 3.1.0/ Kernel 4.19) 和 Windows 10 1809。

問題可能與我不能再<synic state='on'/>在 Buster 上使用有關,而我可以在同一硬體上的 Stretch 上使用。

當我嘗試啟動 VM 時出現此錯誤

error: internal error: process exited while connecting to monitor: Hyper-V SynIC (requested by 'hv-synic' cpu flag) requires Hyper-V VP_INDEX ('hv-vpindex')
2019-08-06T13:29:14.114943Z qemu-system-x86_64: kvm_init_vcpu failed: Function not implemented

當我跑步時,lscpu我根本沒有任何hv*標誌。但同樣,它在同一個 CPU 上的 Stretch 上工作。

至少QEMU 3.1.0/Kernel 4.19似乎 QEMU 機器類型 > pc-i440fx-3.0不支持 synIC,這在 Windows 10 來賓版本 >= 1803 上是必需的,以免出現主機 CPU 使用率高的問題。

我測試了以下機器類型:

pc-i440fx-2.8 (OK)

pc-i440fx-3.0 (OK)

pc-i440fx-3.1 (Fail)

pc-q35-3.1 (Fail)

Virt XML 文件中的 XML 元素:

</features>
  ...
  <hyperv>
     <relaxed state='on'/>
     <vapic state='on'/>
     <spinlocks state='on' retries='8191'/>
     <synic state='on'/>
     <stimer state='on'/>
  </hyperv>
  ...
</features>

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

更新:

原來是我的 XML 設置才是問題所在!

以下內容還將使您的新 QEMU 機器類型平穩執行,而沒有高主機 CPU 使用率:

<hyperv>
  <relaxed state='on'/>
  <vpindex state='on'/>
  <synic state='on'/>
  <stimer state='on'/>
</hyperv>

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

非常感謝Vitaly Kuznetsov對我如此耐心,讓我意識到配置錯誤。

引用自:https://unix.stackexchange.com/questions/534155