我正在尝试使用性能监视器监视 Win2k8 R2 服务器上的总 CPU 使用率。
我在 12 核系统上的 HyperV VM 中运行,但仅为此映像分配了一个超线程核心(因此从操作系统角度来看是两个 CPU)。
我正在查看当前活动的“报告”视图,其中的报告显示了以下数据点:
处理器 (_Total)\% 空闲时间
处理器 (_Total)\% 处理器时间
Processor(_Total)\'%Processor Time' 经常会跳升到 15% - 30% 之间的值,然后回落到 '---',再回落到 '0.000',即使服务器明显处于空闲状态。
然而,Processor(_Total)\'% Idle Time' 在大多数时间里仍保持在 100.00 或接近 100.00,而 '%Processor Time' 值在上下跳动,但如果我执行某些我知道会产生负载的操作(例如运行一些 SQL 查询),它就会降至 100 以下。
这让我相信“%空闲时间”是比“%处理器时间”更“可靠”的真实 CPU 负载测量方法,但经过大量搜索后我无法弄清楚为什么会出现这种情况?
现在真正怪异的如果我将“处理器信息(0,_Total)\%空闲时间”添加到同一份报告中,“处理器(_Total)\%处理器时间”和“处理器(_Total)\%空闲时间”会突然开始显示一致且可信的数据,而“处理器信息(0,_Total)\%空闲时间”值会以奇怪的方式跳动,甚至显示值> 100%。
抱歉,这个问题问得太长了...这确实是奇怪的行为,有人见过吗?
答案1
我从来没有真正见过这种情况,而且它确实看起来很奇怪,但我想指出的是,在虚拟化系统上,CPU 统计数据是众所周知的不可靠的;毕竟,虚拟机执行能和将要当物理 CPU 时间分配给其他客户系统时,将被暂停或减慢速度。