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

Расхождение между «ps aux» и средней нагрузкой на сервер за 1 минуту

Я новичок в Linux, поэтому пытаюсь выяснить неточность. Проблема в том, что средняя загрузка за 1 минуту, доступная в / proc / loadavg, не имеет смысла по сравнению с выводом команды «ps aux». Например, иногда за 1 минуту средняя загрузка достигает 15+. Это огромная нагрузка, учитывая, что у моего VPS 6 ядер. Тем не менее, "ps aux" почти не показывает никакой нагрузки -% CPU от всех процессов составляют несколько процентов.

Что я делаю не так? Связано ли это несоответствие с тем, что «ps» показывает запущенные в данный момент процессы, в то время как высокое 1-минутное среднее значение могло быть вызвано процессом, который больше не работает? Если это так, как я могу увидеть список всех процессов, запущенных за последнюю минуту?

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

Использование ЦП несколько проще понять, так как это время, когда ЦП не простаивает, где "idle" обозначает цикл ожидания ядра (который выполняет инструкцию HALT или аналогичную).

Меры средней нагрузки, как указано на странице руководства,

количество заданий в очереди выполнения (состояние R) или ожидающих ввода-вывода диска (состояние D) в среднем за 1, 5 и 15 минут Другими словами, средняя загрузка - это, в общем, среднее количество процессов, находящихся в очередь выполнения, ожидающая выполнения (R) или завершения ввода-вывода (D).

Иногда высокая загрузка ЦП может быть связана с высокой средней нагрузкой (и наоборот); в других случаях эти два значения совершенно не связаны: например, многие процессы, ожидающие ввода-вывода по сети, могут увеличить вашу среднюю нагрузку, практически не используя время процессора.

значение нагрузки в Linux не является значением, которое напрямую соответствует использованию процессора. Использование ЦП рассчитывается по тому, сколько времени ЦП находится в режиме ожидания в заданный период времени. Загрузка - это индикация процессов, ожидающих обработки ввода-вывода, например. чтение с диска, сетевая активность. (Я не уверен, что это количество процессов, время ответа на запрос io или просто рассчитанное число для сравнения)

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