Windows 8 任务管理器显示 CPU 利用率为 49%,而 Process Explorer 显示为 100%。这是什么原因造成的?这是 Windows 8 的 bug 吗?
答案1
我的猜测是任务管理器考虑到当前的CPU 速度,因此显示相对于最高速度的利用率。任务管理器只获取系统返回的 CPU 利用率。就您而言,它们相差两倍,就像当前和最高 CPU 速度一样。
您可以尝试更改电源计划,而不降低 CPU 时钟频率,看看它们是否报告相同的情况。
答案2
我进入 BIOS 设置并禁用以下所有内容:
- 睿频加速(需要时略微提高 CPU 功率)
- 超线程(每个物理核心两个线程)
- 多核模式(强制 CPU 仅使用一个核心)
- 电源优化/speedstep(降低 CPU 频率以节省电量)
即使启用了所有这些设置,任务管理器和 Process Explorer 报告的 CPU 使用率之间仍然几乎相差 2 倍。因此,这似乎不是处理器频率变化或添加核心的问题。
我猜 Process Explorer 使用不同的方法来计算 CPU 使用率,但我不确定那是什么。我会尝试找到一些有关此的信息,并在找到后更新答案。
编辑:这并不能解释 2 倍的差异,但确实解释了 Process Explorer 和任务管理器计算 CPU 使用率的方式之间的差异:
旧版本的 Windows 只能跟踪实际 CPU 使用率的近似值。在大多数系统的时钟生成中断周期为 15.6 毫秒 (ms) 时,Windows 会识别当前在每个 CPU 上执行的线程。如果线程在内核模式下执行,则其内核模式时间将增加 15.6 毫秒;否则,其用户模式时间将增加该量。中断触发时,线程可能只执行了几个 CPU 周期,但线程会在整个 15.6 毫秒间隔内充电。同时,数百个其他线程可能在该间隔内执行,但只有当前在时钟滴答声中运行的线程才会充电。即使在具有更准确指标的较新版本的 Windows 上,Windows 任务管理器也会使用这些近似值来报告 CPU 使用率。任务管理器通过四舍五入到最接近的整数百分比进一步降低了其准确性,因此,执行线程消耗的 CPU 时间不到 1% 的进程与根本不执行的进程无法区分。最后,任务管理器没有考虑用于服务中断或延迟过程调用 (DPC) 的 CPU 时间,错误地将该时间计入系统空闲进程中。
Procexp 比任务管理器更准确地表示 CPU 使用率。首先,Procexp 显示每个进程的 CPU 利用率百分比,默认情况下四舍五入到两位小数,而不是整数。其次,Procexp 跟踪服务中断和 DPC 所花费的时间,并将它们与空闲进程分开显示。最后,Procexp 使用额外的系统指标,以便可以识别消耗少量 CPU 的进程,并在可能的情况下提供更准确的实际 CPU 消耗情况。Windows XP、Windows Vista 和 Windows 7 及其相应的服务器版本上提供不同的指标。Procexp 利用一切可用资源来报告尽可能准确的指标。
我还在 Sysinternals 论坛上发现了这个,来自 ProcExp 的创建者本人:
Process Explorer 现在根据周期数显示实际 CPU 使用率。如果您启用了 speedstep 或其他 CPU 频率限制,则会导致消耗一定数量周期的工作被计算为每秒可用周期的更高百分比。
答案3
和你的处理器降频后,任务管理器可能会计算降频,而进程资源管理器则不会,您应该将电源选项设置为性能,并检查最大化时是否显示 100%。
答案4
Windows Defender 将在“任务管理器”标签下运行。我猜当你看到这些数字时,你的电脑正在进行每周病毒扫描。我也在我的 Windows 8 笔记本电脑上看到这种情况,风扇开到最大。