Я пытаюсь понять загрузку системы на одном сервере Linux:
$uptime
15:01:45 up 52 days, 19:48, 1 user, load average: 0.63, 1.76, 4.81
Нагрузки всегда 1 минута <5 минут <15 минут.
Distributor ID: RedHatEnterpriseServer
Release: 5.8
Я захватил uptime
каждую секунду в течение примерно 30 минут и всегда сообщалось, что 1 минута была ниже, чем 5 минут 15 минут. Насколько я понимаю, это невозможно. Кажется, что более высокие числа сообщаются с некоторой добавленной константой.
Как это возможно и что это значит?
Я думаю, что вы могли неправильно понять, как работает "средняя нагрузка". Во-первых, это не «загрузка» системы, а «средняя загрузка» системы - большая разница, так как все числа являются средними (то есть охватом нескольких записей и времени)! Также очень важно, чтобы вы знали количество процессоров в системе, поскольку это повлияет на то, как интерпретировать числа (обратите внимание на количество ядер в наши дни).
Также обратите внимание, что вы не можете использовать эти числа как «Использование ЦП», как вы знаете из окон и т. Д. Они являются средними и основаны на времени ожидания процесса и использовании ЦП.
Как вы сами писали, средние значения нагрузки можно описать следующим образом.
(Обратите внимание, что я не использую> или <, поскольку считаю, что это может вводить в заблуждение.)
Давайте проведем тест на моей небольшой системе с двумя процессорами (ядром).
Я выполнил команду «stress -c 1», чтобы максимально использовать 1 процессор (ядро), и дал ему поработать 5,10,30 минут (время использования процессора могло быть меньше, отсюда небольшое отклонение в числах).
Вот так выглядели мои средние значения нагрузки.
5 MIN - load average: 1,00, 0,71, 0,37
10 MIN - load average: 1,02, 0,94, 0,59
30 MIN - load average: 1,01, 1,03, 0,98
Итак, что означают цифры? Учитывая, что это система с двумя процессорами (ядром), вы можете взять первое число 1,00, и это говорит нам, что система использовалась на 50%, поскольку мы знаем, что у нее есть два процессора, поэтому, если число было 2,00, тогда мы использовали система 100%, десятичные числа говорят о перегрузке ожидающих процессов.
И так далее. Давайте сделаем то же самое, но с обоими процессорами под нагрузкой, И добавим еще одного дочернего элемента, пытающегося занять ресурсы. В этом сценарии я пытаюсь использовать больше, чем может обработать моя система.
Всего за 3 минуты мой груз уже кричит на меня! Теперь я не собираюсь позволять этому работать дольше, так как это небольшой маршрутизатор, чтобы легче тестировать нагрузки, поэтому становится жарко :)
3 MIN - load average: 2,48, 0,99, 0,74
Теперь возьмем среднее число за 1 минуту - 2,48. Что это говорит нам сейчас? Что ж, мы используем 248% системы, мы знаем, что можем использовать два процессора (200%), поэтому система перегружена на 48%, что означает, что в среднем 0,48 процесса ожидают времени использования процессора, поскольку два процессора полностью заняты. Но если бы это была система с 4 процессорами (ядрами), то цифры были бы вполне приемлемыми, поскольку мы снова использовали систему только на 50%.
Я надеюсь, что все это имеет смысл, также могут быть небольшие различия между дистрибутивами в том, как их ядро интерпретирует среднюю нагрузку, но не так, как вы думаете. Это то, как ядро смотрит, в каком состоянии находится процесс. Например, cpu_idle, cpu_waiting, io_waiting и так далее. Таким образом, NFS fs может заставить процесс ждать io и т. Д. Я не думаю, что RedHat делает что-то особенное.
РЕДАКТИРОВАТЬ: Если вы хотите посмотреть на использование ЦП в системе в целом, вы можете использовать команду «top». Вверху также показаны средние значения нагрузки.