我有一台相对强大的双至强(12 核)服务器
MS Windows Server 2016
已安装并 运行Hyper-V
。我创建了一堆虚拟机 - 它们都不是真正需要资源的 - 除了一个我想用来处理安全摄像头的反馈的虚拟机。所以我在设置中为该虚拟机提供了 8 个 vCPU:
但即使该虚拟机的 CPU 使用率达到 70%,主机上显示的 CPU 使用率也几乎为零。我想“也许 Windows 不会报告主机中虚拟机的 CPU 使用率”——尽管这对我来说真的没有意义——但是问题是虚拟机缺乏性能。它丢失了帧等等。对于我拥有的 3 个摄像头,我确信底层主机服务器具有足够的计算能力。
所以问题是 - 我做错了什么吗?如何告诉特定虚拟机“从主机获取所需的 CPU 量”?
答案1
主机上有 24 个逻辑 CPU,并且您为该 VM 分配了 8 个 CPU,这占主机总资源的 33%(这是 Hyper-V 在配置对话框中显示的)。
我建议您为该 VM 分配 24 个 vCPU(即“从主机中获取所需的 CPU”),但如果您在其他 VM 上保留了 CPU,则可能需要降低“虚拟机保留”值,否则它们将无法启动。
此外,您还可以阅读测量 Hyper-V/处理器性能,了解你可以使用的性能计数器:
[...]要测量主机操作系统和所有来宾操作系统的总物理处理器利用率,请使用“\Hyper-V Hypervisor Logical Processor(_Total)% Total Run Time”性能监视器计数器。此计数器测量处理器运行主机操作系统和所有来宾操作系统所花费的总时间百分比。[...]
看一眼检测虚拟化环境中的瓶颈如果你需要检测瓶颈
答案2
您在主机任务管理器中看到的是管理操作系统的 CPU 消耗,而不是实际的主机 CPU 负载。管理操作系统是一个特殊的“虚拟机”,它在虚拟机管理程序之上运行(就像其他虚拟机一样),并连接到主机的物理控制台。要查看实际的 CPU 消耗,请使用 PerfMon。请参阅https://docs.microsoft.com/en-us/windows-server/administration/performance-tuning/role/hyper-v-server/detecting-virtualized-environment-bottlenecks#processor-bottlenecks用于柜台。