Nos encontramos con un comportamiento extraño en el que vemos una alta utilización de la CPU pero un promedio de carga bastante bajo.
El comportamiento se ilustra mejor con los siguientes gráficos de nuestro sistema de monitoreo.
Aproximadamente a las 11:57 la utilización de la CPU va del 25% al 75%. El promedio de carga no cambia significativamente.
Ejecutamos servidores con 12 núcleos con 2 hiperprocesos cada uno. El sistema operativo ve esto como 24 CPU.
Los datos de utilización de la CPU se recopilan ejecutando /usr/bin/mpstat 60 1
cada minuto. Los datos para la all
fila y la %usr
columna se muestran en el cuadro anterior. Estoy seguro de que esto muestra el promedio por datos de CPU, no la utilización "apilada". Si bien vemos un 75% de utilización en el gráfico, vemos un proceso que muestra el uso de aproximadamente 2000% de CPU "apilada" top
.
La cifra promedio de carga se toma de /proc/loadavg
cada minuto.
uname -a
da:
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
Linux dist es Red Hat Enterprise Linux Server release 6.3 (Santiago)
Ejecutamos un par de aplicaciones web Java bajo una carga bastante pesada en las máquinas, piense 100 solicitudes / s por máquina.
Si interpreto los datos de utilización de la CPU correctamente, cuando tenemos un 75% de utilización de la CPU, significa que nuestras CPU están ejecutando un proceso el 75% del tiempo, en promedio. Sin embargo, si nuestras CPU están ocupadas el 75% del tiempo, ¿no deberíamos ver un promedio de carga más alto? ¿Cómo podrían las CPU estar ocupadas al 75% mientras solo tenemos 2-4 trabajos en la cola de ejecución?
¿Estamos interpretando nuestros datos correctamente? ¿Qué puede causar este comportamiento?