为什么启用虚拟化后 Windows 8 任务管理器不报告实际的 CPU 频率?

为什么启用虚拟化后 Windows 8 任务管理器不报告实际的 CPU 频率?

这个问题,我问为什么 Windows 任务管理器的性能选项卡中没有报告实际的 CPU 频率。原来我在 BIOS 中打开了虚拟化。当我在 BIOS 中禁用它时,任务管理器显示实际的 CPU 频率(我假设是所有核心的平均值)。

那么为什么打开虚拟化功能时任务管理器不能或不报告 CPU 频率?

答案1

标题:它显示的是实际的 CPU 频率。
在 Windows 8 上安装(而不仅仅是运行)Hyper-V 会导致 CPU 一直以 100% 的速度运行。我猜微软在虚拟机 (VM) 速度波动时遇到了问题。解决这个问题的一种方法是不要让它波动。
我经常旅行,我必须根据需要安装(在 Windows 功能下打开)和卸载 Hyper-V。
我注意到,安装了 Hyper-V 但没有运行(我的 VM 已关闭)时,我的电池寿命不到 2 小时。在安装 Hyper-V 之前,我通常会使用 6 个小时以上。
我不得不在 VM(电池寿命短)和电池寿命(没有 VM)之间做出权衡,这真是太丢脸了……更糟糕的是,这不是关闭 Hyper-V 然后再打开的问题。您需要做一些工作来重新设置您的 VM。
此信息基于在联想 X1 Carbon 上运行的 Windows 8.0 Pro 和许多小时的实验。我还没有在 Microsoft Surface Pro 2 上的 Windows 8.1 Pro 上再次尝试此操作。
更新:我确实在 Windows 8.1 Surface Pro 2 上再次尝试此操作。结果相同。我还没有在 Surface Pro 3 上尝试过。

答案2

安装 Hyper-V 不会导致电源管理被禁用。相反,安装 Hyper-V 后,物理计算机上的操作系统称为“父分区”,它只是另一个虚拟机。这与旧的 Virtual PC/Virtual Server 的工作方式不同。

因此,任务管理器显示的是虚拟 CPU,而不是物理 CPU。对于虚拟 CPU,它只能报告虚拟机管理程序允许其查看的内容。例如,即使虚拟机以非常高的负载运行,它也会显示非常低的 CPU 负载。另一个影响是它无法看到实际速度。

我有几个运行 Hyper-V 的服务器,我可以通过 CPU-Z 确认,当工作负载较少时,核心速度会下降,而当工作负载较大时,核心速度会上升。

我还在运行 Win8.1 的笔记本电脑上启用了 Hyper-V,尽管任务管理器始终显示 i7-3520M CPU 的频率为 2.89 GHz,但我可以在电池供电的情况下使用机器约 4-5 小时,负载正常,就像没有启用 Hyper-V 一样。当然,CPU-Z 在大多数情况下显示核心速度要低得多(在用力推的时候甚至高达 3.5 GHz)。

也许坏的驱动程序可能会产生负面影响,但是它在我迄今为止测试的任何机器上运行良好,不会弄乱驱动程序或配置(Lenovo Thinkpad 笔记本电脑和带有 Xeon E2xxx、E5-xxxx 的 Supermicro 服务器)。

答案3

这是正常现象。启用 Hyper-V 角色时,某些电源管理选项会被禁用。

至少在我的系统上,CPU 实际上是根据当前负载水平适当地提高或降低时钟频率的;诸如CPU-Z证实了这一点。虽然睡眠和休眠仍然可用(至少在 Windows 8.1 Pro 上可用,但在 Windows Server 2008 上不可用),但您无法限制处理器的时钟频率,这在使用电池时很有用。Hyper-V 使用的 CPU 时间未计入任务管理器中,并且主机进程始终优先于 Hyper-V 客户机;换句话说,如果主机进程使 CPU 饱和,任何进程(即使是低优先级进程)都会使 Hyper-V 客户机缺乏 CPU 时间。

相关内容