Windows 任务管理器以百分比显示 CPU 使用率。这背后的公式是什么?是不是这个:
进程 A 的 CPU 使用率百分比 =(到现在为止给 A 的所有时间片的总和)/自机器启动以来的总时间
或者是别的什么?
我不是 100% 确定使用的是什么,但我认为你对 CPU 计算有点偏离。
我相信他们正在做类似的事情。
Process A CPU Usage = (Cycles for A over last X seconds)/(Total cycles for last X seconds)
我相信它与任务管理器中设置的“更新间隔”有关。
虽然我为您做了一些研究,但我发现这篇 MSDN文章显示了微软推荐的计算一组指令的 CPU 时间的方法,这也可能会让您对他们的计算有所了解。
不,这不是“自启动以来”——它对时间的敏感程度远不止于此。
它是“自上次刷新以来 CPU 在该进程中主动运行线程的时间比例”。(刷新率通常约为一秒。)在任务管理器中,我相信它会除以 CPU 的数量,所以总数最终为 100%(即在双核机器上,单线程 CPU 猪会显示50%)。其他类似的程序有时不这样做,总共提供 100% * 核心。
您可能还想查看这篇文章,因为与调度有关的 CPU 周期处理方式已作为 Vista 的一部分进行了更改。我想这也适用于Win7。
查看任务管理器的源代码