Como reducir la temperatura de trabajo de nuestros portátiles

Los comandos mostrados en este artículo solo han sido probados en portátiles con CPU Intel, si tu equipo usa AMD algunos de ellos no funcionarán y otros puede que tengan resultados algo diferentes.

Portátiles mas delgados, significa portátiles con menos capacidad para disipar calor y portátiles mas potentes significa mayor cantidad de calor para disipar, si ponemos estos dos factores juntos obtenemos equipos que trabajan a temperaturas demasiado altas y que durarán mucho menos tiempo.

Imagina conducir tu coche sin cambiar de marcha hasta que el motor alcance sus Revoluciones Por Minuto máximas. Pues eso es lo que sucede con la CPU de nuestros portátiles.

Intel, en un intento de sacarle el máximo partido a sus procesadores, los especifican para funcionar a dos velocidades máximas.

  • Frecuencia base: La máxima frecuencia a la que el procesador puede funcionar por tiempo indefinido, dadas las condiciones de refrigeración adecuadas, sin sobre-calentarse y/o deteriorarse.
  • Frecuencia máxima: También llamada turbo o boost, es la frecuencia máxima a la que el Intel nos garantiza que podemos hacer trabajar nuestra CPU antes de que empiecen a producirse fallos que afecten a la estabilidad del equipo.

Por defecto, nuestro sistema usa parámetros como la temperatura de la CPU para decidir cual es la velocidad máxima a la que puede funcionar nuestro procesador en cada momento, he intentará que este siempre funcione a máxima velocidad posible. Lo que a su vez hará que también funcione a la mayor temperatura posible.

La solución es limitar la velocidad

Cuando usamos nuestros portátiles desconectados de la fuente de alimentación. El sistema «cambia de personalidad», ahora no interesa dar el máximo rendimiento, sino obtener la máxima autonomía de nuestra batería.

Para logar una autonomía decente, la velocidad de la CPU es limitada al mínimo posible, lo que reduce el consumo de la CPU, que a su vez reduce su temperatura y que, en consecuencia, reduce el tiempo que los ventiladores tienen que estar encendidos consumiendo nuestra preciada batería.

Si quieres sacar el máximo partido de la batería de tu portátil en GNU/Linux, puedes echar un vistazo a Slimbook Battery, un programa diseñado por SLIMBOOK para mejorar la autonomía de sus propios portátiles, pero que también puede llegar a funcionar en portátiles de otras marcas, siempre que sean basados en procesadores Intel.

Limitemos también cuando usamos la fuente de alimentación

Normalmente, no hay ninguna necesidad de tener nuestro portátil funcionando constantemente a máxima potencia. Por lo que se hace lógico limitar su velocidad también cuando está conectado a la fuente de alimentación.

Desactivar turbo boost

Lo primero que podemos hacer es desactivar el turbo boost, para que la CPU no exceda su frecuencia base en ningún momento. Si el kernel de tu distribución soporta Intel P-state, debería ser tan sencillo como ejecutar el siguiente comando en una terminal.

echo 1 | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo

Para volver a activar el el turbo boost, solo hay que cambiar el 1 por un 0:

echo 0 | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo

Configurar el esquema de rendimiento en modo ahorro de energía, sin instalar ningún software.

Otra opción es forzar a nuestro sistema para que se comporte como si se estuviera alimentado de la batería, lo que hará que intente mantener la frecuencia de nuestra CPU al mínimo posible.

Una forma de hacerlo es tecleando este comando en una terminal:

echo powersave | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

Para comprobar el esquema de rendimiento que estamos usando en este momento:

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor | sort -u

Para volver al esquema de máximo rendimiento:

echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

Y para listar los esquemas de rendimiento soportados:

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governors | sort -u

En mi experiencia, si desactivamos el turbo boost y cambiamos el esquema de rendimiento a powersave, la temperatura máxima (pico) de a CPU puede llegar a bajar hasta 20 C, respecto al esquema por defecto. Pero tu experiencia puede ser diferente.

Técnicas alternativas

Si no quieres tener que teclear esos comandos «raros» cada vez que quieras cambiar el modo de rendimiento de tu equipo, hay algunas alternativas algo más sencillas.

cpupower

Con cpupower podemos gestionar nuestra CPU de forma mas sencilla e incluso automatizar los parámetros que queremos usar cuando nuestro sistema arranca.

Instalación

En ArchLinux y derivados:

sudo pacman -S cpupower

En Debian y derivados

sudo apt install linux-cpupower

En Ubuntu y derivados

sudo apt install linux-tools-$(uname -r)

Uso manual

Primero debemos usar este comando para averiguar cuales son las velocidades aceptadas por nuestra CPU:

sudo cpupower frequency-info

Este comando nos dará un resultado como este, donde encontraremos la información que necesitamos:

sudo 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: 800 MHz – 4.50 GHz
available cpufreq governors: performance powersave

current policy: frequency should be within 800 MHz and 2.60 GHz.
The governor «powersave» may decide which speed to use
within this range.
current CPU frequency: Unable to call hardware
current CPU frequency: 809 MHz (asserted by call to kernel)
boost state support:
Supported: yes
Active: yes

Para limitar la frecuencia máxima de la CPU se puede hacer con este comando:

cpupower frequency-set -u 2600MHz

Para establecer la frecuencia mínima de la CPU se puede hacer con este comando:

cpupower frequency-set -d 800MHz

Recuerda cambiar los valores de frecuencia de los comandos anteriores por el valor que desees. Pero no elimines la unidad (MHz), de lo contrario no funcionará.

Configuración del demonio

La gran ventaja de cpupower es que provee de un servicio para systemd que podemos configurar para que arranque con el sistema y establezca los parámetros que queramos en el arranque, por lo que no tendremos que teclear ningún comando cada vez que encendamos el equipo.

Primero tenemos que configurar el servicio, para ello hay que editar el fichero /etc/default/cpupower, por ejemplo:

sudo nano /etc/default/cpupower

Luego eliminamos las almohadillas (#) de las siguientes líneas y ponemos los valores que deseemos usar, por ejemplo, mi configuración es la siguiente:

governor='powersave'

min_freq="800MHz"
max_freq="2.6GHz"

Dependiendo de tu CPU, los valores de frecuencia pueden ser diferentes.

Presta atención a las unidades usadas para establecer la frecuencia. El fichero suele incluir comentarios con detalles acerca de las unidades permitidas.

Y por último activamos y arrancamos el servicio para hacer los cambios efectivos y que estos se apliquen automáticamente cada vez que arranquemos el sistema.

sudo systemctl enable cpupower.service
sudo systemctl start cpupower.service

Si quieres desactivar el servicio de cpupower, puede hacerlo así:

sudo systemctl disable cpupower.service
sudo systemctl stop cpupower.service

Si has modificado el archivo de configuración y quieres que se apliquen los cambios inmediatamente, sin reiniciar:

sudo systemctl restart cpupower.service

cpupower-gui

Si usas ArchLinux y derivados, puedes instalar cpupower-gui desde los repositorios AUR y así tener una interfaz gráfica con la que cambiar la frecuencia de la CPU y el esquema de rendimiento sin necesidad de usar la terminal.

Si usas otra distribución Linux, tendrás que instalarlo manualmente siguiendo las instrucciones de su repositorio en GitHub.