Uptime linux load average

Sysadminium

Load average — показатель средней загруженности системы Linux. Из статьи вы узнаете что можно узнать о системе смотря на этот показатель.

Что такое Load Average

Load Average (LA) — это показатель, который показывает среднюю нагрузку на сервер за определённый период времени. Чем его значение ниже, тем ниже нагрузка на сервер. В системах Linux этот показатель автоматически рассчитывается за 1, 5 и 15 минут ядром системы.

Под средней нагрузкой на сервер понимают суммарную нагрузку процессами на центральный процессор и подсистему ввода/вывода за определённый промежуток времени.

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

Как посмотреть Load Average

Вы уже должны быть знакомы с Load Average. Его значение за 1 минуту, за 5 минут и за 15 минут показывают уже рассмотренные ранее утилиты top и htop.

Утилита top - load average

Также вы можете увидеть этот показатель выполнив команду uptime:

alex@deb-11:~$ uptime 11:50:56 up 8 days, 22:25, 1 user, load average: 0,01, 0,01, 0,00

И ещё, вы можете прочитать информацию из файла /proc/loadavg:

alex@deb-11:~$ cat /proc/loadavg 1.00 1.00 1.00 2/130 15013

Первые три числа это значение Load Average.

Четвертое поле состоит из двух чисел, разделенных косой чертой. Первое из них — это количество выполняющихся в данный момент процессов. Значение после косой черты — это количество процессов, которые в настоящее время существуют в системе.

Пятое поле — это PID процесса, который был создан в системе последним.

Как рассчитывается Load Average

Максимальным пределом для Load Average обычно считается количество ядер на сервере, которые способны обрабатывать процессы. Например, если на сервере суммарно 16 ядер, то одновременно на нём может выполняться 16 процессов. И это означает, что если:

  • LA< 16, значит всё хорошо.
  • LA = 16, значит сервер работает без задержек, но запаса на нём уже нет.
  • LA > 16, процессам приходится ждать, значит сервер будет работать с задержками.
Читайте также:  Забыл логин пароль linux

Какие же процессы нагружают систему:

  • которые уже обрабатываются на процессоре (running);
  • только готовые обрабатываться (runnable);
  • обратившиеся к подсистеме ввода/вывода и читающие или пишущие туда информацию (uninterruptible sleep).

Первые два вида процессов — это нагрузка на процессор, а последний — это нагрузка на подсистему ввода вывода (обычно нагрузка на диск или сетевой ресурс).

Напомню, что процессы, которые обрабатываются на процессоре, или готовы обрабатываться в выводе ps обозначаются статусом R (running or runnable). А процессы в состоянии uninterruptible sleep обозначаются буквой D. Посмотреть такие процессы в определённый момент времени, можно выполнив команду:

alex@deb-11:~$ ps ax -o pid,comm,state | egrep 'R$' || 'D$' 14758 md5sum R 14816 ps R

А если хотите понаблюдать за изменениями, то воспользуйтесь утилитой watch:

alex@deb-11:~$ watch 'ps ax -o pid,comm,state | egrep 'R$' || 'D$'' Every 2,0s: ps ax -o pid,comm,state | egrep R || D deb-11: Wed Oct 5 14:08:08 2022 14758 md5sum R 14850 ps R 14851 sh R

И не забывайте что Load Average — это среднее значение. Представим что за минуту процессор обработает 5 циклов (это не примерно, так просто легче считать):

  • 1 цикл — 2R
  • 2 цикл — 5R
  • 3 цикл — 2R + 1D
  • 4 цикл — 16R
  • 5 цикл -2R

Получается что в этом случае LA = (2 + 5 + 3 + 16 + 2) / 5 = 5,6. Для 16 ядерного процессора, вполне нормально. Но для 4 ядерного — плохо.

Как анализировать его значение

Load Average показывает 3 числа. Первое это средняя нагрузка за 1 минуту, второе — за 5 минут, а третье — за 15 минут. Поэтому, если первое число больше чем второе и третье, значит нагрузка в данный момент растёт. И наоборот, если третье число самое большое, второе поменьше, а первое ещё меньше — значит нагрузка на сервере была высокой, но уже упала.

  • 6,15 5,6 3,2 — нагрузка растет;
  • 2,02 5,13 8,52 — нагрузка падает;
  • 3,18 3,25 3,20 — нагрузка почти не меняется.

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

А если Load Average, на протяжении всей работы сервера, равен количеству ядер сервера. Это значит, что сервер работает на пределе, но при этом справляется со своей работой. Проблема в этом случае заключается только в том, что нет запаса по производительности. Какое-то приложение на сервере обновится, или вы установите новое приложение и сервер начнёт подтормаживать. Поэтому, в этом случае, можно уже подумать над оптимизацией или апгрейдом сервера.

Читайте также:  Удаление второй операционной системы linux

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

Также, бывают ситуации, при которых Load Average может резко начать подниматься. Например, LA может быть постоянно в районе 6, и вдруг поднимется до 100. Обычно такое случается, когда на сервере что-то пошло не по плану. Например, сервер обращается к сетевому ресурсу, а тот недоступен, при этом процессы уходят в состояние uninterruptible sleep, тем самым повышая LA.

Итог

Мы познакомились поближе с определением Load Average для Linux систем. Узнали как смотреть это значение и как анализировать нагрузку на сервер.

Источник

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

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

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

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

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

Читайте также:  Сброс пароля linux recovery mode

Также поступает и процессор. Он выделяет тому процессу, которому нужны вычисления, некоторое время в течение которого предоставляет доступ к ресурсам. Это время называется тиком. Процессы при запросе тиков выстраиваются в очередь, при этом имеет значение приоритет процесса, так как если он высок, то процесс будет первым в очереди. Получается, если процесс потребляет много тиков, то значит система находится под нагрузкой. В 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