Estamos enfrentando um comportamento estranho, em que vemos alta utilização da CPU, mas média de carga bastante baixa.
O comportamento é melhor ilustrado pelos gráficos a seguir do nosso sistema de monitoramento.
Por volta das 11:57, a utilização da CPU varia de 25% a 75%. A média de carga não é alterada significativamente.
Executamos servidores com 12 núcleos com 2 hiper threads cada. O sistema operacional vê isso como 24 CPUs.
Os dados de utilização da CPU são coletados executando /usr/bin/mpstat 60 1
cada minuto. Os dados para a all
linha e a %usr
coluna são mostrados no gráfico acima. Estou certo de que isso mostra a média por dados da CPU, não a utilização "empilhada". Enquanto observamos 75% de utilização no gráfico, vemos um processo mostrando o uso de cerca de 2000% da CPU "empilhada" top
.
O valor médio da carga é obtido a /proc/loadavg
cada minuto.
uname -a
dá:
Linux ab04 2.6.32-279.el6.x86_64 #1 SMP Wed Jun 13 18:24:36 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
Dist Linux é Red Hat Enterprise Linux Server release 6.3 (Santiago)
Executamos um par de aplicativos da Web Java com uma carga bastante pesada nas máquinas, pensamos em 100 solicitações / s por máquina.
Se eu interpretar os dados de utilização da CPU corretamente, quando tivermos 75% de utilização da CPU, isso significa que nossas CPUs estão executando um processo 75% do tempo, em média. No entanto, se nossas CPUs estiverem ocupadas 75% das vezes, não devemos ver uma média de carga mais alta? Como as CPUs podem estar 75% ocupadas enquanto temos apenas 2 a 4 trabalhos na fila de execução?
Estamos interpretando nossos dados corretamente? O que pode causar esse comportamento?