像 Excel 2003 这样的单线程应用程序怎么会在任务管理器中占用超过 50% 的超线程或双核 CPU?

像 Excel 2003 这样的单线程应用程序怎么会在任务管理器中占用超过 50% 的超线程或双核 CPU?

我正在等待 Excel 完成重新计算,我注意到任务管理器报告的 CPU 使用率在具有超线程的 Pentium 4 上偶尔会飙升至 51% 或 52%。单线程应用程序(如 Excel 2003)是如何做到这一点的?

这是否只是任务管理器的舍入/估算错误?或者这是否与 HT 分配有关,即我不会在真正的双核或双 CPU 机器上看到这种情况?

答案1

如果 Excel 2003 是单线程的,我会感到惊讶。它可能至少有一个 UI 线程和一个工作线程。在计算过程中 UI 会重新绘制吗?如果是,则 Excel 不是单线程的。

答案2

MS Windows 默认不会将应用程序锁定到一个核心,因此您看到的是 Excel 在一个核心或另一个核心上执行的表现。

您可以(暂时)通过任务管理器更改此行为。

如果您正在运行 Excel,请启动 taskmgr.exe,转到进程列表,然后右键单击该进程,您可以选择设置该进程的亲和性。

将其标记为特定于一个核心或另一个核心将让您看到(再次在 taskmgr 中)它仅在一个核心上运行。

答案3

那么,如果您有一个单核/单线程处理器会怎么样呢?Excel 怎么会使用超过 50% 的资源呢?如果您有 2 个核心,每个核心可以运行一个线程,而 Excel 在一个核心上运行,那么它最多可以使用该核心的 100%。

使用超线程,每个 CPU 核心不会有 2 个“真实”线程,而是 2 个“虚拟”线程。这 2 个线程必须共享其执行资源。因此,其中一个线程可能比另一个线程使用更多的资源,这可能显示使用率超过 50%。

相关内容