Para aumentar la duración de la batería de nuestro portátil, podemos realizar algunas acciones; entre ellas tenemos la posibilidad de instalar TLP, que nos permite ahorrar batería en Linux mediante una mejor gestión de la energía, tal y como comenté en el artículo “Mejora la gestión de energía en Ubuntu con TLP”.
En este artículo quiero entrar mas en profundidad, describiendo las posibilidades que tiene esta herramienta y particularizándolo para mi equipo como ejemplo.
Recordar que TLP no reemplaza el sistema de gestión de energía de Linux, sino que lo mejora, aplicando la configuración en cada ocasión que iniciamos nuestro equipo, y cada vez que cambiamos la fuente de alimentación, lo cual veremos con mas detalle durante la configuración de la aplicación.
Aumentar la duración de la batería configurando TLP
Para seguir los pasos de este artículo y conseguir aumentar la duración de la batería, el primer paso es instalar esta herramienta. Para ello, y tal y como he comentado en la introducción, te recomiendo que leas el artículo “Mejora la gestión de energía en Ubuntu con TLP”.
Una vez instalada la aplicación siguiendo los pasos indicados en el artículo, lo siguiente es adentrarnos en las posibilidades de configuración.
La configuración debemos hacerla editando el archivo /etc/default/tlp; para ello, ejecuta la siguiente orden en un emulador de terminal,
gksudo gedit /etc/default/tlp
Una vez realizados los cambios, estos se aplicarán cuando reiniciemos el equipo, si cambiamos la fuente de energía o si ejecutamos la orden,
sudo tlp start
NOTA: es importante que leas con detenimiento la información del desarrollador de TLP antes de hacer cualquier cambio, y que entiendas lo que estás haciendo.
La configuración
A continuación podrás leer diferentes opciones con los que aumentar la duración de la batería, clasificados en diferentes apartados. Como reglas generales, indicar lo siguiente:
- Los parámetros que terminan en _AC son efectivos cuando nuestro equipo está conectado a la corriente eléctrica.
- Los parámetros que terminan en _BAT, por contra, son efectivos cuando nuestro equipo se alimenta de batería.
- Aquellos parámetros que contienen espacios en blanco deberán estar encerrados en dobles comillas.
- Algunos parámetros no están activados por defecto, para activarlos hay que eliminar la almohadilla, #, que se encuentra al comienzo de la línea.
Ahora vamos a ir viendo los diferentes parámetros que definen el funcionamiento de la aplicación.
Parámetros generales
- TLP_ENABLE=1. Habilita TLP. Si lo asignamos el valor 0 deshabilitamos TLP, pero necesitaremos reinicar nuestro equipo.
- TLP_DEFAULT_MODE=AC. Define el modo de funcionamiento en caso de que no se conozca la fuente de alimentación.
Sistema de archivo
- DISK_IDLE_SECS_ON_AC=0.
- DISK_IDLE_SECS_ON_BAT=2.
Los valores mayores que cero activan el kernel laptop mode. Estos parámetros no hay que modificarlos.
- MAX_LOST_WORK_SECS_ON_AC=15.
- MAX_LOST_WORK_SECS_ON_BAT=60.
Representa el tiempo máximo en segundos para escribir la información que no se ha guardado y que se encuentra en el buffer del sistema. Estos valores tampoco es necesario cambiarlos.
Como puedes observar el tiempo es superior en el caso de batería para reducir las escrituras.
Escalado de frecuencia del procesador
Evidentemente, cuanto menos consuma el procesador mas podremos aumentar la duración de la batería de nuestro portátil.
- CPU_SCALING_GOVERNOR_ON_AC=ondemand
- CPU_SCALING_GOVERNOR_ON_BAT=powersave
Los valores posibles que pueden tomar estos paármetros son los siguientes,
- ondemand
- powersave
- performance
- conservative
Los siguientes parámetros nos permiten habilitar o desahabilitar los modos turbo para Intel y AMD. Eso si, solo para Linux 3.7 y versiones superiores.
- CPU_BOOST_ON_AC=1
- CPU_BOOST_ON_BAT=0
Para minimizar el uso de los núcleos en condiciones de baja carga, los parámetros son los siguientes,
- SCHED_POWERSAVE_ON_AC=0.
- SCHED_POWERSAVE_ON_BAT=1.
Otra opción disponible es la siguiente, que nos permite elegir entre políticas de ahorro de energía o de desempeño de la máquina.
Esta opción requiere que el módulo msr esté cargado en el kernel y que además esté disponible la herramienta * x86_energy_perf_policy*. Esto nos permite definir tres políticas:
- performance. Esta primera opción premia la política de rendimiento frente a la de ahorro de energía, de forma que el procesador antepondrá cualquier tarea al ahorro de energía, y es el valor por defecto.
- normal. Esta opción establece un equilibrio entre rendimiento y eficiencia energética, es decir, se permite menor rendimiento siempre y cuando se obtengan ahorros de energía significativos. Este funcionamiento es el mas razonable para la mayoría de equipos de sobremesa y servidores.
- powersave. Con esta opción se premia maximizar la eficiencia energética frente al rendimento del procesador.
- ENERGY_PERF_POLICY_ON_AC=performance
- ENERGY_PERF_POLICY_ON_BAT=powersave
Para saber si tu kernel tiene cargado el módulo msr, puedes crear el siguiente script is_module_loaded:
#!/bin/sh
MODULE="$1"
if lsmod | grep "$MODULE" &> /dev/null ; then
echo "$MODULE is loaded!"
else
echo "$MODULE is not loaded!"
fi
Una vez creado, le das permiso de ejecución y lo ejecutas,
chmod +x is_module_loaded
is_module_loaded msr
Para saber si x86_energy_perf_policy está instalado puedes ejecutar la siguiente orden,
if [ -x "$(command -v x86_energy_perf_policy)" ]; then echo "Existe"; else echo "No existe"; fi
Discos y controladores
Otro elemento que consume energía son los discos. Modificando el comportamiento de estos, se puede aumentar la duración de la batería en Ubuntu y Linux Mint.
Asignar dispositivos
Lo primero es definir los discos que tenemos y queremos que TLP gestione. Por defecto, TLP tiene asignado sda y sdb. Cuando tienes varios discos, estos irán separados por un espacio en blanco, tal y como puedes ver en la siguiente línea:
DISK_DEVICES="sda sdb"
Ahora bien, en lugar de definirlo así, es mejor definirlos mediante su ID. Para averiguar la ID de nuestras unidades, solo tenemos que ejecutar la orden,
tlp diskid
Que por ejemplo en mi caso, con un solo disco, arroja el siguiente resultado,
sda: ata-SAMSUNG_SSD_PM851_M.2_2280_256GB_S1D3NSAG530486
Así, para indicarlo en la configuración de TLP, modificaríamos la línea correspondiente, dejandolo tal y como figura a continuación,
DISK_DEVICES="ata-SAMSUNG_SSD_PM851_M.2_2280_256GB_S1D3NSAG530486"
De nuevo, si tienes dos unidades, estas irán separadas por un espacio, tal y como figura en el siguiente ejemplo,
DISK_DEVICES="ata-INTEL_SSDSA2M160G2GC_XZY123456890 ata-HITACHI_HTS541612J9SA00_XZY123456890"
Gestión avanzada de energía
Para configurar el nivel de de energía en los discos, se definen dos parámetros cuyos valores varían entre 1 y 255. Estos parámetros son,
- DISK_APM_LEVEL_ON_AC=”254”
- DISK_APM_LEVEL_ON_BAT=”128”
Algunos valores son los siguientes,
- 1. Máximo ahorro de energía y mínimo rendimiento. Esta configuración puede provocar el desgaste del cabezal en algunos discos duros.
- 128. Equilibrio entre el ahorro de energía y el rendimiento. Es el valor por defecto para el caso en el que el equipo se alimenta de la propia batería.
- 192. Previene el desgaste de los discos duros.
- 254. Mínimo ahorro de energía y máximo rendimiento. Es el valor por defecto para el caso en el que el equipo está conectado a la corriente eléctrica.
- 255. Deshabilita la gestión avanzada de energía, aunque este valor no lo admiten todos los tipos de discos.
- keep. Se trata de un valor especial para no definir el parámetro para un disco en particular.
Si tienes varios discos puedes definir un valor para cada uno de ellos separados por espacios.
Tiempo de espera
Otro parámetro que podemos configurar es el tiempo de espera hasta que el motor se detiene cuando no se hace uso del disco, es decir, el tiempo desde que el disco está inactivo hasta que el motor se detiene. Los valores admitidos por estos parámetros son,
- 0. Deshabilitado.
- 1..240. Tiempo entre 5 y 20 minutos en incrementos de 5 segundos.
- 241..251. Tiempo entre 30 minutos y 5.5 horas en incrementos de 30 minutos
- keep. No tiene en cuenta la configuración para un disco en particular.
Si tienes varios discos los valores para cada uno de ellos los defines separados por espacios.
Los SSD, al no tener partes móviles no tienen en cuenta este parámetro. Así, en mi caso particular,
- DISK_SPINDOWN_TIMEOUT_ON_AC=”0”
- DISK_SPINDOWN_TIMEOUT_ON_BAT=”0”
Probando la nueva configuración del sistema, donde se actualiza solo cuando paras de escribir, lo cual aparentemente es mucho mejor, aunque no lo tengo muy claro, porque esto despista un poco.
A ver como funciona durante unos días y en función de eso comenzaré a actualizar.
Planificación de peticiones de lectura y escritura en disco
Con esto definimos como el sistema operativo se comportará ante las peticiones de lectura y escritura en disco. Al igual que en casos anteriores, si tenemos varios discos, debemos definir el comportamiento para cada uno de ellos separados por un espacio.
Los valores posibles son los siguientes,
- cfq. Funciona correctamente tanto con discos duros convencionales como con SSD.
- deadline. Para núcleos nuevos. Funciona correctamente tanto con discos duros convencionales como con SSD.
- noop.
- bfq. Es un sistema de planificación propuesto recientemente, pero necesita un núcleo configurado especialmente para ello.
- keep. Usará el valor que el núcleo tenga configurado por defecto.
En mi caso, y dado que solo tengo un disco, la configuración será,
DISK_IOSCHED="deadline"
Conclusiones
En este artículo has podido leer como configurar TLP para aumentar la duración de la batería en Ubuntu y Linux Mint. Hay muchos otros parámetros que te permitirán modificar con mas detalle TLP, pero sobre todo, te recomiendo que leas la información del desarrollador, para que no cometas un error del que puedas arrepentirte.
Más información,