Aumentando la duración de la batería en GNU/Linux con PowerTOP

PUBLISHED ON DEC 22, 2013 — BLOG

En los últimos años, gracias a las nuevas generaciones de procesadores optimizados para portátiles y a la proliferación de discos de estado sólido, hemos visto cómo aparecían ultrabooks cuya autonomía supera con holgura las 5 horas. Por otra parte, a mayor duración de la batería, mayor impacto en la misma tiene la configuración y el comportamiento del software.

Por fortuna, en GNU/Linux disponemos de PowerTOP, una herramienta desarrollada por ingenieros de Intel, que nos ofrece información detallada sobre la distribución del consumo energético, y una serie de recomendaciones para reducirlo.

Usando PowerTOP: ¿Qué procesos despiertan la CPU?

Desde hace varios años, los procesadores x86 ofrecen al sistema operativo la posibilidad de minimizar el consumo energético reduciendo la frecuencia del reloj (Dynamic frequency scaling), o incluso apagándolos parcialmente (saltando entre C-States). Lógicamente, el S.O. sólo puede hacer uso de estas funcionalidades cuando no hay ningún proceso reclamando ser planificado.

powertop1

En esta línea, la primera pantalla de PowerTOP nos muestra información sobre los eventos que “despiertan” la CPU y el origen de los mismos. Conviene que revisemos la parte alta de dicha lista, en busca de algún proceso que no debiera estar allí. Puede sonar extraño, pero dependiendo del escritorio y la distribución que estemos empleando, nos podemos encontrar con un gestor de ventanas que no para de lanzar eventos, o con alguna aplicación de sincronización en la nube que está “demasiado activa”.

Usando PowerTOP: Opciones recomendadas

Una funcionalidad especialmente útil de PowerTOP, es la que nos muestra una lista de configuraciones recomendadas para el S.O. que no tenemos activas, y nos indica el comando que debemos ejecutar para reestablecerlas.

powertop2

Es posible activar dichas opciones pulsando enter sobre ellas, pero dicha configuración no es permanente, y ser perderá tras un reinicio. Una forma sencilla de extraer los comandos para cargarlos en el rc.local (o el equivalente que use nuestra distro), sería algo así:

[shell] slp@linux-18od:/tmp> # Generamos un informe en CSV con PowerTOP slp@linux-18od:/tmp> sudo powertop –csv Cargado 260 medidas previas RAPL device for cpu 0 RAPL device for cpu 0 RAPL device for cpu 0 Preparing to take measurements Taking 1 measurement(s) for a duration of 20 second(s) each. PowerTOP outputing using base filename powertop.csv slp@linux-18od:/tmp> # Editamos el fichero powertop.csv, y eliminamos todo menos en la sección “Software Settings in need of Tuning” slp@linux-18od:/tmp> vi powertop.csv slp@linux-18od:/tmp> # Preparamos un pequeño script para extraer la parte que nos interesa: slp@linux-18od:/tmp> cat > pmtun.py << EOF import re

file = open(“powertop.csv”, “r”) lines = file.readlines() for l in lines: m = re.match(“.?;(.)“, l) if m: print m.group(1).replace(”\“”,“”).replace(“;”,“”) EOF slp@linux-18od:/tmp> # Y hacemos uso de él slp@linux-18od:/tmp> python pmtun.py > commands slp@linux-18od:/tmp> # Finalmente, revisamos el fichero y hacemos copypaste a nuestro rc.local slp@linux-18od:/tmp> vi commands [/shell]

Tras reiniciar, al volver a la misma pantalla de PowerTOP, deberíamos ver cómo todas las configuraciones parecen como ya establecidas:

powertop3