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