Как может существовать средняя нагрузка 0,00?

12

Я понимаю, что балансировка нагрузки - это способ измерения загруженности процессора. Однако я не понимаю, как 0.00может существовать среднее значение нагрузки . Разве ядро ​​не всегда работает? Разве это не принимает участие в загрузке процессора?

NerdOfLinux
источник
6
Обратите внимание, что в большинстве случаев то, что вы видите как 0,00, на самом деле составляет 0,0001 или около того
PlasmaHH
1
В старые времена это была средняя длина очереди. Другими словами, сколько процессов было готово к выполнению (и не ожидало ввода-вывода и т. Д.). Если нет, то это 0.00. В настоящее время это, по моему опыту, возможно, только если вы не используете графический рабочий стол, а просто сервер без графического интерфейса.
Турбьерн Равн Андерсен
Просто для полноты, я думаю, что это была одна из BSD, которая какое-то время имела ошибку в ядре, когда поток незанятых ядер подсчитывался в среднее значение нагрузки, вызывая среднее значение нагрузки 1,00, когда система вообще ничего не делала. Это было исправлено довольно быстро.
CVn

Ответы:

16

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

Так, например, среднее значение нагрузки 0,6 за 5 минут обычно означает, что в течение этих 5 минут процессор использовался в течение 3 минут каким-либо процессом (процессами) (или ядром), а в общей сложности - 2 минуты. был без дела Но, как отмечает @UKMonkey, это может означать, что после 4 с половиной минут бездействия 6 процессов конкурировали за процессор в течение последних 30 секунд ...

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

Ссылки @Panther предоставляют более подробное обсуждение средних значений нагрузки.

AlexP
источник
1
Средняя загрузка 0,6 за 5 минут также может означать, что она ничего не делала в течение 4 с половиной минут - а затем за последние 30 секунд было значительное количество процессов, ожидающих процессорного времени ... Это не показатель того, сколько работы Процессор сделал - но сколько процессов ждали, чтобы использовать его.
UKMonkey
@UKMonkey: Совершенно верно ... Средние значения - это средние значения, и одно и то же среднее можно получить разными способами. Отредактировал ответ, чтобы объяснить, что умеренное среднее не означает, что пики также являются разумными.
AlexP
13

Среднее значение загрузки - это показатель того, насколько перегружено ядро ​​ЦП, с точки зрения количества процессов, желающих использовать его одновременно.

Ниже предполагается, что одноядерный (однопоточный) процессор:

  • 0.0

    Процессор вообще ничего не делает. Если процесс начнет использовать процессор, то он будет единственным, кто его использует.

    Неактивный процессор не означает, что процессы не запущены. Например, фоновые службы и ядро ​​все еще работают и все еще занимают память. Они просто не используют процессор, потому что они ничего не делают.

  • 1,0

    Процессор находится на максимальном использовании, но между процессами использования ЦП нет конкуренции. То есть выполняется только один процесс, поэтому он может требовать 100% времени ЦП для себя. Кроме того, несколько процессов запущены, но ни один из них не требует 100% ЦП, а их совокупное использование ЦП составляет до 100%. Все они по-прежнему работают так же быстро, как и при работе, даже если бы у них был процессор.

  • Больше 1,0

    Процессор максимально загружен, и есть несколько процессов, которые хотят использовать его одновременно, поэтому они эффективно работают медленнее, чем они могли бы работать на простаивающем процессоре. Например, среднее значение загрузки 3,0 указывает, что процессы работают на одну треть скорости, с которой они хотят работать. Среднее значение нагрузки 50,0 означает, что процессы работают с 1/50 скорости, которую они хотят запустить, из-за всех других запущенных процессов. То есть цифры выше 1,0 указывают на то, что доступный ЦП растягивается между все большим и большим количеством процессов.

Наличие многоядерного процессора не меняет значения цифр, но может изменить их интерпретацию. Например, если у вас 4-х ядерный ЦП, загрузка 1.0 все равно эквивалентна одному процессу, использующему 100% ЦП на одном ядре, но есть три других ядра. Таким образом, на 4-ядерном процессоре точка максимальной эффективности составляет 4,0, а не 1,0, а точка, в которой все работает с 1/3 эффективности, равна 12,0, а не 3,0. Чтобы добавить к сложности, у одного процесса может быть более одного потока, каждый из которых запрашивает собственный ЦП. Таким образом, один процесс может использовать 100% всех 4 ядер, если он многопоточный.

Важная заметка

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

Какова лучшая средняя нагрузка

Это действительно зависит от того, что вы делаете и предпочитаете ли вы отзывчивость, или от того, насколько интенсивно процессор работает.

Для чего-то, что должно быть сделано как можно больше, среднее значение нагрузки должно быть на уровне или немного выше числа ядер. Что-либо намного большее, чем это, указывает на то, что вы могли бы сделать больше, быстрее, если бы вы разделили задачи на большее количество компьютеров / серверов.

Для чего-то, что должно быть максимально отзывчивым (реагировать быстро), средняя нагрузка должна быть комфортно меньше, чем количество ядер, например, половина или одна треть, что допускает некоторое прерывистое изменение до того, как произойдет замедление.

Для гостя виртуализации (например, KVM) чем ниже среднее значение нагрузки, тем лучше, потому что вы на самом деле делите процессор с другими гостями на том же хосте.

thomasrutter
источник
Я был поражен, увидев, что иногда потоки "ожидающие ввода-вывода" включаются в среднюю загрузку serverfault.com/a/524818/27813, кажется ...
rogerdpack
@rodgerpack Да, Dпроцессы состояния всегда включены в среднюю нагрузку в Linux. Да, это сбивает с толку. Да, мы должны в первую очередь смотреть на другие показатели, чем загрузка в среднем.
Кубанчик
2

Средняя нагрузка 0,00 в основном означает, что ваша система простаивает и что в течение измеренного времени нет никаких задержек, нагрузок или узких мест для вашего процессора.

Это не означает, что ваш процессор неактивен, это просто означает, что если процесс требует процессорного времени, ждать не приходится.

Трудно сказать больше о том, что вы опубликовали, поскольку это может зависеть от того, как вы измерили свою нагрузку (система, на пользователя?) И в течение какого времени.

Для некоторых деталей и интересного чтения см.

https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/

http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages

http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html

пантера
источник