16.5. El paquete powersave

El paquete powersave se ocupa de la función de ahorro de energía cuando un portátil funciona en el modo de batería. No obstante, algunas de sus funciones resultan también muy interesantes para estaciones de trabajo o servidores, como por ejemplo el modo suspend/standby, la función de las teclas ACPI y la activación o desactivación automática de discos duros IDE.

Este paquete incorpora todas las funciones de gestión de energía del ordenador y soporta cualquier hardware que utilice ACPI, APM, discos IDE y las tecnologías PowerNow! o SpeedStep. powersave agrupa todas las prestaciones de los paquetes apmd, acpid, ospmd y cpufreqd (actualmente cpuspeed). Los daemons de estos paquetes no deben ejecutarse de forma paralela al daemon de powersave.

Incluso aunque el sistema no disponga de todos los componentes de hardware mencionados arriba (APM y ACPI se excluyen mutuamente), se recomienda utilizar el daemon de powersave para regular la función de ahorro de energía. Este daemon detecta automáticamente cualquier cambio en la configuración del hardware.

[Important]Información sobre powersave

Puede obtener información adicional sobre el paquete powersave en /usr/share/doc/packages/powersave.

16.5.1. Configuración del paquete powersave

En general, la configuración de powersave está distribuida en varios archivos:

/etc/sysconfig/powersave/common

Este archivo contiene opciones de configuración general para el daemon de powersave. Aquí se puede definir, por ejemplo, la cantidad de mensajes de depuración (en /var/log/messages) a través del valor asignado a la variable POWERSAVE_DEBUG.

/etc/sysconfig/powersave/events

El daemon de powersave requiere este archivo para procesar los sucesos (events) que se producen en el sistema. A estos sucesos se les puede asignar acciones externas o internas (ejecutadas por el daemon). Se habla de una acción externa cuando el daemon intenta activar un archivo ejecutable guardado en /usr/lib/powersave/scripts/. En cuanto a las acciones internas predefinidas, son las siguientes:

  • ignore

  • throttle

  • dethrottle

  • suspend_to_disk

  • suspend_to_ram

  • standby

  • do_suspend_to_disk

  • do_suspend_to_ram

  • do_standby

throttle ralentiza el procesador en la medida definida en POWERSAVE_MAX_THROTTLING. El valor asignado a esta variable depende del perfil usado en ese momento. dethrottle hace que el procesador recupere su máxima potencia. suspend_to_disk, suspend_to_ram y standby provocan el evento del sistema para el modo sleep. Las tres últimas acciones se ocupan en general de desencadenar el modo sleep, pero siempre deben asignarse a eventos del sistema concretos.

Los scripts para ejecutar los eventos se encuentran en el directorio /usr/lib/powersave/scripts:

notify

Notificación por medio de la consola, X Window o una señal acústica de que se ha producido un evento.

screen_saver

Activa el salvapantallas.

switch_vt

Muy útil si la imagen está distorsionada tras un suspend/standby.

wm_logout

Guardar la configuración y cerrar la sesión de GNOME, KDE u otro gestor de ventanas.

wm_shutdown

Guardar la configuración de GNOME o KDE y apagar el sistema.

Si por ejemplo se han asignado los siguientes valores a la variable POWERSAVE_EVENT_GLOBAL_SUSPEND2DISK="prepare_suspend_to_disk do_suspend_to_disk", tan pronto como el usuario dé a powersaved la orden para el modo Suspend to disk, se ejecutarán los scripts o acciones especificados en el mismo orden en el que aparecen. El daemon inicia el script externo /usr/lib/powersave/scripts/prepare_suspend_to_disk y, una vez que este se ha ejecutado correctamente, realiza la acción interna do_suspend_to_disk. Esto significa que el daemon pone al ordenador definitivamente en modo sleep después de que el script haya descargado los módulos y detenido los servicios críticos.

A continuación un ejemplo de una acción modificada para el hecho de pulsar un botón sleep: POWERSAVE_EVENT_BUTTON_SLEEP="notify suspend_to_disk". En este caso se informa al usuario sobre el suspend mediante el script externo notify. A continuación se produce el evento POWERSAVE_EVENT_GLOBAL_SUSPEND2DISK que origina las acciones mencionadas arriba y garantiza que el sistema pase al modo suspend.

El script notify puede personalizarse por medio de la variable POWERSAVE_NOTIFY_METHOD en el archivo /etc/sysconfig/powersave/common.

/etc/sysconfig/powersave/cpufreq

Este archivo contiene variables para optimizar el ajuste dinámico de la frecuencia de la CPU.

/etc/sysconfig/powersave/battery

En él se definen los límites de las baterías y otras opciones de configuración específicas de la batería.

/etc/sysconfig/powersave/sleep

En este archivo puede definir qué módulos deben descargarse y qué servicios detenerse antes de pasar al modo sleep. Estos módulos y archivos serán cargados e iniciados de nuevo cuando el sistema se restablezca. El archivo le permite también retrasar un modo sleep desencadenado para, por ejemplo, poder guardar archivos modificados. Las opciones predeterminadas afectan sobre todo a los módulos USB y PCMCIA. Si el cambio a los modos suspend o standby falla, la causa suele estar en ciertos módulos concretos. En la Sección 16.5.4, “Posibles problemas y sus soluciones” puede encontrar información adicional sobre cómo aislar e identificar el error.

/etc/sysconfig/powersave/thermal

Aquí se activa el control para el ajuste del calor y la refrigeración. Puede obtener información adicional sobre este tema en el archivo /usr/share/doc/packages/powersave/README.thermal.

/etc/sysconfig/powersave/scheme_*

Este archivo contiene los esquemas o perfiles que regulan el ajuste del consumo de energía en función de los distintos escenarios de aplicación. Algunos de estos perfiles están ya preconfigurados y pueden utilizarse sin más. Aquí también puede almacenar perfiles personalizados.

16.5.2. Configuración de APM y ACPI

16.5.2.1. Suspend y Standby

Los modos sleep están desactivados por defecto ya que todavía fallan en algunos ordenadores. Básicamente existen tres modos sleep ACPI y dos APM:

Suspend to Disk (ACPI S4, APM suspend)

Guarda el contenido de la memoria en el disco duro. El ordenador se apaga completamente y no consume electricidad.

Suspend to RAM (ACPI S3, APM suspend)

Guarda los estados de todos los dispositivos en la memoria principal. Sólo la memoria principal consume electricidad.

Standby (ACPI S1, APM standby)

Apaga algunos dispositivos en función del fabricante.

Asegúrese que las siguientes opciones predeterminadas están definidas correctamente en el archivo /etc/sysconfig/powersave/events para que los modos suspend/standby o resume puedan procesarse adecuadamente (los valores son los predeterminados tras la instalación de SUSE LINUX):

POWERSAVE_EVENT_GLOBAL_SUSPEND2DISK=
    "prepare_suspend_to_disk do_suspend_to_disk"
POWERSAVE_EVENT_GLOBAL_SUSPEND2RAM=
    "prepare_suspend_to_ram do_suspend_to_ram"
POWERSAVE_EVENT_GLOBAL_STANDBY=
    "prepare_standby do_standby"
POWERSAVE_EVENT_GLOBAL_RESUME_SUSPEND2DISK=
    "restore_after_suspend_to_disk"
POWERSAVE_EVENT_GLOBAL_RESUME_SUSPEND2RAM=
    "restore_after_suspend_to_ram"
POWERSAVE_EVENT_GLOBAL_RESUME_STANDBY=
    "restore_after_standby"

16.5.2.2. Estados de la batería definidos por el usuario

En el archivo /etc/sysconfig/powersave/battery puede definir tres estados de carga de la batería (expresados en forma de porcentaje). Cuando se alcanzan dichos estados, el sistema avisa al usuario o lleva a cabo una acción determinada.

POWERSAVED_BATTERY_WARNING=20
POWERSAVED_BATTERY_LOW=10
POWERSAVED_BATTERY_CRITICAL=5

En el archivo de configuración /etc/sysconfig/powersave/events se definen las acciones/scripts que han de ejecutarse cuando se rebasa un determinado nivel de carga. En la Sección 16.5.1, “Configuración del paquete powersave” se describe cómo cambiar las acciones predeterminadas para los botones.

POWERSAVE_EVENT_BATTERY_NORMAL="ignore"
POWERSAVE_EVENT_BATTERY_WARNING="notify"
POWERSAVE_EVENT_BATTERY_LOW="notify"
POWERSAVE_EVENT_BATTERY_CRITICAL="wm_shutdown"

16.5.2.3. Ajuste del consumo de energía en función de las condiciones de trabajo

Es posible hacer que el funcionamiento del sistema dependa directamente de la forma de suministro de energía. Así por ejemplo, el consumo de energía puede reducirse al utilizar el sistema con baterías y, a la inversa, el rendimiento del sistema puede aumentar de manera automática en cuanto se conecte de nuevo a la red de suministro eléctrico. Entre los parámetros sobre los que se puede influir directamente cabe destacar la frecuencia de la CPU y la función de ahorro de energía de los discos IDE.

Tal y como se define en el archivo /etc/sysconfig/powersave/events, el script powersave_proxy se encarga de ejecutar determinadas acciones al conectar/desconectar el ordenador a la red eléctrica. En /etc/sysconfig/powersave/common puede definir los escenarios (denominados “perfiles” o “schemes”) que deben utilizarse:

POWERSAVE_AC_SCHEME="performance"
POWERSAVE_BATTERY_SCHEME="powersave"

Los perfiles se almacenan en diversos archivos del directorio /etc/sysconfig/powersave. Su nombre está formado por scheme_<nombre_perfil>. En el ejemplo se hace referencia a dos perfiles: scheme_performance y scheme_powersave. Los perfiles performance, powersave, presentation y acoustic están ya preconfigurados. El módulo de gestión de energía de YaST (véase la Sección 16.6, “El módulo de gestión de energía de YaST”) le permite editar o borrar perfiles ya existentes, crear nuevos perfiles o modificar la correspondencia entre los perfiles y las formas de suministro de energía.

16.5.3. Prestaciones adicionales de ACPI

En caso de que utilice ACPI, puede controlar la reacción del sistema a las teclas ACPI (power, sleep, cubierta abierta o cubierta cerrada). En el archivo /etc/sysconfig/powersave/events se define la ejecución de las acciones correspondientes. Puede obtener información adicional sobre cada una de las opciones posibles en este archivo de configuración.

POWERSAVE_EVENT_BUTTON_POWER="wm_shutdown"

Al pulsar la tecla power, el sistema apaga el gestor de ventanas correspondiente (KDE, GNOME, fvwm...).

POWERSAVE_EVENT_BUTTON_SLEEP="suspend_to_disk"

Si se pulsa la tecla sleep, el sistema pasa a modo suspend-to-disk.

POWERSAVE_EVENT_BUTTON_LID_OPEN="ignore"

La apertura de la tapa del portátil no provoca ninguna reacción.

POWERSAVE_EVENT_BUTTON_LID_CLOSED="screen_saver"

Al cerrar la tapa del portátil se activa el salvapantallas.

Si el uso del procesador no sobrepasa un nivel determinado durante un periodo de tiempo definido, puede reducir todavía más su potencia. Para ello, defina en POWERSAVED_CPU_LOW_LIMIT el nivel de uso que el procesador no debe rebasar durante un periodo de tiempo determinado (que puede especificar en POWERSAVED_CPU_IDLE_TIMEOUT) para que se reduzca la potencia de la CPU.

16.5.4. Posibles problemas y sus soluciones

Todos los mensajes de error y avisos del sistema se recogen en el archivo /var/log/messages. Si a primera vista tampoco encuentra aquí la causa del problema, asigne el valor 7 o incluso 15 a la variable DEBUG en el archivo /etc/sysconfig/powersave/common y reinicie el daemon para que los mensajes de powersave sean más extensos e informativos. Al hacerlo, los mensajes de error en /var/log/messages serán algo más detallados, lo que le ayudará a identificar el problema. La sección siguiente cubre los problemas más frecuentes que pueden aparecer en relación con powersave.

16.5.4.1. A pesar de estar activado y con soporte de hardware, ACPI no funciona

Si surgen problemas con ACPI, utilice el comando dmesg|grep -i acpi para buscar los mensajes relacionados con ACPI en la salida de dmesg.

Para solucionar el error puede ser necesario actualizar la BIOS. Con este fin visite la página web del fabricante del portátil, busque una versión actual de la BIOS e instálela. Informe al fabricante de su sistema de que debe observar la especificación actual de ACPI.

Si el fallo sigue ocurriendo después de actualizar la BIOS, busque en las siguientes páginas web un DSDT más actual para sustituir la tabla DSDT de su sistema, la cual parece estar defectuosa:

  1. Descargue de http://acpi.sourceforge.net/dsdt/tables un DSDT adecuado para su sistema y asegúrese de que el archivo está descomprimido y compilado (lo reconocerá por la extensión .aml, ACPI Machine Language, del archivo). Si este es el caso, pase al punto 3.

  2. Si la extensión del archivo descargado es .asl (ACPI Source Language), debe compilarlo con la herramienta iasl incluida en el paquete pmtools. Para ello ejecute el comando iasl -sa <nombre_archivo>.asl. La versión más actual de iasl (Intel ACPI Compiler) está disponible en http://developer.intel.com/technology/iapc/acpi/downloads.htm.

  3. Copie el archivo DSDT.aml a su sistema (por ejemplo a /etc/DSDT.aml). A continuación edite /etc/sysconfig/kernel y modifique la ruta del archivo DSDT en caso necesario. Inicie mkinitrd (paquete mkinitrd). Cuando desinstale el kernel y utilice mkinitrd para crear un initrd, el nuevo DSDT será integrado y cargado durante el arranque.

16.5.4.2. CPU Frequency no funciona

Compruebe por medio de las fuentes del kernel (paquete kernel-source) si el procesador está soportado y si debe utilizar un módulo del kernel u opción de módulo específicos para activar la frecuencia de la CPU. Esta información está disponible en /usr/src/linux/Documentation/cpu-freq/*. En caso de que sea necesario emplear un módulo u opción determinados, configúrelo en las variables CPUFREQD_MODULE y CPUFREQD_MODULE_OPTS del archivo /etc/sysconfig/powersave/cpufreq.

16.5.4.3. Los modos suspend/standby no funcionan

Se conocen varios problemas relacionados con el kernel que pueden ser causa de que el modo suspend/standby no funcione en sistemas ACPI:

  • Los sistemas con más de 1 GB de RAM no soportan (todavía) el modo suspend.

  • Los sistemas con multiprocesador o con un procesador P4 (con hyperthreading) no soportan actualmente el modo suspend.

El problema también puede deberse a una implementación defectuosa del DSDT (BIOS). En este caso instale un nuevo DSDT como se ha descrito anteriormente .

En sistemas ACPI y APM, cuando el sistema trata de descargar módulos defectuosos, el ordenador se cuelga o el modo suspend no se desencadena. También puede ocurrir que no se descarguen o detengan módulos o servicios que eviten el paso al modo suspend. En ambos casos se recomienda localizar el módulo defectuoso que ha impedido el modo sleep. Para ello pueden utilizarse los archivos de registro del daemon powersave en /var/log/<sleep_mode>. Si el ordenador ni siquiera pasa al modo sleep, la causa del problema debe buscarse en el módulo descargado en último lugar. Puede utilizar las siguientes opciones de configuración en el archivo /etc/sysconfig/powersave/sleep para descargar los módulos problemáticos antes de efectuar un suspend o standby.

POWERSAVE_UNLOAD_MODULES_BEFORE_SUSPEND2DISK=""
POWERSAVE_UNLOAD_MODULES_BEFORE_SUSPEND2RAM=""
POWERSAVE_UNLOAD_MODULES_BEFORE_STANDBY=""
POWERSAVE_SUSPEND2DISK_RESTART_SERVICES=""
POWERSAVE_SUSPEND2RAM_RESTART_SERVICES=""
POWERSAVE_STANDBY_RESTART_SERVICES="" 

Si se utiliza suspend/standby en entornos de red cambiantes o en conexión con sistemas de archivos montados de forma remota como Samba o NIS, se recomienda montarlos con automounter o añadir los servicios correspondientes (por ejemplo smbfs o nfs) a las variables mencionadas arriba. En caso de que un programa acceda a un sistema de archivos montado de forma remota antes de iniciarse el modo suspend/standby, el servicio no podrá detenerse correctamente ni el sistema de archivos ser compartido de forma adecuada. Después de restablecer el sistema puede que el sistema de archivos esté dañado y deba montarse de nuevo.

16.5.4.4. Powersave no percibe los límites de la batería con ACPI

En sistemas con ACPI, el sistema operativo puede pedir a la BIOS una notificación cuando se rebasa un nivel determinado de carga de la batería. La ventaja de este método es que no es necesario leer continuamente el nivel de la batería, lo que repercutiría negativamente en el rendimiento del ordenador. No obstante, puede ocurrir que, a pesar de que debería funcionar según la BIOS, esta notificación no se produzca ni siquiera al rebasar el límite.

Si observa este fenómeno en su sistema, asigne el valor yes a la variable POWERSAVED_FORCE_BATTERY_POLLING en el archivo /etc/sysconfig/powersave/battery para forzar la lectura del estado de la batería.


SUSE LINUX Manual de administración 9.3