Средняя загрузка (Vjy;uxx [gijr[tg)
Средняя загрузка (англ. load average) — показатель загруженности вычислительных мощностей, используемый в ряде операционных систем. В unix-подобных системах, как правило, отображается в виде трёх значений, которые представляют собой усреднённые величины за последние 1, 5 и 15 минут; чем ниже эта величина, тем менее загружены вычислительные мощности.
В том или ином виде показатель использовался в 1960-е годы в CTSS[англ.] и Multics; в 1973 году вариант расчёта, используемый в Tenex, стандартизован в качестве RFC 546[1], в нём средняя загрузка определялась как это среднее количество готовых к выполнению процессов за определённый период времени. На ранних этапах развития BSD показатель введён в Unix-системы, изначально отражал исключительно нагрузку на центральный процессор (в таком виде сохранился и в современном Solaris), в Linux-системах с 1993 года показатель отражает общесистемную потребность в ресурсах, включая ресурсы ввода-вывода.
На машинах состоянии простоя значения средней загрузки близки к нулю. Каждый процесс, который использует процессор либо ожидает выделения процессорных ресурсов (находится в очереди ожидания), увеличивает число загрузки на единицу; таким образом, значение средней загрузки «128» в 64-процессорной системе указывает на то, что в среднем по одному процессу выполняется на каждом из процессоров и по одному процессу находится в очереди выполнения. Поскольку в большинстве современных систем показатель зависит от потребности в общесистемных ресурсах, его некорректно использовать для оценки потребности исключительно процессорных мощностей, поскольку процессы, блокируемые медленными операциями ввода-вывода (например, длительными операциями доступа к NFS, при работе с медленной сетью хранения данных или низкопропускным USB-устройством) также дают вклад в увеличение этого показателя.
В Unix-системах значение средней загрузки отражается в procfs в файле /proc/loadavg в форме пяти текстовых полей, разделённых пробелами. Первые три поля содержат значения средней загрузки системы за последние 1, 5 и 15 минут — эти значения выводятся командами uptime, w, top, htop, atop. Четвёртое поле содержит количество процессов в системе на данный момент и состоит из двух чисел, разделённых дробной чертой: левое число показывает количество выполняемых в данный момент процессов, правое число — общее количество процессов в системе. Пятое поле показывает последний PID (идентификатор процесса), выделенный системой. Пример вывода:
$ cat /proc/loadavg 0.01 0.04 0.01 1/185 12122
Примечания
[править | править код]- ↑ RFC 546: TENEX Load Averages for July 1973 . Дата обращения: 7 октября 2023. Архивировано 9 июля 2022 года.
Литература
[править | править код]- Брендан Грегг. Производительность систем. — 2-е. — СПб.: Питер, 2023. — 992 с. — ISBN 978-5-4461-1818-2.
Ссылки
[править | править код]- Gunther, N. J. UNIX Load Average – Part 1: How It Works : [англ.]. — TeamQuest.
- Lewis, A. Understanding Linux CPU Load — when should you be worried? : [англ.] // ScoutAPM. — 2009.
- Walker, R. Examining Load Average : [англ.] : [арх. 3 февраля 2007] // Linux Journal. — 2006. — 1 December.
- Ferrari, D. An empirical investigation of load indices for load balancing applications : [англ.] : [арх. 18 сентября 2006] / D. Ferrari, S. Zhou. — Systems. — 1986. — P. 54–69.