Как мой компьютер может использовать 300% вычислительной мощности ПК?

65

Я играю со сценарием, и я очень увлекся (он все еще работает, и все же мой компьютер еще не умер). Я запускаю 17 итераций сценария (с целью сбить мой компьютер).

Глядя на монитор активности, я вижу, что у каждого процесса Python есть свой уникальный pid, и каждый из них, похоже, занимает около 17-20% моей вычислительной мощности ... Как это возможно? Мой компьютер волшебным образом увеличил мощность на 200% и нарушил законы термодинамики?

Введите описание изображения здесь

Frankenmint
источник
28
300% ЦП = 3 ЦП.
user253751
7
«Уровни мощности 400%»
Nitish
Напоминает мне обо всех тех эпизодах Star Trek, когда двигатели Warp выходят из-под контроля ...
Даниэль
Это серьезный разгон!
Эндрю Гримм

Ответы:

101

В OS X, как и в других * nixes, загрузка ЦП измеряется для каждого ядра виртуального процессора. Если у вас есть несколько - вы можете объединить 200% и более при полной нагрузке.

Это отличается от Windows и, возможно, некоторых других систем, где загрузка ЦП рассчитывается для всего ЦП (или ЦП - я не помню, как он ведет себя при наличии нескольких физических процессоров).

Vasfed
источник
21
Этот ответ точен только для некоторых платформ! Например, Windows сообщает об общей загрузке процессора, а не в процентах от одного ядра.
Fabspro
2
Стоит отметить, что представление десятичной нагрузки (например, 0,5 или 2,4), сообщаемое, например, командой uptime, является не суммой процента использования каждого ядра, а скорее оценкой того, сколько ядер вам потребуется для обработки каждого запроса мгновенно. Я не уверен, насколько это приложение нормализует значения.
Себб
3
@Sebb средняя загрузка (LA) - это среднее число процессов, ожидающих выполнения, они могут ожидать ввода-вывода, необязательно процессор
Vasfed
3
@ Random832 от linux man - man7.org/linux/man-pages/man1/uptime.1.html : «Средние значения загрузки системы - это среднее число процессов, которые находятся в работоспособном или бесперебойном состоянии. Процесс в работоспособном состоянии либо использует ЦП, либо ожидает его использования. Процесс в непрерывном состоянии ожидает некоторого доступа к вводу / выводу, например, ожидает диска. "
Vasfed
4
Средняя загрузка @slebetman - это не время процессора, а длина очереди, например, см. serverfault.com/a/524818
Vasfed
81

OS X и Linux и, возможно, другие операционные системы UNIX (или, скорее, наиболее распространенные инструменты в этих системах) отображают использование ЦП иначе, чем Windows. В Windows 100% означает « все используемые ресурсы процессора». В Linux это означает, что один «поток» (как в Hyper-threading) полностью занят. Таким образом, он может достигать (Number of Threads per Core) * (Number of Cores per CPU) * (Number of CPUs)всего.

Хотя это и не совсем связано, еще один интересный факт: Windows 10 дополнительно нормализует загрузку ЦП, используя текущее состояние регулирования ЦП. Таким образом, процессор с частотой 2 ГГц, работающий на частоте 1 ГГц, будет загружен только на 50%.

Даниэль Б
источник
7
Интересен тот факт. :)
Hennes
7
А с Turbo Boost Windows сообщит, что процессор
загружен
Я думаю, что это путь BSD, а не способ * nix в целом. Я вижу то же самое на своем Mac и моем FreeBSD.
JDługosz
1
@ JDługosz Я уверен, что это верно и для Linux, по крайней мере для некоторых его инструментов. Я уверен, что topведет себя так, например.
Рейраб
12

Как уже указывалось в нескольких ответах, Mac показывает процент загрузки процессора для каждого процесса как «процент от одного ядра», поэтому вы должны разделить его на количество ядер [включая HT как «двойной»]

Если вы не уверены, сколько виртуальных ядер у вас есть, Cmd ⌘ 3 откроется панель «Журнал активности» в Activity Monitor, где вы можете просто сосчитать полосы;)

введите описание изображения здесь

Непосредственно под тем местом, где вы отрубили изображение, находится информация, необходимая для быстрого определения фактического общего использования для System :, User: & Idle: в этом случае ваша простая сумма составляет 100%.

введите описание изображения здесь

Tetsujin
источник
4
хотя реально? 24 ядра ???? Я едва получил 4 :) TIL действительно спасибо за то, что поделился этим !: puu.sh/nNrHU/f2abb55dc7.png
Frankenmint
5
ааа ... да - это Mac Pro 5,1 - последняя из "терок". Двойные 6-ядерные Xeons [+ HT];)
Tetsujin
6

Монитор активности на самом деле не измеряет вычислительную мощность, используемую каждым приложением / процессом, он просто оценивает ее с помощью алгоритма. Так что это может быть неточным ...

Кроме того, как отмечает @Vasfed, потребление ресурсов процессора измеряется на каждое ядро ​​процессора. Использование нескольких ядер может означать более 100% использования ...

Гик иногда натыкается на это явление и ошеломляется, пока суперпользователь не приходит ему на помощь ...; D

rahuldottech
источник
@underscore_d Да ... но когда я ответил, был только один ответ. Другие (по общему признанию лучшие) ответы были опубликованы позже ...
rahuldottech
честно говоря, я должен был проверить время, прошедшее после уровня "дней" ... это не так уж плохо: p
underscore_d