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

Странные значения в загрузке системы linux

Я пытаюсь понять загрузку системы на одном сервере 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 минут. Насколько я понимаю, это невозможно. Кажется, что более высокие числа сообщаются с некоторой добавленной константой.

Как это возможно и что это значит?

Я думаю, что вы могли неправильно понять, как работает "средняя нагрузка". Во-первых, это не «загрузка» системы, а «средняя загрузка» системы - большая разница, так как все числа являются средними (то есть охватом нескольких записей и времени)! Также очень важно, чтобы вы знали количество процессоров в системе, поскольку это повлияет на то, как интерпретировать числа (обратите внимание на количество ядер в наши дни).

Также обратите внимание, что вы не можете использовать эти числа как «Использование ЦП», как вы знаете из окон и т. Д. Они являются средними и основаны на времени ожидания процесса и использовании ЦП.

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

(Обратите внимание, что я не использую> или <, поскольку считаю, что это может вводить в заблуждение.)

  • За последнюю 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%, десятичные числа говорят о перегрузке ожидающих процессов.

  • За последнюю 1 минуту: компьютер был перегружен в среднем на 0% при одном полностью загруженном процессоре. Ака в условиях нормальной загрузки ЦП, когда система используется на 50%.

И так далее. Давайте сделаем то же самое, но с обоими процессорами под нагрузкой, И добавим еще одного дочернего элемента, пытающегося занять ресурсы. В этом сценарии я пытаюсь использовать больше, чем может обработать моя система.

Всего за 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». Вверху также показаны средние значения нагрузки.