martes, 20 de septiembre de 2011

Aumentar duración de batería en Linux

Seguramente aquellos que dispongan de un ordenador portátil, en ocasiones habrán tenido que trabajar haciendo uso de la batería en lugares donde no se dispone de un enchufe donde conectar la fuente de alimentación del equipo. Por defecto el Kernel de Linux viene con un gestor de energía como ACPI o APM que intenta minimizar el consumo de energía mediante el escalado de frecuencia y otras otras funcionalidades, e incluso algunos fabricantes como sony, toshiba o apple, desarrollan módulos para intentar controlar todos estos aspectos, pero aún así el tiempo de duración de la batería en Linux suele ser bastante corto.
Para incrementar el tiempo de duración de las baterías de nuestros equipos portátiles podemos adoptar ciertas medidas para intentar que el consumo de energía sea inferior. A continuación os comento algunas sugerencias, programas y buenas prácticas con el que conseguiréis ahorrar batería en vuestro portátil usando linux.

Escalado de frecuencia

Las principales distribuciones de GNU/Linux activan por defecto en el kernel el soporte de gestión de energía y el escalado de frecuencias para la CPU. El escalado de frecuencias consiste en una serie de directivas o “governors” que ajustan la frecuencia de la(s) CPU(s)en función a nuestras necesidades. Lo más común es que la directiva que esté activada sea “ondemand”, que traducido al castellana viene a decir “bajo demanda”. Es decir, la frecuencia de la CPU se adecuará según el uso de la CPU que estemos haciendo, en momentos de bajo uso la frecuencia descenderá al mínimo posible y en momentos de alto uso la frecuencia aumentará al máximo posible.
Para comprobar que directiva está seleccionada para una determinada CPU podemos examinar el contenido del fichero:
1
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Una buena práctica para aumentar la duración de nuestra batería sería cambiar la directiva de escalado de frecuencia a “powersave”, en donde la frecuencia de la(s) CPU(s) será la mínima posible mientra esta directiva esté en uso. Esto podemos hacerlo de dos formas:
  • Editar el fichero que indiqué anteriormente y sustituir su contenido por: powersave
    1
    echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
  • Utilizar el comando cpufreq-selector para seleccionar la cpu deseada y la directiva a utilizar
    1
    sudo cpufreq-selector -c 0 -g powersave
Si miráis la ayuda del comando (con la opción –help) podéis ver que la opción -c sirve para especificar sobre que CPU vamos a realizar modificaciones. Naturalmente si disponemos de un procesador con más de un núcleo deberemos especificar la directiva a utilizar para cada uno de ellos.

Power Save Mode en módulos Wi-Fi

Como ya habréis oído los dispositivos Wireless consumen bastante energía al tener que estar continuamente emitiendo y captando señales en unas determinadas frecuencias. En mi caso el módulo ipw3945 incluye un modo de ahorro de energía que podemos controlar con el siguiente comando:
1
sudo iwpriv eth1 set_power 5
Debemos especificar la interfaz y el nivel de ahorro de energía que queremos activar. A través de la web del proyecto powertop podemos observar los siguientes datos que nos muestra por ejemplo el tiempo de retardo en producirse una llamada al sistema para despertase (wakeup):
1
2
Power save level: 5 (Timeout 25ms, Period 1000ms)
Power save level: 1 (Timeout 350ms, Period 400ms)
De esta forma estaremos ahorrando energía, eso sí, como consecuencia obtendremos un decremento en el rendimiento.

La utilidad powertop

La herramienta powertop es una aplicación liberada por Intel que permite ver cuales son los principales eventos del sistema que influyen en el consumo de energía en base a interrupciones del sistema. Además también muestra una serie de estadísticas acerca del tiempo en el que las distintas CPU’s están funcionando en las frecuencias permitidas por el procesador.
El programa podéis descargarlo e instalarlo mediante los sistemas de paquetes de las principales distribuciones GNU/Linux o bajarlo y compilarlo desde la Web del proyecto. Para ejecutarlo tan solo tendremos que poner en pantalla:
1
sudo powertop
Una vez ejecutad, en intervalos de 5 a 10 segundos, el programa recopila los datos oportunos del sistema para mostrarnos las estadísticas que he comentado anteriormente. Pero lo más interesante es que nos mostrará una serie de advertencias, siempre y cuando sean necesarias, para incrementar el tiempo de vida de nuestra batería y nos dará la opción de pulsar una simple tecla para realizar dicha acción. Os dejo un par de capturas del programa en cuestión.
Powertop - 1Powertop - 2

Salvapantallas

Si tenemos algún tipo de salvapantallas en nuestro equipo este puede hacer que se consuma mucha energía, sobre todo si es alguno en el que se haga uso de 3D y por lo tanto de la GPU. Una alternativa a la que podemos optar para el ahorro de energía, es apagar la pantalla completamente, y esto se suele conseguir mediante la tecnología DPMS de las X. Para controlar el tiempo que tendrá que transcurrir de inactividad para que se oscurezca la pantalla utilizaremos la siguiente línea de comandos:
1
xset dpms 0 0 30
En donde especificamos que después de 30 segundos de inactividad se apague completamente la pantalla.

Gestión de energía de discos duros

Muchos de los discos duros actuales tienen un soporte de gestión de la energía. Mediante el programa hdparm podemos establecer diferentes configuraciones en estos. Este programa tiene una gran cantidad de parámetros para utilizar por lo que para un estudio completo de la herramienta tendréis que acudir a sus “man pages”. Para lo que nos interesa, que es intentar ahorrar el máximo de energía podríamos escribir la siguiente línea:
1
hdparm -B 1 -S 12 /dev/sda
Donde le indicamos a nuestro disco duro SATA que pase al modo de ahorro de energía más agresivo y que se ponga en “standby” a los 60 segundos (se especifica en múltiplos de 5 segundos: 5*12=60).

Otras consideraciones

A parte de estos indicios también hay que aplicar la lógica común para conseguir ahorrar unos Watios :P . Siempre es buena idea tener fondos y temas de escritorio oscuros, ya que la pantalla es una de las fuentes principales de consumo de energía de la batería. Mientras más claros sean los colores mostrados en pantalla más energía consumirá el portátil (si tenemos en cuenta el modelo de color RGB, el blanco es [255,255,255] mientras que el negro es [0,0,0]).
Otra cosa que no todos hacen es desconectar el dispositivo Wifi si no lo vamos a utilizar. No todos los portátiles nos dan esta oportunidad pero si la tenemos hay que aprovecharla.

Resultados obtenidos

En mi caso he conseguido reducir el uso de energía de casi 30W a 15.4W, y en los momentos donde la pantalla se apaga pasa a consumir en torno a los 10W. Ahora la duración de la batería ha pasado de 2 horas y 15 minutos aproximadamente a 3 horas y media, dependiendo del uso que haga del sistema. Como podréis observar la mejora es más que notable.
Espero que si alguien tiene más datos que aportar en el asunto los comparta conmigo y actualizaré la entrada encantado ;) .Podéis encontrar mucha información acerca del tema en el siguiente enlace (en inglés).

Fuente: http://plagatux.es/2008/03/aumentar-duracion-de-bateria-en-linux/

No hay comentarios:

Publicar un comentario