我正在玩一个脚本,但是我被带走了(它现在仍在运行,但是我的计算机还没死)。我正在运行该脚本的17次迭代(目的是使计算机崩溃)。
观察活动监视器,我发现每个Python进程都有一个唯一的pid,并且每个进程似乎占用了我大约17-20%的处理能力……这怎么可能?我的计算机是否神奇地增加了200%的功率并打破了某个地方的热力学定律?
我正在玩一个脚本,但是我被带走了(它现在仍在运行,但是我的计算机还没死)。我正在运行该脚本的17次迭代(目的是使计算机崩溃)。
观察活动监视器,我发现每个Python进程都有一个唯一的pid,并且每个进程似乎占用了我大约17-20%的处理能力……这怎么可能?我的计算机是否神奇地增加了200%的功率并打破了某个地方的热力学定律?
Answers:
在OS X上,像其他* nixes一样,CPU负载是按每个虚拟处理器内核进行测量的。如果您有多个-在满负载下可以合并200%或更多。
这与Windows以及其他一些系统不同,在Windows中,系统会按整个CPU(或多个CPU)计算CPU负载。
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%的繁忙。
top
例如,我很确定这种行为。
正如已经在几个答案中指出的那样,Mac将每个进程的CPU百分比显示为“一个内核的百分比”,因此您应将其除以内核数(包括HT为“双精度”)。
如果不确定自己有多少个虚拟核心, Cmd ⌘ 3 将弹出“活动监视器”的“ CPU历史记录”窗格,您可以在其中简单地计算条纹数;)
您需要在该图像的下面直接截取该图像,以快速确定System:,User:和Idle的实际总使用量,其中简单的总计数就可以达到100%
活动监视器实际上并没有衡量每个应用程序/进程使用的处理能力,它只是使用一种算法对其进行估算。因此可能不准确...
而且,正如@Vasfed指出的那样,CPU消耗是按每个处理器内核进行测量的。多核可能意味着超过100%的使用率...
一个极客偶尔会偶然发现这种现象,并为之感到惊讶,直到超级用户帮助他为止。