Насколько мне известно, средняя загрузка вверху - это количество прецессов (потоков) в запущенном или непрерывном состоянии сна, поэтому оно должно быть равно (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: хм.
Чтобы понять среднюю нагрузку, прочтите Эта статья и Эта статья.