Como adicto al rendimiento web, siempre estoy buscando formas de mejorar el rendimiento del sistema y acelerar las aplicaciones web. Y hoy compartiré con ustedes la magia del escalado de frecuencia de la CPU y una guía práctica para deshabilitar el escalado de frecuencia de la CPU para ejecutar su sistema a la máxima velocidad de la CPU.
Antes de entrar en cómo deshabilitar el escalado de frecuencia de la CPU, comprendamos qué es la aceleración de la CPU.
¿Qué es el escalado de frecuencia de CPU?
Desde Kernel v. 2.6.18 (CentOS) y 2.6.32 (Ubuntu), se introdujo una nueva característica llamada Escalado dinámico de frecuencia de CPU (también conocido como aceleración de CPU).
Esta escala de frecuencia de la CPU permite que un procesador se ejecute con una frecuencia inferior a la máxima permitida. Esto se hace solo para preservar el consumo de energía, pero la desventaja de esto es que no puede usar toda la velocidad de su CPU.
¿Cómo puedo saber a qué velocidad se ejecuta mi CPU?
Ejecute este comando, como se ve a continuación:
grep -E '^model name|^cpu MHz' /proc/cpuinfo
La salida debería ser similar a esta:
[[email protected]:~]grep -E '^model name|^cpu MHz' /proc/cpuinfo model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000
Como puede ver, la velocidad de la CPU original es de @ 3,40 Ghz, sin embargo, la velocidad de ejecución de la CPU en Mhz es de alrededor de 1600. La CPU funciona a la mitad de su velocidad total.
Esto también se puede lograr con un paquete de CPU genial llamado cpufrequtils / cpupoweruitls
Instalar cpupowerutils en CentOS/Debian
yum install cpupowerutils -y
Instalar cpupowerutils en Ubuntu/Debian
apt-get install cpufrequtils
Ahora ejecute este comando y le mostrará información sobre la velocidad mínima y máxima de su CPU, entre otros detalles:
cpupower frequency-info
El resultado esperado debería ser similar a este:
[[email protected]:~]cpupower frequency-info analyzing CPU 0: driver: intel_pstate CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: Cannot determine or is not supported. hardware limits: 1.60 GHz - 3.80 GHz available cpufreq governors: performance powersave current policy: frequency should be within 1.60 GHz and 3.80 GHz. The governor "powersave" may decide which speed to use within this range. current CPU frequency: 1.60 GHz (asserted by call to hardware) boost state support: Supported: yes Active: yes 3600 MHz max turbo 4 active cores 3700 MHz max turbo 3 active cores 3800 MHz max turbo 2 active cores 3800 MHz max turbo 1 active cores
Deshabilitar escalado de frecuencia de CPU en Linux (RedHat y Ubuntu)
Veamos cómo deshabilitar el escalado de frecuencia de la CPU en las plataformas Linux más populares.
Para usuarios de CentOS/RHEL
Cambiemos la frecuencia de la CPU a la velocidad máxima disponible con el siguiente comando:
cpupower frequency-set -g performance
Veamos si hay algún cambio en la velocidad de ejecución de la CPU nuevamente:
[[email protected]:~]grep -E '^model name|^cpu MHz' /proc/cpuinfo model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 3497.218 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 3392.296 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 3397.742 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 2283.578 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 3457.640 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 2133.234 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.257 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 3740.265 [[email protected]:~]
Como ve en el comando anterior, ahora la CPU está funcionando más alto que antes cuando se necesita.
Otra forma de hacerlo manualmente es ejecutar este comando que cambiará el controlador de la CPU del modo "bajo demanda" al modo "rendimiento" para todas sus CPU:
for CPUFREQ in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do [ -f $CPUFREQ ] || continue; echo -n performance > $CPUFREQ; done
Si su sistema está ejecutando cualquiera de los demonios que controlan la velocidad de la CPU, simplemente deténgalos para que su sistema funcione a la máxima velocidad de la CPU:cpuspeed, cpufreqd o powerd.
service cpuspeed stop
Para usuarios de Ubuntu/Debian
Edite este archivo y, si no existe, simplemente créelo:
nano -w /etc/default/cpufrequtils
Agregue la siguiente línea dentro:
GOVERNOR="performance"
Guarda presionando CTRL + X, luego presiona Y.
Siguiente paso:deshabilite el demonio ondemand para evitar perder sus cambios después de reiniciar el servidor, ejecute este comando:
update-rc.d ondemand disable
Eso es todo. Verifique su configuración nuevamente con este comando:
cpufreq-info
Conclusión
Ejecutar su CPU a toda velocidad realmente puede mejorar el rendimiento de sus aplicaciones. La mayoría de las CPU modernas ya tienen sistemas de enfriamiento de CPU realmente buenos, por lo que esto no debería ser un problema, sin embargo, asegúrese de que esto no cause un gran consumo de energía adicional o un sobrecalentamiento de la CPU. Como puede ver, puede deshabilitar fácilmente el escalado de frecuencia de la CPU para las distribuciones basadas en RedHat y Debian. Háganos saber si tiene algún problema o pregunta al respecto.
Lectura adicional:
- Escalado de frecuencia de CPU en Linux con cpufreq
- Documentos de escalado de frecuencia de CPU de ArchLinux
- Documentación de los gobernadores RedHat CPUFreq