Load average: Что это такое, и какая средняя нагрузка лучше всего подходит для ваших Linux-серверов?

Linux Logo System

Load average - также называемое средней нагрузкой на систему, является важной метрикой, которая показывает, есть ли несколько задач в очереди на сервере Linux. Среднее значение нагрузки может быть высоким или низким, в зависимости от количества ядер вашего сервера, количества CPU, интегрированных в систему сервера, и самого числа load average.

Люди, только начинающие работать с системным администрированием, часто путают среднее значение нагрузки с процентом CPU. Но если процент CPU - это активное измерение производительности системы в конкретный момент времени, то среднее значение нагрузки показывает, как изменяется производительность системы в различных временных диапазонах. Среднее значение нагрузки дает нам представление о том, как система будет вести себя в будущем.

Мониторинг Load average в вашей системе

Мы можем использовать различные инструменты для мониторинга средней нагрузки, например, командные строки uptime или top. Как следует из названия, uptime показывает продолжительность работы системы, а также дополнительную информацию, например, количество пользователей или среднее значение нагрузки за последние 1, 5 и 15 минут.

Чтобы увидеть пример, давайте запустим uptime на сервере Linux:

uptime

Здесь мы видим, что сервер работает уже пять дней; сервером пользуется два человека; среднее значение нагрузки за последние 1, 5 и 15 минут составило 0,97, 0,64 и 0,56 соответственно.

С помощью команды top (таблица процессов) мы можем получить список текущих запущенных процессов в системе и статистику использования ресурсов в CPU и памяти.

Давайте запустим команду top на машине Linux, чтобы посмотреть, как это выглядит на практике.

top

Из результатов видно, что в системе находится два пользователя, а средние значения нагрузки за последние 1, 5 и 15 минут составляют 0,56, 0,61 и 0,56 соответственно.

Что считается высоким средним значением нагрузки?

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

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

top

В данном случае средняя нагрузка составляет 7,98, а текущий сервер имеет 4 CPU. Мы можем получить количество CPU на сервере с помощью lscpu.

lscpu

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

Что такое идеальное Load average?

Среднее значение нагрузки считается идеальным, если его значение меньше, чем количество CPU в Linux-сервере. Например, при наличии только одного процессора в Linux-сервере лучше всего, если среднее значение нагрузки будет меньше 1.

uptime

В приведенном выше случае среднее значение нагрузки за 1, 5 и 15 минут составляет всего 0,97, 0,64и 0,56, поэтому нам не стоит беспокоиться.

Решение проблем с высоким Load average

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

1. Большое количество потоков, выполняемых на сервере.

На сервере может быть запущено приложение, реализованное с использованием моделей параллелизма, таких как Akka или goroutines. С одной стороны, это повышает производительность приложения, так как оно может обрабатывать несколько запросов одновременно.

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

2. Нехватка оперативной памяти, вынуждающая сервер использовать память подкачки

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

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

3. Большое количество ввода-вывода

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

Как считать среднюю нагрузку на разные процессорные блоки

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

Начнем с выполнения команды top.

top

Здесь средняя загрузка системы составляет 3,25 за последнюю 1 минуту, и мы видим средние показатели для всех CPU. Между тем, мы не знаем, как работает CPU 0, чтобы узнать это, нам нужно нажать 1.

top

Это даст нам статистику для процессора номер 0: среднее значение нагрузки (3.15; 3.70; 2.41), время, проведенное в пространстве пользователя (100.0 us), и время, используемое системными процессами (0).

Avatar for Gnostis
Gnostis
Добавить комментарий