Load Average

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

Результат работы утилиты htop, на котором видна большая загрузка системы

Получение средней загрузки в ОС семейства 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 марта.

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.