Что означает средняя загрузка в Unix / Linux?

58942
John Fouhy

Если я бегу uptime, я получаю что-то вроде этого:

10:50:30 up 366 days, 23:27, 1 user, load average: 1.27, 2.06, 1.54 

Что означают эти цифры в конце? Страница man говорит мне, что это «средняя загрузка системы за последние 1, 5 и 15 минут». Но каков масштаб? 1,27 высоко? Низкий? Это зависит от моей системы?

66
Интересно, как интерпретировать среднюю нагрузку на систему с многоядерным процессором? nagul 14 лет назад 2
Как общее практическое правило, вы должны разделить среднюю нагрузку на количество процессоров для многоядерных систем. Таким образом, нагрузка 2,0 в двухъядерной системе примерно равна 1,0 в одноядерной системе. Это не совсем так, из-за таких вещей, как дисковый ввод-вывод и сетевая скорость, но нагрузка в любом случае является приблизительной оценкой. Mike Cooper 11 лет назад 3
Я нашел этот блог действительно полезным: [Понимание загрузки процессора Linux] (http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages) atmaish 9 лет назад 1

4 ответа на вопрос

57
Kent Fredric

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

Как правило, если у вас один процесс, работающий на 100%, и он работает так вечно, вы можете ожидать, что все значения приблизятся к «1».

Как правило, это настолько эффективные вычисления, насколько это возможно, без потерь из-за переключения контекста.

Однако в современных многозадачных ОС требуется более чем одна вещь, требующая внимания к процессору, поэтому при умеренной нагрузке от одного процесса среднее значение нагрузки должно колебаться между 0,8 и 2.

Если вы решите сделать что-то безумное, например собрать ядро make -j 60, несмотря на наличие только одного логического процессора, то средняя загрузка будет стремительно приближаться к 60, и ваш компьютер будет невероятно бесполезен для вас (смерть из-за переключения контекста).

Также следует отметить, что этот показатель не зависит от количества ядер / процессоров. Для двухядерной системы запуск одного процесса, который потребляет целое ядро ​​(оставляя другой бездействующим), приводит к средней загрузке 1,0. Чтобы решить, насколько загружена система, вам нужно знать количество ядер и выполнить деление самостоятельно.

Таким образом, среднее значение нагрузки меньше 1 означает «Процессы обычно не должны ждать»? Могу ли я интерпретировать среднее значение нагрузки, равное 2, как «Каждый процесс занимает примерно вдвое больше времени, чем в идеальных условиях»? (Я знаю, что есть проблемы с вводом / выводом) John Fouhy 14 лет назад 1
Да, это имеет смысл, игнорируя IO, который есть;) Kent Fredric 14 лет назад 0
@KentFredric "Как правило, это настолько эффективные вычисления, насколько вы можете получить, без потерь из-за переключения контекста." ... 1 процесс работает на 100% все время эффективен вообще? Конечно, я упускаю что-то фундаментальное здесь. Не могли бы вы объяснить, что вы имели в виду? Меня смущает, как можно охарактеризовать как один процесс, занимающий все ресурсы процессора, как эффективный? Geek 10 лет назад 0
@Geek Поскольку переключение контекста (чередование процессов) не является «свободным», поэтому 2 процесса на одном процессоре, работающие со скоростью 50% каждый, потеряют некоторую эффективность из-за переключения контекста. Это означает, что 1 процесс на 100% означает, что процесс завершается как можно скорее в процессе выполнения своей задачи, и никакие дополнительные усилия не расходуются впустую, кроме завершения самой задачи. Kent Fredric 10 лет назад 0
Я знаю, что процесс, работающий на 100%, звучит не очень «эффективно», но если бы процесс произвольно ограничил себя использованием только 20%, это заняло бы в 5 раз больше времени. Таким образом, здесь эффективность означает «оптимальное использование ресурсов». Kent Fredric 10 лет назад 2
Таким образом, для системы с n-ядром среднее значение нагрузки n означает, что каждое ядро ​​обрабатывает процесс 100% времени и, следовательно, наиболее эффективно? joshreesjones 9 лет назад 1
9
fho

Man 5 proc:

/ proc / loadavg Первые три поля в этом файле являются средними значениями загрузки, указывающими количество заданий в очереди выполнения (состояние R) или ожидающих дисковый ввод-вывод (состояние D), среднее за 1, 5 и 15 минут., Они совпадают со средними числами загрузки, заданными uptime (1) и другими программами.

3
John T

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

Эта ссылка датирована '03. Linux 2.6 вышел с тех пор. (Вы заметите, что они используют 2.0, ой). Метрики, кажется, теперь несколько отличаются на практике от тех, которые указаны на этой странице. Kent Fredric 14 лет назад 2
Вот пример конца 06 года, который ничем не отличается от связанной статьи: http://www.linuxjournal.com/article/9001 nagul 14 лет назад 0
2
Ely

I cite from a reference of a course:

Load average is the average of the load number for a given period of time. It takes into account processes that are:

  • Actively running on a CPU.
  • Considered runnable, but waiting for a CPU to become available.
  • Sleeping: i.e., waiting for some kind of resource (typically, I/O) to become available.

I cite further about interpreting load average:

The load average is displayed using three different sets of numbers, as shown in the following example:

The last piece of information is the average load of the system. Assuming our system is a single-CPU system, the 0.25 means that for the past minute, on average, the system has been 25% utilized. 0.12 in the next position means that over the past 5 minutes, on average, the system has been 12% utilized; and 0.15 in the final position means that over the past 15 minutes, on average, the system has been 15% utilized. If we saw a value of 1.00 in the second position, that would imply that the single-CPU system was 100% utilized, on average, over the past 5 minutes; this is good if we want to fully use a system. A value over 1.00 for a single-CPU system implies that the system was over-utilized: there were more processes needing CPU than CPU was available.

If we had more than one CPU, say a quad-CPU system, we would divide the load average numbers by the number of CPUs. In this case, for example, seeing a 1 minute load average of 4.00 implies that the system as a whole was 100% (4.00/4) utilized during the last minute.

Short term increases are usually not a problem. A high peak you see is likely a burst of activity, not a new level. For example, at start up, many processes start and then activity settles down. If a high peak is seen in the 5 and 15 minute load averages, it would may be cause for concern.

Было бы удобно добавить ссылку на вашу ссылку. Pierz 7 лет назад 0
Это сложно. Это онлайн-курс от Linux Foundation по подготовке к экзамену LFCS. Ely 7 лет назад 0

Похожие вопросы