Ahorro energético en sistemas GNU/Linux (parte 1)

energyDurante estos últimos años las compañías fabricantes de sistemas informáticos, bien de equipos de sobremesa o bien portátiles, han integrado todo tipo de mejoras en el hardware. Entre éstas destacamos los nuevos procesadores, memorias y discos, siendo todos ellos más rápidos y con mayor capacidad. Sin embargo, hay un retraso en el avance de la duración de las baterías frente al consumo requerido por estos nuevos elementos.

Sin salir de nuestra rutina diaria, en el mismo maletín o mochila donde llevamos nuestro portátil llevamos consigo el cargador, siendo éste último indispensable si queremos trabajar fuera de casa o de la oficina.

A continuación mostramos algunas ideas para alargar la carga de la batería de nuestros portátiles, así como ahorrar algunos costes de electricidad de nuestra casa u oficina.

Modos de suspensión e hibernación de sistemas Linux.

En Linux, la interfaz encargada de las tareas de suspensión e hibernación se denomina ACPI (Advanced Configuration and Power Interface). A su vez, dicha interfaz también está disponible bajo otros sistemas operativos como Windows y MacOs, donde nos permite entre otras tareas dormir nuestros portátiles y sobremesas de diferentes maneras:

  • S1 Sleeping State. En este estado, el contexto de trabajo se mantiene cargado estando la memoria y la CPU consumiendo energía aunque se detenga la ejecución de instrucciones. La latencia de recuperación es bastante pequeña, pero el consumo energético es similar al estado de encendido.
  • S2 Sleeping State. En este estado el contexto de trabajo es almacenado en RAM y la CPU es apagada.
  • S3 Sleeping State o lo que conocemos como Standby, donde la memoria se mantiene encendida. Este estado ofrece una pequeña latencia de recuperación ya que no se pierde el contexto de trabajo de la memoria. El ahorro energético es relativamente alto ya que la CPU es apagada.
  • S4 Sleeping State, llamado también Hibernación. Este estado ofrece mayor latencia que los anteriores estados (S1, S2, S3) a la hora de hacer el reboot (reiniciar), pero por el contrario ofrece menor consumo energético. Para lograr este bajo consumo, primeramente se guarda todo el contexto de trabajo a disco, y después la plataforma hardware apaga todos los dispositivos. Un completo arranque será necesario mediante la pulsación de alguna tecla del teclado, una configuración de reloj, arranque por red, etc.
  • S5. Soft Off State. Este estado es similar al S4, diferenciando que en S4 el contexto es guardado. El arranque de este estado es el mas costoso, pero el ahorro energético es el mayor de todos.

Dependiendo del tiempo de inactividad de un sistema nos interesará entrar en uno u otro estado, aunque los mas utilizados y soportados por el hardware y los sistemas operativos son los modos S3 y S4.

La implementación que nos ofrece GNU/Linux para que un usuario pueda entrar en algunos de estos modos es mediante su GUI en el menú apagado, o bien mediante consola ejecutando los siguientes comandos.

  • pm-suspend, que implementaría el estado S3 de ACPI
  • pm-hibernate, que implementaría el estado S4

ACPI además de gestionar los modos Sleeping de los sistemas también se encarga de tareas como DVFS (Dynamic Voltage and Frequency Scaling), basadas en reducir la frecuencia de reloj de la CPU cuando hay poca carga en el sistema. Este concepto lo presentaremos más adelante en otro artículo diferente.

Apagado de monitor

Los estados S* de ACPI anteriormente comentados son útiles siempre que no se necesite la utilización del procesador. En caso que necesitemos utilizarlo en segundo plano, como por ejemplo en los casos de compilar un software que tarde varias horas, descargar datos pesados por la red, etc, podemos apagar los dispositivos que no se usen, siendo el monitor el candidato perfecto.

Sin embargo, pueden darse casos donde nuestro equipo portátil no disponga de un botón de apagado de monitor, así sería especialmente útil disponer de un software que realizase esta opción. En distribuciones GNU/Linux (como Ubuntu, CentOS, etc.) tenemos el comando xset que realiza precisamente lo comentado.

xset no es una implementación que usa directamente los módulos y definiciones de ACPI, pero es usado como complemento para conseguir un mayor ahorro energético.

La forma de apagar el monitor sería:

xset dpms force off

Para encender el monitor simplemente será necesario mover el ratón o pulsar una tecla, además que xset también se encarga de encender el monitor si se ejecuta desde cron o algún script.

xset dpms force on

Es bastante útil disponer de un icono en el Escritorio que te apague el monitor, para ello, desde Gnome nos podemos crear un lanzador que apague nuestros monitores. El comando para crear el lanzador sería:

gnome-desktop-item-edit --create-new <ruta-escritorio>

y una vez creado, pasamos a configurarlo de la siguiente manera:

imagen-lanzador

Continuará… 😉