Tienes un servidor con buen procesador? Deberías revisar esto

Imagen de Epe

Tema: 

Gracias al comentario del amigo Aland Laines, hoy probé y encontré que tenía unos servidores con bastante velocidad, que no estaban corriendo al máximo. Gracias a que el kernel le limitaba la velocidad del procesador mediante una técnica llamada ondemand.

ondemand es bueno para laptops por ejemplo, le baja la velocidad al procesador y por tanto se ahorra batería.

Los servidores normalmente les tengo bastante ocupados, por lo que eso de ondemand no le considero bueno para ellos. Yo apagaba el servicio cpuspeed y pensaba que con eso me bastaba. Sin embargo hoy leyendo este artículo me dí cuenta que no era así. Comparé y en efecto ví que tenía unos 4 equipos corriendo a mucho menos velocidad (la mitad aproximadamente). Así que hice lo que se indica en el artículo y listo, ya están con el procesador al máximo.

Para los que pasaron por clases de inglés pero necesitan tomar otras de OpenEnglish aquí les resumo:
Verifica si tu servidor está corriendo procesos del kernel de kondemand:
pgrep -lf ondemand
Si te sale en blanco, no te preocupes, tus procesadores no soportan cambio de frecuencia bajo demanda y ya puedes parar de leer pues no requerirás hacer nada.

Ahora: si te responde algo, es que tus procesadores soportan cambios de frecuencia bajo demanda. En este caso valida cuál es la velocidad reportada del procesador y cual es la que está corriendo.

Ejecutas:
grep -E '^model name|^cpu MHz' /proc/cpuinfo

Al amigo del post de ServerNoobs le salía así:

model name : Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz
cpu MHz : 1596.000
model name : Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz
cpu MHz : 1596.000

Como puedes ver en su ejemplo, el procesador corre hasta 2.4GHz, sin embargo está corriendo a 1.596.. casi 1GHz menos. Lo mejor es que yo noté que a pesar de meterle carga al procesador no cambiaba este valor, como que así se quedó.

Cómo le hizo el colega? Creó un script que puso en /etc/init.d/ondemand que contiene esto:

#! /bin/bash
#
# ondemand sets cpu govermor
#
# chkconfig: 2345 10 90
#
# description: Set the CPU Frequency Scaling governor to "performance"
#
### BEGIN INIT INFO
# Provides: $ondemand
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin

case "$1" in
start)
for CPUFREQ in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
do
[ -f $CPUFREQ ] || continue
echo -n performance > $CPUFREQ
done
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
;;
*)
echo "Usage: $0 start|stop" >&2
exit 3
;;
esac

y luego le dió derechos de ejecución y le arrancó:
chmod +x /etc/init.d/ondemand
chkconfig --add ondemand
/etc/init.d/ondemand start

Una vez le hagas esto, vuelve a verificar la velocidad a la que corre, al amigo de ServerNoobs le comenzó a reportar así:
# grep -E '^model name|^cpu MHz' /proc/cpuinfo
model name : Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz
cpu MHz : 2394.000
model name : Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz
cpu MHz : 2394.000

Te fijas? de 2.4Ghz está en 2.394GHz, algo bien cerca a lo reportado.. ahora sí le está sacando el jugo al servidor.

En verdad el ondemand se irá haciendo más y más útil cada vez, pero hace falta que funcione adecuadamente, que si el server demuestra requerir carga, se suba la velocidad y luego se baje cuando no tenga carga, pero al momento por alguna razón en mi caso no estaba subiendo automáticamente.

Comentarios

jumper a maxima velocidad

adicionando podria ser que algunas maquinas vienen con la opcion de jumper a maxima velocidad, talvez deberia verse esto tambien, o lo que es lo mismo cambio de frecuencia de REloJ.

Sí, definitivamente

Gracias por difundir esta información.

Definitivamente hay que revisar si tenemos por ahí capacidad instalada que no se está aprovechando.

Saludos cordiales.