Linux load average what is high

CPU Load: когда начинать волноваться?

Данная заметка является переводом статьи из блога компании Scout. В статье дается простое и наглядное объяснение такого понятия, как load average . Статья ориентирована на начинающих Linux-администраторов, но, возможно, будет полезна и более опытным админам. Заинтересовавшимся добро пожаловать под кат.

Вероятно, Вы уже знакомы с понятием load average . Load average — это три числа, отображаемые при выполнении команд top и uptime . Выглядят они примерно так:

Большинство интуитивно понимают, что эти три числа обозначают средние значения загрузки процессора на прогрессивно увеличивающихся временных промежутках (одна, пять и пятнадцать минут) и чем меньше их значения — тем лучше. Большие числа свидетельствуют о слишком большой нагрузке на сервер. Но какие значения считать предельными? Какие значения являются «плохими», а какие — «хорошими»? Когда Вам следует просто волноваться о занчениях средней загрузки, а когда следует бросать другие дела и решать проблему так быстро, как это возможно?
Для начала, давайте разберемся, что же означает load average . Рассмотрим простейший случай: предположим, что у нас в наличии один сервер с одноядерным процессором.

Аналогия транспортного потока

Одноядерный процессор похож на дорогу с одной полосой движения. Представьте себе, что Вы управяете движением машин по мосту. Иногда, Ваш мост загружен настолько сильно, что машинам приходится ждать в очереди чтобы проехать по нему. Вы хотите дать людям понять, как долго им придется ждать чтобы перебраться на другую сторону реки. Хорошим способом сделать это будет показать как много машин ждут в очереди в конкретный момент времени. Если машин в очереди нет, подъезжающие водители будут знать, что они сразу смогут проехать по мосту. В противном случае, они будут понимать, что придется ждать своей очереди.
Итак, Управляющий Мостом, какую систему обозначений Вы будете использовать? Как насчет такой:

  • 0.00 означает, что на мосту нет ни одной машины. Фактически, значения от 0.00 до 1.00 означают отсутствие очереди. Подъезжающая машина может воспользоваться мостом без ожидания;
  • 1.00 означает, что на мосту находится как раз столько автомобилей, сколько он может вместить. Все еще идет хорошо, но, в случае увеличения потока машин, возможны проблемы;
  • Значения, превышающие 1.00 означают наличие очереди на въезде. Насколько большой? Например, значение 2.00 показывает, что в очереди стоит столько же автомобилей, сколько движется по мосту. 3.00 означает, что мост полностью занят и в очереди ожидает в два раза больше машин, чем он может вместить. И так далее.
Читайте также:  Автоматическое монтирование samba linux

imageload average = 1.00
imageload average = 0.50
imageload average = 1.70
Вот базовое значение загрузки процессора. «Машины» обрабатываются с использованием промежутков процессорного времени («пересекают мост»), либо ставятся в очередь. В Unix это называется длина очереди выполнения: количество всех процессов, выполняемых в данный момент времени, плюс количество процессов, ожидающих в очереди.
Вам, как управляющему мостом, хотелось бы, чтобы машины-процессы никогда не ждали в очереди. Таким образом, предпочтительно, чтобы загрузки процессора была всегда ниже 1.00. Периодически возможны всплески трафика, когда загрузка будет превышать 1.00, но если она постоянно превышает данное значение — это повод начать волноваться.

Так Вы говорите, 1.00 — идеальное значание load average?

  • Практическое правило «Требуется присмотр»: 0.70. Если среднее значение загрузки постоянно превышает 0.70, следует выяснить причину такого поведения системы во избежании проблем в будущем;
  • Практическое правило «Почини это немедленно!»: 1.00. Если средняя загрузка системы превышает 1.00, необходимо срочно найти причину и устранить ее. В противном случае, Вы рискуете быть разбуженным посреди ночи и это точно не будет весело;
  • Практическое правило «Щас же 3 ночи. ШОЗАНАХ. »: 5.00. Если среднее значение загрузки процессора превышает 5.00, у Вас серьезные проблемы. Сервер может подвисать или работать очень медленно. Скорее всего, это произойдет в худший из возможных моментов. Например, посреди ночи или когда Вы выступаете с докладом на конференции.

Что насчет многопроцессорных систем? Мой сервер показывает загрузку 3.00 и все ОК!

У Вас четырехпроцессорная система? Все в порядке, если load average равен 3.00.
В мультипроцессорных системах загрузка вычисляется относительно количества доступных процессорных ядер. 100% загрузка обозначается числом 1.00 для одноядерной машины, числом 2.00 для двуядерной, 4.00 для четырехъядерной и т.д.
Если вернуться к нашей аналогии с мостом, 1.00 означает «одну полностью загруженную полосу движения». Если на мосту всего одна полоса, 1.00 означает, что мост загружен на 100%, если же в наличии две полосы, он загружен всего на 50%.
То же самое с процессорами. 1.00 означает 100% загрузки одноядерного процессора. 2.00 — 100% загрузки двуядерного и т.д.

Многоядерность vs. многопроцессорность

  • «Количество ядер = максимальная загрузка». На многоядерной системе, загрузка не должна превышать количества доступных ядер;
  • «Ядра — они и в Африке ядра». То, как ядра распределены по процессорам — неважно. Два четырехъядерных = четыре двуядерных = восем одноядерных процессоров. Имеет значение лишь общее число ядер.

Сведем все вместе

~$ uptime 09:14:44 up 1:20, 5 users, load average: 0,35, 0,32, 0,41 

Здесь представлены показатели для системы с четырехъядерным процессором и мы видим, что имеется большой запас по нагрузке. Я даже не буду задумываться о ней, пока load average не превысит 3.70.

Какое среднее значение мне следует контролировать? Для одной, пяти или 15 минут?

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

Читайте также:  Create sudoer user linux
Количество ядер важно для правильно понимания load average. Как мне его узнать?

Команда cat /proc/cpuinfo выводит информацию обо всех процессорах в вашей системе. Чтобы узнать количество ядер, «скормите» ее вывод утилите grep :

~$ cat /proc/cpuinfo | grep 'cpu cores' cpu cores : 4 cpu cores : 4 cpu cores : 4 cpu cores : 4 

Примечания переводчика

Выше представлен перевод самой статьи. Также много интересной информации можно почерпнуть из комментариев к ней. Так, один из комментаторов говорит о том, что не для каждой системы важно иметь запас по производтельности и не допускать значения загрузки выше 0.70 — иногда нам нужно чтобы сервер работал «на всю катушку» и в таких случаях load average = 1.00 — то, что доктор прописал.

PS

Хабраюзер dukelion добавил в комментариях ценное замечание, что в некоторых сценариях, для достижения максимального КПД «железа», стоит держать значение load average несколько выше 1.00 в ущерб эффективности работы каждого отдельного процесса.

PPS

Хабраюзер enemo в комментариях добавил замечание о том, что высокий показатель load average может быть вызван большим количеством процессов, выполняющих в данный момент операции чтения/записи. То есть, load average > 1.00 на одноядерной машине не всегда говорит о том, что в Вашей системе отсутствует запас по загрузке процессора. Требуется более внимательное изучение причин такого показателя. Кстати, это хорошая тема для нового поста на Хабре 🙂

PPPS

Хабраюзер esvaf в комментариях интересуется, как интерпретировать значения load average в случае использования процессора с технологией HyperThreading. Однозначного ответа на данный момент я не нашел. В данной статье утверждается, что процессор, который имеет два виртуальных ядра при одном физическом, будет на 10-30% более производительным, чем простой одноядерный. Если принимать такое допущение за истину, считаю, при интерпретации load average стоит брать в расчет только количество физических ядер.

Источник

Что такое Load Average и какую информацию он несёт для системного адмистратора Linux

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

Что такое средняя загрузка?

Мы не будет обращаться к Википедии или учебникам по системному администрированию. Вместо этого я хочу на простом примере объяснить что такое load average.

Читайте также:  Linux on intel galileo

Независимо от того какой на вашем сервере установлен процессор (мощный или нет, многоядерный или с одним ядром) он в процессе работы выполняет определенный программный код. Если бы на сервере был запущен один процесс, то вопроса распределения нагрузки не стояло, но как понимаете такое вряд ли когда-то возможно. Как в таком случае распределять ресурсы между запущенными процессами? Тут работает принцип, которым мы руководствовались в детстве, когда на одну приставку или компьютер было много желающих поиграть — мы обговаривали время игры, по истечению которого следует смена, например 15 минут на одного желающего.

Также поступает и процессор. Он выделяет тому процессу, которому нужны вычисления, некоторое время в течение которого предоставляет доступ к ресурсам. Это время называется тиком. Процессы при запросе тиков выстраиваются в очередь, при этом имеет значение приоритет процесса, так как если он высок, то процесс будет первым в очереди. Получается, если процесс потребляет много тиков, то значит система находится под нагрузкой. В Linux для того, чтобы оценить нагрузку системы используется интервал в 5 секунд и учитываются как те процессы, которые уже что-то потребляют, так и те, которым не хватило тика, чтобы завершить нужные вычисления. Если процесс за указанные 5 секунд использовал все тики, чтобы выполнить свои вычисления и очередь из процессов не образовалась, то ты говорим про 100%-тную загрузку процессора. По другому, мы можем сказать, что load average равен 1. Сравним это описание с тем, что происходит в магазине — вы берете товар, подходите на кассу и в течение определенного времени (тика) продавец вас обслуживает. В реальной жизни ситуация чуть иная и всегда в магазине есть очередь, кто-то в ней оставляет мужа и продолжает покупки, у кого-то на кассе нет нужной суммы на карте и так далее.

Load average показывает отношение имеющихся запросов на вычислительные ресурсы к количеству этих самых ресурсов (тиков). Для любого одноядерного процессора (будь то Intel последнего поколения или старенький Celeron) использование всех имеющихся ресурсов означает, что load average равен 1. Если количество ядер процессора увеличилось в 2 раза, то увеличилось и количество ресурсов, которые можно предложить процессам для вычислений. В такой ситуации load average равняется 2, а значит и производительность выше, верно? Но, средняя загрузка это не тоже самое, что и производительность, так как оба ядра сделают одинаковое количество тиков. То есть, второе ядро не повысит производительность, но позволит обработать вдвое большее количество запросов (операций).

Надеюсь, что описанное выше позволило вам понять что такое load average и в чем суть этого явления.

Как узнать load average для сервера?

Первым простым способом проверки load average является использование команды uptime , которая покажет общее время активности машины и нужные нам данные.

Источник

Оцените статью
Adblock
detector