Por que a média móvel simples de 1/5/15 não é usada no cálculo de carga do Linux?

28

Até recentemente eu pensava que a média de carga (como mostrado, por exemplo, no topo) era uma média móvel nos n últimos valores do número de processos no estado "runnable" ou "running". E n teria sido definido pelo "comprimento" da média móvel: como o algoritmo para calcular a média de carga parece acionar a cada 5 s, n seria 12 para a média de carga de 1min, 12x5 para a média de carga de 5 min e 12x15 para a média de carga de 15 min.

Mas então eu li este artigo: link . O artigo é bem antigo, mas o mesmo algoritmo é implementado hoje no kernel do Linux. A média de carga não é uma média móvel, mas um algoritmo para o qual não sei um nome. De qualquer forma, fiz uma comparação entre o algoritmo do kernel do Linux e uma média móvel para uma carga periódica imaginária:

.

Existeumaenormediferença.

Finalmente,minhasperguntassão:

  • Porqueestaimplementaçãofoiescolhidaemcomparaçãocomumamédiamóvelreal,quetemumsignificadorealparaalguém?
  • Porquetodomundofalasobre"1min load average", já que muito mais do que o último minuto é levado em conta pelo algoritmo. (matematicamente, toda a medida desde o boot; na prática, levando em conta o erro de arredondamento - ainda muitas medidas)
por user368507 08.03.2011 / 23:34

1 resposta

23

Essa diferença remonta ao Berkeley Unix original e decorre do fato de que o kernel não pode manter uma média móvel; precisaria reter um grande número de leituras anteriores para fazê-lo, e especialmente nos velhos tempos simplesmente não havia memória de sobra para isso. O algoritmo usado em seu lugar tem a vantagem de que tudo que o kernel precisa manter é o resultado do cálculo anterior.

Tenha em mente que o algoritmo estava um pouco mais próximo da verdade quando as velocidades do computador e os ciclos de relógio correspondentes eram medidos em dezenas de MHz em vez de GHz; há muito mais tempo para as discrepâncias se infiltrarem nesses dias.

    
por 09.03.2011 / 06:48