Введение

Количество вычислительной работы, выполняемой компьютерной системой.

В системах UNIX, системная нагрузка – это показатель объема вычислительной работы, выполняемой компьютерной системой. Средняя нагрузка представляет собой среднее значение системной нагрузки за определенный период времени. Обычно она отображается в виде трех чисел, соответствующих нагрузке системы за последние один, пять и пятнадцать минут.

Интерпретация

Для однопроцессорных систем, испытывающих нехватку ресурсов процессора, среднюю нагрузку можно рассматривать как меру загруженности системы за соответствующий период времени. Для систем с несколькими процессорами необходимо разделить нагрузку на количество процессоров, чтобы получить сопоставимый показатель. Например, среднюю нагрузку "1.73 0.60 7.98" на однопроцессорной системе можно интерпретировать следующим образом:

В течение последней минуты система была перегружена в среднем на 73% (1.73 процесса в состоянии готовности к выполнению, следовательно, в среднем 0.73 процесса ожидали своей очереди на однопроцессорной системе). В течение последних 5 минут процессор простаивал в среднем 40% времени. В течение последних 15 минут система была перегружена в среднем на 698% (7.98 процессов в состоянии готовности к выполнению, следовательно, в среднем 6.98 процесса ожидали своей очереди на однопроцессорной системе). Это означает, что эта система (процессор, диск, память и т.д.) могла бы справиться со всей работой, запланированной на последнюю минуту, если бы была в 1.73 раза производительнее. В системе с четырьмя процессорами средняя нагрузка 3.73 указывает на то, что в среднем 3.73 процесса готовы к выполнению, и каждый из них может быть назначен процессору. На современных UNIX-системах обработка потоков при расчете средней нагрузки различается. Некоторые системы учитывают потоки как процессы: каждый поток, ожидающий выполнения, добавляет 1 к нагрузке. Однако другие системы, особенно системы, реализующие так называемое M:N-многопоточность, используют различные стратегии, такие как учет процесса только один раз для расчета нагрузки (независимо от количества потоков) или учет только потоков, которые в данный момент видны планировщику потоков пользовательского уровня ядру, что может зависеть от уровня параллелизма, установленного для процесса. Linux, по-видимому, учитывает каждый поток отдельно, добавляя 1 к нагрузке.

Загрузка процессора против использования процессора

Сравнительное исследование различных показателей нагрузки, проведенное Ferrari et al., показало, что информация о загрузке процессора, основанная на длине очереди процессора, значительно эффективнее справляется с балансировкой нагрузки, чем использование процессора. Вероятно, это связано с тем, что при высокой загрузке хоста его использование процессора, скорее всего, будет близко к 100%, и, следовательно, не сможет точно отразить фактический уровень нагрузки. В отличие от этого, длина очереди процессора напрямую отражает объем нагрузки на процессор. Например, две системы – одна с 3, а другая с 6 процессами в очереди – с большой вероятностью будут демонстрировать использование около 100%, хотя они очевидно различаются по степени загруженности.