我的计算机如何使用 300% 的 PC 处理能力?

Fra*_*int 64 cpu parallel-processing macos

我正在玩一个脚本,但我被带走了(它现在仍在运行,但我的电脑还没有死)。我正在运行脚本的 17 次迭代(意图使我的计算机崩溃)。

查看活动监视器,我发现每个 Python 进程都有一个唯一的 pid,并且它们似乎每个占用了我大约 17-20% 的处理能力......这怎么可能?我的计算机是否神奇地增加了 200% 的功率并在某处违反了热力学定律?

在此处输入图片说明

Vas*_*fed 101

在 OS X 上,与其他 *nix 一样,CPU 负载是按虚拟处理器内核测量的。如果您有多个 - 您可以在满载情况下组合 200% 甚至更多。

这与 Windows 和其他一些系统不同,其中 CPU 负载是按整个 CPU(或 CPU - 我不记得它在具有多个物理处理器时的行为)。

  • 此答案仅适用于某些平台!例如,Windows 报告 CPU 总负载,而不是单个内核的百分比。 (21认同)
  • @slebetman 平均负载与 CPU 时间无关,而是与队列长度有关,例如参见 http://serverfault.com/a/524818 (4认同)
  • @Sebb 平均负载(LA)是等待执行的平均进程数,它们可能在等待 IO,而不是 CPU (3认同)
  • @Random832 来自 linux man - http://man7.org/linux/man-pages/man1/uptime.1.html :“系统平均负载是处于可运行或不可中断状态的平均进程数。一个进程处于可运行状态的进程要么正在使用 CPU,要么正在等待使用 CPU。处于不可中断状态的进程正在等待某些 I/O 访问,例如等待磁盘。 (3认同)
  • 值得注意的是,例如 uptime 命令报告的十进制负载表示(例如 0.5 或 2.4)_不是_每个核心使用率的总和,而是估计您需要立即处理每个请求的核心数量。我不确定这个应用程序对值的标准化程度。 (2认同)

Dan*_*l B 81

OS X 和 Linux 以及可能的其他 UNIX 操作系统(或者更确切地说是这些系统上最常用的工具)显示的 CPU 使用率与 Windows 不同。在 Windows 上 100% 意味着“使用了所有CPU 资源”。在 Linux 上,这意味着一个“线程”(如在超线程中)完全忙碌。因此,它可以达到(Number of Threads per Core) * (Number of Cores per CPU) * (Number of CPUs)总计。

尽管不完全相关,但另一个有趣的事实是:Windows 10 使用 CPU 的当前节流状态进一步规范了 CPU 使用率。因此,以 1 GHz 节流运行的 2 GHz CPU 最多只能占用 50%。

  • 有趣的事实。:) (7认同)
  • 使用 Turbo Boost Windows 将报告 CPU 运行超过 100% (7认同)

Tet*_*jin 12

正如在几个答案中已经指出的那样,Mac 将每个进程的 CPU 百分比显示为“一个核心的百分比”,因此您应该将其除以核心数量[包括 HT 为“双倍”]

如果您不确定您拥有多少个虚拟内核, Cmd ? 3 将打开 Activity Monitor 的 CPU History 窗格,您可以在其中简单地计算条纹数 ;)

在此处输入图片说明

在您切下图像的正下方是快速确定 System:、User: 和 Idle: 的实际总使用量所需的信息:您的简单总和为 100%

在此处输入图片说明

  • 啊...是的 - 这是 Mac Pro 5,1 - 最后一个“奶酪刨丝器”。双 6 核至强 [+HT] ;) (5认同)
  • 真的吗?24核???我几乎没有 4 :) 直到真的感谢分享这个!:http://puu.sh/nNrHU/f2abb55dc7.png (4认同)

und*_*ndo 6

活动监视器实际上并没有测量每个应用程序/进程使用的处理能力,它只是使用算法对其进行估计。所以它可能不准确......

此外,正如@Vasfed 指出的那样,CPU 消耗是按处理器内核测量的。多核可能意味着高于 100% 的使用率...

一个极客偶尔会偶然发现这种现象并大吃一惊,直到超级用户来帮助他...... ;D