(Originalmente postei isso no Stack Overflow - aconselhado a movê-lo para cá).
No fedora 17, quando executo o comando sar para ver a atividade de carga média, quase sempre mostra um comprimento de fila de execução de 1, embora o sistema esteja ocioso e as médias de carga sejam praticamente zero. Meu entendimento do comprimento da fila de execução e como isso se relaciona com a média de carga do Linux sugere que se o comprimento da fila de execução for realmente 1 em média durante um período de tempo, para o meu sistema quad core a média de carga deve ser de aproximadamente 25% meu caso leu em torno da marca de 1,00:
$ sar -q 30 60
Linux 3.9.10-100.fc17.i686 (blah) 22/05/14 _i686_ (4 CPU)
16:29:10 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
16:29:40 1 547 0.02 0.07 0.57 0
16:30:10 1 548 0.09 0.08 0.56 0
16:30:40 1 547 0.05 0.07 0.54 0
16:31:10 1 547 0.03 0.06 0.52 0
16:31:40 0 547 0.02 0.06 0.51 0
16:32:10 1 547 0.01 0.05 0.49 0
16:32:40 1 547 0.13 0.08 0.49 0
16:33:10 1 547 0.08 0.07 0.47 0
16:33:40 1 547 0.05 0.07 0.46 0
Se eu, então, sondar frequentemente tarefas executáveis, eu ocasionalmente vejo o processo estranho aparecer (eu faço isso com ps r -A | grep -v 'ps r -A'). Eu teria esperado ver um processo aparecer regularmente para estar alinhado com o resultado do sar.
Então, se eu chutar de um único processo segmentado que consome o máximo de CPU possível, o tamanho da fila de execução aumenta imediatamente para 2 (o que é esperado nas circunstâncias), mas estranhamente após um tempo a fila de execução cai para 1 de novo?
Linux 3.9.10-100.fc17.i686 (blah) 22/05/14 _i686_ (4 CPU)
16:32:40 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
16:33:10 1 547 0.08 0.07 0.47 0
16:33:40 1 547 0.05 0.07 0.46 0
START SCRIPT
16:34:10 2 548 0.11 0.08 0.45 0
16:34:40 2 548 0.51 0.18 0.47 0
16:35:10 2 548 0.70 0.26 0.49 0
16:35:40 2 548 0.82 0.33 0.50 0
16:36:10 2 548 0.89 0.39 0.52 0
16:36:40 2 548 0.93 0.45 0.53 0
16:37:10 2 548 0.96 0.50 0.55 0
16:37:40 2 548 1.04 0.57 0.57 0
16:38:10 2 548 1.02 0.61 0.58 0
16:38:40 2 548 1.01 0.64 0.60 0
16:39:10 2 548 1.09 0.70 0.61 0
16:39:40 2 548 1.05 0.72 0.63 0
16:40:10 3 550 1.11 0.77 0.64 0
16:40:40 3 549 1.06 0.79 0.65 0
16:41:10 3 549 1.04 0.81 0.67 0
16:41:40 3 549 1.02 0.83 0.68 0
16:42:10 2 549 1.01 0.84 0.69 0
16:42:40 2 549 1.01 0.86 0.70 0
16:43:10 1 549 1.07 0.89 0.71 0
16:43:40 1 549 1.04 0.90 0.72 0
16:44:10 1 549 1.03 0.91 0.73 0
16:44:40 1 549 1.02 0.92 0.74 0
16:45:10 1 548 1.01 0.93 0.75 0
16:45:40 1 548 1.01 0.93 0.75 0
16:46:10 1 548 1.00 0.94 0.76 0
16:46:40 1 548 1.00 0.94 0.77 0
16:47:10 1 548 1.00 0.95 0.78 0
16:47:40 1 548 1.00 0.96 0.78 0
16:48:10 1 548 1.00 0.96 0.79 0
Alguém pode explicar o que está acontecendo aqui? A única explicação que posso pensar é que existe alguma tarefa especial do sistema que pode utilizar a CPU se nada mais for senão:
- não está incluído nos cálculos de média de carga e
- Desistirá do tempo de CPU se um processo chegar e precisar
OR
Quando o comando sar mostra amostras da fila de execução, ele vê a si mesmo, mas isso não explica por que a fila de execução permanece permanentemente em um com o script de carregamento cpu em execução?
OR
Eu não entendi o conceito da média de carga / fila de execução.
Alguma sugestão muito apreciada!
ATUALIZAÇÃO:
Então eu tentei novamente em uma máquina diferente com a mesma versão do fedora e sar etc.
Desta vez eu estou vendo um comprimento de fila de execução consistente de 0 quando o sistema está ocioso.
Também tentei em uma máquina centos 5.7, novamente, comprimento da fila de execução é consistentemente 0 quando ocioso.
Então, presumivelmente, o sar não se vê instantaneamente na fila de execução.
Ainda sem entender por que essa máquina reporta ~ 0 para a média de carga, mas mede consistentemente 1 para o tamanho da fila de execução.