Назад | Перейти на главную страницу

mpstat иногда показывает использование ЦП выше 100%

Бег mpstat -P ALL на одном из наших серверов возвращает следующее:

06:48:02 AM  CPU   %user    %nice   %sys    %iowait  %irq   %soft  %steal   %idle    intr/s
06:48:02 AM  all    15.61   0.08    84.09   7.20     0.56    0.01    0.00   13.97    763.27
06:48:02 AM    0    12.40   0.07    82.12   8.26     0.41    0.01    0.00   13.21    341.40
06:48:02 AM    1    18.82   0.04    86.06   6.15     0.72    0.01    0.00   14.73    421.87

Итак, общая загрузка ЦП:
все - 122,52%
CPU1 - 116,48%
CPU2 - 126,53%

Я не понял, как работает mpstat? Я думал, что сумма всегда должна составлять 100%?

Если это актуально, сервером является RHEL 5.5. Процессор - Intel Xeon Dual Core L3406 2.26Ghz

Из справочной страницы mpstat:

Параметр interval указывает интервал времени в секундах между отчетами. Значение 0 (или отсутствие параметров вообще) указывает на то, что статистика процессоров должна сообщаться за время с момента запуска системы (загрузки).

Однократный запуск mpstat дает только временную оценку использования. Запуск mpstat с аргументом интервала даст вам более точные числа.

Это несоответствие является накоплением ошибок округления, которое увеличивается с активностью системы и временем безотказной работы. Фактическая отображаемая статистика собирается из /proc/stat и /proc/uptime. Статистика ведется в USER_HZ (обычно 100 Гц, getconf CLK_TCK подтвердит это), поэтому ваше разрешение составляет всего 1/100 секунды; а центральный процессор многое делает за 0,01 секунды.

Например:

$ cat /proc/stat; cat /proc/uptime

cpu  414821 51578 226720 66535103 73932 0 4548 0 0 0
cpu0 205014 22950 114302 33188492 36369 0 2071 0 0 0
cpu1 209807 28628 112418 33346611 37563 0 2477 0 0 0
<...>
335694.91 665351.03

На моей рабочей станции, которая проработала всего несколько дней, мы получаем вышеуказанные числа. Если мы посчитаем процент от общего времени статистики процессора по сравнению с временем безотказной работы, мы получим

(414821 + 51578 + 226720 + 66535103 + 73932 + 4548) / 335694.91 / 2
100.25%

Есть (не очень полезное) примечание о статистике процесса в ps справочную страницу.

Использование ЦП в настоящее время выражается как процент времени, затраченного на выполнение в течение всего времени существования процесса. Это не идеально и не соответствует стандартам, которым в остальном соответствует ps. Использование ЦП вряд ли составит в сумме 100%