Вопрос Как может быть средняя загрузка 0.00?


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


12
2017-11-23 02:19


происхождения


Обратите внимание, что в большинстве случаев то, что вы видите как 0,00, действительно составляет 0,0001 или около того - PlasmaHH
В прежние времена это была средняя длина очереди выполнения. Другими словами, сколько процессов было готово к выполнению (и не дожидаясь ввода-вывода и т. Д.). Если нет, то это 0.00. В наши дни это по моему опыту возможно только в том случае, если вы не запускаете графический рабочий стол, а просто без GUI-сервера. - Thorbjørn Ravn Andersen
Просто для полноты я думаю, что это был один из BSD, который некоторое время имел ошибку ядра, в которой ничтожный поток ядра подсчитывался в среднем по загрузке, в результате чего средняя загрузка составляла 1,00, когда система вообще ничего не делала. Это было исправлено довольно быстро. - Michael Kjörling


ответы:


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

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

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

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


16
2017-11-23 02:42



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


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

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

  • 0.0

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

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

  • 1,0

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

  • Более 1,0

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

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

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

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

Какова максимальная средняя загрузка

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

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

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

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


13
2017-11-23 05:03



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


Среднее значение нагрузки, равное 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


2
2017-11-23 02:31