Перейти к содержанию

Load Average

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис
Результат работы утилиты htop, на котором видна большая загрузка системы

Средняя загрузка (англ. load average) — среднее значение загрузки системы за некоторый период времени, как правило, отображается в виде трёх значений, которые представляют собой усредненные величины за последние 1, 5 и 15 минут. Чем ниже эта величина, тем менее нагружена компьютерная система. Load average вычисляется как длина очереди выполнения в операционной системе, где единица означает, что очередь заполнена, а значение выше единицы — что есть процессы, которые ожидают своей очереди на выполнение[1].

Получение средней загрузки в ОС семейства UNIX

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

 $ uptime
 14:34:03 up 10:43,  4 users,  load average: 0.06, 0.11, 0.09

Команды w и top показывают те же 3 значения средней нагрузки. В Linux они также могут быть получены путём прочтения файла /proc/loadavg.

В компьютерах, находящихся в состоянии простоя, среднее число загрузки равно 0. Каждый процесс, который использует либо ждёт CPU (очередь ожидания), увеличивают число загрузки на один. Большинство UNIX-систем считают процессы только в состоянии выполнения (на CPU) или готовые к выполнению (ожидающие CPU). Однако Linux также включает в подсчёт процессы в состоянии беспробудного сна (всё ещё ожидающие жёсткий диск), которые могут привести к заметно отличающимся результатам, особенно когда много процессов блокируют операции ввода-вывода.

Для примера можно привести процессы, блокируемые в результате ошибок NFS или медленной системы хранения данных (USB 1.x устройств). Такие ситуации приводят к увеличению показателя средней нагрузки, однако, не отражают реальной нагрузки на CPU (но дает понятие, как долго пользователь может ожидать выполнения операций).

Средняя нагрузка — это не очень точная характеристика (хотя бы потому, что она определяет усреднённые значения). И если на компьютере есть несколько процессоров, то такой характеристике верить нельзя. Располагая двумя процессорами, можно (теоретически) одновременно выполнять в два раза большее число программ. Это означает, что средняя нагрузка 2.00 (на двухпроцессорном компьютере) будет эквивалентна средней нагрузке 1.00 (на однопроцессорном компьютере). На самом деле это не совсем так. Из-за дополнительной нагрузки, вызванной планированием и некоторыми другими факторами, двухпроцессорный компьютер не обеспечивает удвоения быстродействия по сравнению с однопроцессорным вариантом.

Файл /proc/loadavg

/proc/loadavg — текстовый файл в виртуальной файловой системе /proc/, он содержит 5 текстовых полей, разделенных пробелами.

Первые три поля содержат значения средней загрузки системы за последние 1, 5 и 15 минут — те же значения выводит команды uptime и top.

Четвертое поле содержит количество процессов в системе на данный момент и состоит из двух чисел, разделенных дробной чертой: левое число показывает количество выполняемых в данный момент процессов, правое число — общее количество процессов в системе.

Пятое поле показывает последний PID (идентификатор процесса), выделенный системой.

   $ cat /proc/loadavg
   0.01 0.04 0.01 1/185 12122

Cм. также

Примечания

  1. CPU Load: когда начинать волноваться? : [арх. 23 января 2019] = Andre Lewis. Understanding Linux CPU Load — when should you be worried? / Пер. с англ. JCDenton. — 2014. — 24 марта.

Ссылки