До недавнего времени я думал, что среднее значение нагрузки (как показано, например, сверху) является скользящим средним по n последним значениям числа процессов в состоянии «работает» или «работает». И n было бы определено «длиной» скользящего среднего: поскольку алгоритм вычисления среднего значения нагрузки, по-видимому, срабатывает каждые 5 секунд, n было бы 12 для среднего значения нагрузки за 1 мин, 12x5 для среднего значения нагрузки за 5 минут и 12x15 за 15 минут средней нагрузки.
Но потом я прочитал эту статью: http://www.linuxjournal.com/article/9001 . Статья довольно старая, но тот же алгоритм реализован сегодня в ядре Linux. Средняя нагрузка - это не скользящая средняя, а алгоритм, имя которого я не знаю. Во всяком случае, я сделал сравнение между алгоритмом ядра Linux и скользящим средним для воображаемой периодической нагрузки:
,
Это огромная разница.
Наконец мои вопросы:
- Почему эта реализация была выбрана по сравнению с истинной скользящей средней, которая имеет реальное значение для всех?
- Почему все говорят о «средней нагрузке в 1 минуту», поскольку алгоритм учитывает гораздо больше, чем в последнюю минуту. (математически, все меры с момента загрузки; на практике, с учетом ошибки округления - все еще много мер)
источник
Ответы:
Эта разница восходит к оригинальной версии Berkeley Unix и связана с тем, что ядро не может поддерживать скользящее среднее; для этого нужно было бы сохранить большое количество прошлых чтений, и особенно в старые времена просто не хватало памяти для этого. Вместо этого используемый алгоритм имеет то преимущество, что все ядро, которое необходимо сохранить, является результатом предыдущих вычислений.
Имейте в виду, что алгоритм был немного ближе к истине, когда скорости компьютера и соответствующие тактовые частоты измерялись в десятках МГц вместо ГГц; в эти дни гораздо больше времени для ползучести расхождений.
источник
uptime
иw
, утверждали; Вы должны были взглянуть на исходники ядра, чтобы понять, что это не совсем так.1min/5min/15min
действительно имеет смысл. Они определяют время, после которого влияние текущей нагрузки падает на некоторый фиксированный коэффициент (вероятно, e = 2,71 или, может быть, 2). Просто попробуйте.