Средняя загрузка в топе и процы в vmstat

Насколько я знаю, средняя загрузка в верхней части - это число прецессов (потоков) в рабочем или непрерывном спящем состоянии, поэтому оно должно быть равно (procs-r +1)+ procs-b в vmstat, но на практике эти два числа всегда имеют большой разрыв. Любые ошибки в моем понимании, очень ценю, если некоторые ребята дают мне руководство.

top - 05:34:50 up 1 day, 20:56,  5 users,  load average: 2.83, 2.67, 1.62
Tasks:  79 total,   1 running,  78 sleeping,   0 stopped,   0 zombie
Cpu(s):  6.8%us,  1.8%sy,  0.0%ni, 91.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.4%st
Mem:   1758000k total,   582636k used,  1175364k free,   103932k buffers
Swap:   917500k total,        0k used,   917500k free,   180868k cached

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 1182524 103784 180860    0    0     1     9    6   53  7  2 91  0  0
 0  0      0 1182524 103784 180860    0    0     0    36   70  117  0  0 100  0  0
 0  0      0 1182516 103784 180860    0    0     0     0   73  132  0  1 100  0  0
 0  0      0 1182516 103784 180860    0    0     0     0   60  127  0  0 100  0  0
 1  0      0 1182516 103784 180860    0    0     0     0   62  102  0  0 100  0  0
 0  0      0 1182628 103784 180860    0    0     0     0  289  238  1  2 97  0  0
 2  0      0 1152160 103784 180892    0    0     0     8 1481 2371 54 12 34  0  0
 1  0      0 1182192 103784 180860    0    0     0     0  681  834 19  4 78  0  0
 0  0      0 1182200 103784 180860    0    0     0     0   80  147  0  1 100  0  0
 0  0      0 1182200 103784 180860    0    0     0     0   53  107  0  0 100  0  0
 0  0      0 1182208 103788 180856    0    0     0    72   64  123  0  0 100  1  0

2 ответа

Решение

Он основан на количестве процессов в работоспособном или непрерывном состоянии. Runnable в данный момент выполняется на процессоре или ожидает освобождения процессора. Непрерывное состояние ожидает завершения ввода-вывода - это не "непрерывный сон" - процесс технически "спит", но ожидает завершения вызова ядра.

По сути, это число процессов, которые в настоящее время "что-то делают", но имейте в виду, что это среднее значение за последние 1/5/15 минут - это не мгновенное значение. Это в отличие от списка процессов, который является моментальным снимком на тот момент, когда топ собирает свою информацию. Процессы просыпаются и засыпают много раз в секунду, поэтому нет простого способа соотнести нормальную активность со средней нагрузкой, если только вам не повезет, процессы (процессы) всегда активны или проблема с вводом-выводом.

Как пример этого - первая строка в вашем верхнем выводе показывает процесс, который в данный момент не запущен, но использует 9% ЦП с тех пор, как последний раз топ собирал свою статистику

Среднее значение нагрузки не масштабируется для количества ядер, доступных для ОС - среднее значение 1 означает, что 1 процессор занят на 100% (поэтому одноядерная система закреплена, но четырехъядерная система используется на 25%). Как правило, не так уж плохо иметь среднюю нагрузку до 75% от числа ядер в системе по моему опыту.

Среднее значение загрузки представляет собой сумму длины очереди выполнения и количества заданий, запущенных в данный момент на процессорах.

Из книги Электроинструменты UNIX:

Средняя загрузка пытается измерить количество активных процессов в любое время. В качестве показателя загрузки ЦП средняя нагрузка упрощена, плохо определена, но далеко не бесполезна

(procs-r +1)+ procs-b: хмм.

Чтобы понять среднюю нагрузку, прочитайте эту статью и эту статью.

Другие вопросы по тегам