当尝试做一些科学研究时回答这个问题,我在由 SCVMM 2012 管理的 Server 2008 R2 主机上安装了 Windows 7 客户机并在其上运行了 Prime95,以产生一些 CPU 使用率。
以下是嘉宾:
Hyper-V 主机显示 12%,即 1/8 核心(已分配),因此看起来正确:
但 SCVMM 显示 0%:
我让压力测试运行了很长时间,认为 SCVMM 可能在很长时间内达到平均值(我以为是 9 分钟,但事实证明我错了;只是不要告诉我的妻子)。
为什么当其他所有因素似乎都不一致时,SCVMM 显示 0%?
答案1
摘自 SCVMM 工程博客:
Hyper-V 主机公开物理主机及其上的虚拟机的某些性能计数器。SCVMM 服务器通过 WSMAN 与每个 Hyper-V 主机通信,以收集主机及其虚拟机的这些性能指标。由于虚拟机对其真实性能的理解存在一些限制,SCVMM 直接从其主机收集虚拟机性能指标。这里解释了一些有趣的指标。
1- 主机 CPU 平均值在 SCVMM 控制台中显示为“Hyper-V 虚拟机管理程序逻辑处理器 (_Total)”计数器集*** 的“%Total Run Time”计数器,该计数器在过去 9 分钟内取平均值。此计数器捕获主机(父分区)和虚拟机产生的处理器利用率。此值和其他主机性能指标可作为 SCVMM 控制台中 Refresh-VMHost 或 Refresh 任务的一部分按需刷新。请注意,此值与主机的任务管理器或 %Processor Time(_Total) 计数器显示的值不同,后者仅考虑父分区利用率。
2- VM CPU 平均值在 SCVMM 控制台中显示为“Hyper-V Hypervisor 虚拟处理器(_Total)”计数器集的“%Guest Run Time”计数器。这是运行 VM 的虚拟处理器所花费的时间百分比。由于 Hyper-V 允许控制分配给 VM 的处理器数量及其容量百分比,因此 Guest Run Time 计数器值永远不会超过指定的限制(见下图)。请注意,这与 Hyper-V 控制台中显示的 VM CPU% 非常不同,其中 CPU 利用率显示为 VM 主机逻辑处理器利用率。
因此,SCVMM 使用 WinRM(WSMan 的 Windows 实现)来收集这些性能计数器。您能否从 SCVMM 服务器到 Hyper-V 主机建立 WinRM 会话?然后您可以远程查询这些计数器吗?(它们可能位于虚拟化命名空间下,而不是 CIMV2 命名空间下。)
日志中是否有关于 SCVMM 无法收集这些计数器的数据的信息?
此外,如果尚未启用并监听,请在 Hyper-V 主机上尝试“winrm quickconfig”或“winrm qc”。
测试远程 WinRM 功能
在提升的命令提示符下输入:
winrm id –r:远程服务器
这应该产生类似下面的输出:
winrm id-r:vmmr2lab-cl20
识别响应
协议版本 =http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd
产品供应商 = Microsoft Corporation 产品版本 = OS: 6.1.7201 SP: 0.0 Stack: 2.0
如果出现如下所示的错误,则表示远程计算机上的 WinRM 设置不正确,或者存在某些因素阻碍了两个系统之间通过 WinRM 端口进行通信。这可能是防火墙或防病毒/恶意软件程序。
WSMan故障
消息 = WinRM 客户端无法在指定时间内完成操作。请检查计算机名称是否有效且是否可通过网络访问,以及是否启用了 Windows 远程管理服务的防火墙例外。
错误编号:-2144108250 0x80338126
WinRM 客户端无法在指定时间内完成操作。请检查
如果计算机名称有效且可通过网络访问,并且启用了 Windows 远程管理服务的防火墙例外。
在这种情况下,请在远程系统上测试本地 WinRM 功能。如果 WinRM 在远程系统上也正确配置,则原因很可能是两台机器之间的网络通信。像解决任何网络问题一样解决此问题。