Понимание средней нагрузки в Linux

Understanding Load Average Linux



Средняя загрузка - это измерение объема работы по сравнению со свободными циклами ЦП, доступными на системном процессоре. В этой статье я дам определение этого термина, продемонстрирую, как Linux вычисляет это значение, а затем расскажу, как интерпретировать нагрузку на систему.

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







Windows вычисляет нагрузку иначе, чем Linux, и, поскольку Windows исторически была более популярной на настольных компьютерах, определение нагрузки Windows обычно понимается большинством пользователей компьютеров. Большинство пользователей Windows видели, что загрузка системы в диспетчере задач отображается в процентах от 0% до 100%.



В Windows это получается путем проверки того, насколько загружен Процесс простоя системы является и использует обратное значение для представления нагрузки системы. Например, если простаивающий поток выполняется 99% времени, загрузка ЦП в Windows будет 1%. Это значение легко понять, но дает меньше подробностей об истинном состоянии системы.



В Linux средняя загрузка вместо этого представлена ​​десятичным числом, начиная с 0,00. Это значение можно приблизительно определить как количество процессов за последнюю минуту, которые должны были ждать своей очереди на выполнение. В отличие от Windows, средняя загрузка Linux не является мгновенным измерением. Нагрузка представлена ​​в трех значениях - среднем за одну минуту, за пять минут и за пятнадцать минут.





Понимание средней нагрузки в Linux

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

Отображение средней нагрузки очень просто. В командной строке вы можете использовать множество команд. Я просто использую команду w:



корень@Дева[~]# в
21: 08:43 годвверх38дни,4:3. 4,4 пользователи, средняя нагрузка:3.11,2,75,2,70

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

В идеальной системе ни один процесс не должен задерживаться другим процессом (или потоком), но в однопроцессорной системе, это происходит, когда нагрузка превышает 1,00.

Здесь невероятно важны слова «однопроцессорная система». Если вы не используете древний компьютер, ваша машина, вероятно, имеет несколько ядер ЦП. В машине, на которой я работаю, у меня 16 ядер:

корень@Дева[~]# nproc
16

В данном случае средняя загрузка 3,11 совсем не настораживает. Это просто означает, что чуть больше трех процессов были готовы к выполнению и присутствовали ядра ЦП для обработки их выполнения. В этой конкретной системе нагрузка должна достигнуть 16, чтобы считаться 100%.

Чтобы преобразовать это в процентную загрузку системы, вы можете использовать эту простую, если не сказать тупую команду:

Кот /процентов/loadavg| резать -c 1-4 | выбросил 'scale = 2; ($ (/`nproc`) * 100 ' | до н.э -

Эта последовательность команд выделяет 1-минутное среднее значение с помощью вырезания и повторяет его, разделенное на количество ядер ЦП, с помощью калькулятора командной строки bc, чтобы получить процентное значение.

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

Минута, чтобы научиться, жизнь, чтобы стать мастером

В предыдущем разделе я заключил в кавычки пример 100% нагрузки 16.0 на 16-ядерную систему, потому что расчет нагрузки в Linux немного более туманный, чем в Windows. Системный администратор должен помнить, что:

  • Нагрузка выражается в ожидающих процессах и потоках
  • Это не мгновенное значение, а среднее, и
  • Его интерпретация должна включать количество ядер ЦП и
  • Может привести к чрезмерному увеличению времени ожидания ввода-вывода, как при чтении с диска

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

I / O Подождите

Ожидание ввода-вывода легче всего увидеть с помощью команды top:

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

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

Ядро против системного времени

Выше выделенные значения представляют время пользователя и ядра (системы). Это разбивка общего потребления процессорного времени пользователями (т. Е. Приложениями и т. Д.) И ядром (т. Е. Взаимодействием с системными устройствами). Более высокое пользовательское время будет указывать на большую загрузку ЦП программами, а более высокое время ядра будет указывать на большую обработку на системном уровне.

Довольно средняя нагрузка

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