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

средняя загрузка в топе и процессы в 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

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

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

В качестве примера - первая строка в вашем верхнем выводе показывает процесс, который в настоящее время не работает, но использовал 9% ЦП с момента последнего сбора статистики top.

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

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

Из Книги UNIX Power tools:

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

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

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