所以我注意到我的 Windows KVM 客户机(由 proxmox 管理)在执行非常简单的操作(例如在 youtube 上观看视频)时 CPU 使用率极高。例如,当通过 Google Chrome 以 480p 观看单个视频时,4 核 KVM 实例的 CPU 使用率将上升到约 75%。1080p 会最大化 CPU。我怎么可能不能观看 1080p 视频?这是我的主机 CPU:Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz。我还注意到主机具有以下集成 GPU:Matrox Electronics Systems Ltd. MGA G200eW WPCM450(rev 0a)。以下是我尝试过的:
- Opera 和 Firefox 等不同的浏览器确实提供了略低的 CPU 数字,但同样太高而无法接受。
- 在 Google Chrome 设置中启用和禁用硬件加速没有任何作用。
- 将 CPU 类型设置为主机没有帮助
- 将显示设置为 VirtIO-GPU 没有任何作用
- 将显示设置为 SPICE 并安装 spice-guest-tools 没有任何作用
任何帮助都将不胜感激!
答案1
根据我的经验,当虚拟硬件驱动程序设置得不太理想时,Windows 客户机通常会消耗过多的 CPU。
我通常做的设置是:
- 存储应始终为 VirtIO-SCSI。如果客户机中已安装 VirtIO-SCSI 驱动程序,则只需更改现有 VM 的此设置即可,但安装新客户机时还需要安装 VirtIO-Win ISO,以便加载驱动程序。
- 我将 CPU 设置为与底层处理器的代码名称匹配。对于 E5-2697 V2,这意味着使用 IvyBridge-IBRS 而不是 kvm64 或主机。(IBRS 激活某些 Spectre/Meltdown 缓解措施。)我仅在需要嵌套虚拟化时才使用“主机”,即在 Windows 客户机内运行 Hyper-V,因为嵌套 Hyper-V 实际上需要它。
- 插槽设置为 1,核心设置为所需的虚拟 CPU 数量。
- 显示应设置为 SPICE。其他设置均无法实现流畅的视频播放,因此没有必要更改它。
答案2
在发现https://www.reddit.com/r/VFIO/comments/80p1q7/high_kvmqemu_cpu_utilization_when_windows_10/...
?sudo? virsh edit vm-name
<clock offset='localtime'>
- <timer name='rtc' tickpolicy='catchup'/>
- <timer name='pit' tickpolicy='delay'/>
- <timer name='hpet' present='no'/>
+ <timer name='hpet' present='yes'/>
<timer name='hypervclock' present='yes'/>
</clock>
就我而言,它将每个 Windows 客户机 (KVM 进程提供服务) 的 CPU 使用率从 20%-30% 降低到 3%-5%。