Как были выбраны весовые коэффициенты в вычислении нагрузки Linux? - PullRequest
12 голосов
/ 13 марта 2011

В Linux средняя нагрузка составляет 1 мин / 5 мин / 15 мин.Формула, используемая ядром, на самом деле является экспоненциальной скользящей средней.

Если мы определим cpuload(1) как первое вычисление загрузки процессора за 1 мин, а active() как функцию, возвращающую номер процесса в состоянии "выполняется "или" выполняется "в системе, тогда формула, используемая ядром для вычисления загрузки процессора nth 1 мин:

enter image description here

cpuload(0)0;это значение, хранящееся в памяти до первого выполнения cpuload().

Мой вопрос: как было выбрано взвешивание 2 -5.log2 (e) / 60 ?На мой взгляд, 2 -5 / 60 было бы лучше, потому что 1мин был бы периодом полураспада числа процессов (потому что (2 -5 / 60 ) 12 = 1/2).


Может быть, будет полезно, если я опубликую явную формулу cpuload(n) в дополнение к рекурсивному определению выше (щелкните правой кнопкой мыши, чтобы увидеть его в полном размере):

enter image description here

Ответы [ 2 ]

3 голосов
/ 31 августа 2011

Рассмотрим конкретную нагрузочную выборку active (K) , и какую долю эта выборка вносит в cpuload (K + d) , для увеличения значений d, Есть несколько ключевых наблюдений:

  • active (K) умножается на некоторый вес W (d) , чтобы определить его вклад в cpuload (K + d) .
  • W (d) всегда меньше единицы.
  • W (d) уменьшается экспоненциально по мере увеличения d .
  • компьютерная арифметика имеет конечную точность.

Вместе эти точки означают, что существует некоторое дмин такое, что для d> дмин , active (K) W (d) = 0 и поэтому active (K) не влияет на cpuload (K + d) . Вкратце, на cpuload (n) влияют только dmin предыдущих сэмплов.

Еще один способ взглянуть на это состоит в том, что cpuload (n) забывает данные через время, определенное

  • показатель распада, который определяет dmin и
  • частота дискретизации.

В этом окончательном толковании дается значение средних значений нагрузки за 1, 5 и 15 минут. Спад и интервал выборки выбираются таким образом, чтобы эти средние значения нагрузки забыли прошлое через 1, 5 и 15 минут соответственно.

0 голосов
/ 14 мая 2011

Полагаю, они хотели, чтобы среднее время жизни процесса запуска составляло одну минуту.

...