我在 linux HyperV VM 上运行了 CPU 压力测试。Linux 报告 100% CPU 利用率,但“Hyper-V Hypervisor Virtual Processor(*)\%Total Run Time”指标显示大约 60-70%。
是否可以获得访客系统的“真实”CPU 利用率?如何使“Hyper-V Hypervisor Virtual Processor(*)\%Total Run Time”100%?
我在 linux HyperV VM 上运行了 CPU 压力测试。Linux 报告 100% CPU 利用率,但“Hyper-V Hypervisor Virtual Processor(*)\%Total Run Time”指标显示大约 60-70%。
是否可以获得访客系统的“真实”CPU 利用率?如何使“Hyper-V Hypervisor Virtual Processor(*)\%Total Run Time”100%?
您可以通过“\Hyper-V Hypervisor Logical Processor(_Total)\% Total Run Time” (LPTR)在主机上找到物理内核的使用情况
如果您拥有的虚拟处理器多于逻辑处理器(内核),它们将进行上下文切换,并且您的虚拟使用率很低;不要超额订阅处理器。虚拟机管理程序的开销很小,因此您需要比 vCPU 多一两个内核才能接近 100% 的来宾利用率。
考虑在裸机上运行此负载测试作为比较。这将显示处理器上 100% 的样子。
我可以想到对您的问题的两种不同解释:
1) Linux VM 空闲的时间有多少?
2) Linux VM 运行代码的时间有多少?
问题 #1 的答案是您的 Linux VM 不是空闲的。Linux 认为它 100% 忙的事实意味着它有 0% 的时间处于空闲状态。
问题 #2 的答案是 60-70%。Linux VM 的 VP 有 60-70% 的时间在运行。
也许您在问第三个问题:为什么我的 Linux 虚拟处理器只运行 60-70% 的时间?
要回答这个问题,您必须考虑其他因素。也许还有其他虚拟机占用了时间。也许 Linux VM 没有安装准虚拟驱动程序(集成组件),并且它的 VP 正在暂停,因为它们正试图与“完全虚拟化”的硬件交互,这意味着它们正试图在一个虚拟机中执行 I/O 和其他操作适合物理机的方式,并且管理程序正在花费时间模拟这些物理机方面。