我的电脑已经启动了 30 分钟,但任务管理器显示CPU 时间为了系统空闲进程在 1:30 以上。每一秒都会前进 3 秒,有时甚至前进 4 秒。
机器也在运行,此时非常慢(但一般情况下不是)。
这是最新的 Win 7 x64。
为什么系统空闲进程比实际时间快?
答案1
我们可以计算使用的 CPU 时间,假设任务调度程序在所有核心上均匀地(或至少以分布式方式)平衡任务,如下所示:
CPU Time = Application Time * Number of Cores * Average CPU Utilization
当 CPU 没有工作要做时,系统空闲进程只是任务调度程序的一个包装器,因此在系统上没有其他任何运行的情况下,这通常具有非常高的利用率。假设您有一个 4 核系统,并且您的空闲进程占用了 95% 的 CPU,那么每秒您预计空闲计时器的 CPU 时间会增加:
CPU Time = (1 second) * (4 cores) * (0.95) = 3.8 seconds
请注意,随着我们获得更好的处理器,并且我们的操作系统变得更加优化,这将理论上最大值为 100%(例如,在空闲时,与其能力相比,CPU 实际上没有任何工作),在这种情况下,您会期望空闲过程的 CPU 时间以实时方式乘以内核数。
请注意,此公式甚至适用于单线程应用程序,因为如果单线程应用程序在 4 核机器上持续运行,则最大处理器利用率仅为 25%;因此,该单线程应用程序的 CPU 时间应几乎与实时相匹配:
CPU Time = (1 second) * (4 cores) * (0.25) = 1 second
答案2
任务管理器显示CPU 时间,不是实时的。
CPU 时间是分配给给定进程的时间任何可用的 CPU。因此,如果您拥有四核系统,并且仅在一个核心上运行进程,则空闲进程将使用其他 3 个核心上的剩余时间。
因此,您在 30 分钟的正常运行时间内将获得 1 小时 30 分钟的 CPU 时间使用率。