因此,网络上有很多指南建议跟踪 Perfmon 计数器 Hyper-V Hypervisor 虚拟处理器\CPU 每次调度等待时间的值,作为最接近 Hyper-V 的 VMWare CPU 就绪时间的等效值。
不幸的是,关于这个计数器的哪些值可能会出现问题,或者在性能良好的系统上预期哪些范围的值,似乎没有太多的指导。
我最初的想法是,如果 CPU 使用率与每次调度的 CPU 等待时间同时上升,则表明至少有一个客户 vCPU 存在 CPU 瓶颈。
有没有更好的方法来解释这个计数器?例如,是否可以将其转换为等待 CPU 的时间百分比?
Microsoft 或 Hyper-V 从业者倾向于使用的参考值范围是什么?
有人能告诉我在 CPU 没有超额订阅的性能良好的系统上他们看到的这个计数器的值吗?
谢谢!
答案1
这每次调度的 CPU 等待时间柜台在Hyper-V 虚拟机管理程序根虚拟处理器或者Hyper-V 虚拟机管理程序虚拟处理器计数器集的意思很简单:
等待虚拟处理器分派到逻辑处理器上的平均时间(以纳秒为单位)。
“应该是多少?”这个问题的答案完全取决于硬件。你只是希望它尽可能低,但有些计算机比其他计算机更快。
需要记住的另一件事是,具有更多 vCPU 的虚拟机将在同步开销方面产生轻微的成本。
举个例子,我正在研究一台有 8 个逻辑处理器的 Hyper-V 主机。在该 Hyper-V 主机上,只有一个正在运行的虚拟机。该虚拟机有两个 vCPU。因此,处理器之间实际上应该不存在任何争用。
该虚拟机上的 vCPU 在准备好运行后,需要等待大约 7000 到 10000 纳秒才能被调度到逻辑处理器上。
如果您的物理处理器速度更快或更慢,或者您的主机上的虚拟机/vCPU 与逻辑处理器的比率更高,这些数字将会有所不同。主机上的 vCPU 越多 = 调度程序要调度的事情越多 = 等待时间增加。这也说明了为什么您真的不想在主机上安装除 Hyper-V 角色之外的其他软件 - 因为主机上的无关软件将抢占并推迟 vCPU 想要执行的工作的调度,从而再次推高该数字。
答案2
要计算每个 CPU 的性能损失百分比,请执行以下操作:
将收集到的值除以轮询间隔内的单位数,然后乘以 100 即可得出百分比影响。例如,如果收集到的指标为 50 毫秒,收集周期为 20 秒,则将 50 毫秒除以 20000 毫秒,再乘以 100%,即可得出该收集周期内虚拟 CPU 的性能影响为 0.25%。