33.5. Paquete powersave

El paquete powersave se ocupa de todas las funciones de ahorro de energía mencionadas anteriormente. Debido a la creciente demanda general de un menor consumo de energía, algunas de sus funciones son importantes también en estaciones de trabajo y servidores, como las funciones de suspensión, stand-by y ajuste de la frecuencia de CPU.

Este paquete incorpora todas las funciones de ahorro de energía del equipo y es compatible con cualquier hardware que utilice ACPI, APM, discos duros IDE y las tecnologías PowerNow! y SpeedStep. Todas las prestaciones de los paquetes apmd, acpid, ospmd y cpufreqd (ahoracpuspeed) se han agrupado ahora en el paquete powersave.. Los daemons de estos paquetes, con la excepción de acpid que actúa como multiplexor de los eventos de acpi, no se deben ejecutar al mismo tiempo que el daemon powersave.

Incluso aunque el sistema no disponga de todos los componentes de hardware mencionados anteriormente, se recomienda utilizar el daemon de powersave para regular la función de ahorro de energía. Como ACPI y APM se excluyen mutuamente, sólo podrá usar uno de ellos en su equipo. El daemon detecta automáticamente cualquier cambio en la configuración del hardware.

33.5.1. Configuración del paquete powersave

La configuración de powersave está distribuida en varios archivos. Cada opción de configuración contenida en ellos incluye documentación adicional acerca de su funcionalidad.

/etc/sysconfig/powersave/common

Este archivo contiene ajustes generales para el daemon powersave. Por ejemplo, se puede obtener una mayor cantidad de mensajes de depuración en /var/log/messages incrementando el valor de la variable DEBUG.

/etc/sysconfig/powersave/events

El daemon powersave necesita este archivo para procesar los eventos que se producen en el sistema. A estos eventos se les pueden asignar acciones externas o internas (ejecutadas por el daemon). Con las acciones externas, el daemon intenta activar un archivo ejecutable (normalmente un guión Bash) de /usr/lib/powersave/scripts/. Las acciones internas predefinidas son:

  • ignore

  • throttle

  • dethrottle

  • suspend_to_disk

  • suspend_to_ram

  • standby

  • do_suspend_to_disk

  • do_suspend_to_ram

  • do_standby

  • notify

  • screen_saver

  • reread_cpu_capabilities

throttle limita el procesador en función del valor establecido en MAX_THROTTLING. Este valor depende del esquema actual. dethrottle hace que el procesador funcione a pleno rendimiento. suspend_to_disk, suspend_to_ram y standby desencadenan eventos de sistema para el modo de reposo. Estas tres acciones son generalmente responsables de activar el modo de reposo, pero siempre deben asociarse a eventos del sistema específicos.

El directorio /usr/lib/powersave/scripts contiene guiones para procesar los eventos:

switch_vt

Es muy útil si la pantalla se muestra distorsionada después de haber estado en reposo o en stand-by.

wm_logout

Guarda los ajustes y cierra la sesión de GNOME, KDE o de otros gestores de ventanas.

wm_shutdown

Guarda los ajustes de GNOME o de KDE y apaga el sistema.

set_disk_settings

Ejecuta los ajustes de disco definidos en /etc/sysconfig/powersave/disk.

Por ejemplo, si se define la variable EVENT_GLOBAL_SUSPEND2DISK="prepare_suspend_to_disk do_suspend_to_disk", los dos guiones o acciones se procesarán en el orden especificado en el momento en que el usuario ejecute el comando necesario de powersaved para el modo de reposo, que es suspend to disk (Suspender en disco). El daemon inicia el guión externo /usr/lib/powersave/scripts/prepare_suspend_to_disk y, una vez que el guión se ha procesado correctamente, el daemon ejecuta la acción interna do_suspend_to_disk y pone el equipo definitivamente en modo de reposo después de que el guión haya detenido los servicios y descargado los módulos críticos.

Las acciones para el evento de un botón de reposo (Sleep) se pueden modificar, como en EVENT_BUTTON_SLEEP="notify suspend_to_disk". En este caso, se informa al usuario acerca de la suspensión mediante una ventana emergente de X o un mensaje en la consola. A continuación, se genera el evento EVENT_GLOBAL_SUSPEND2DISK, que origina las acciones mencionadas y garantiza que el sistema pase al modo de suspensión. La acción interna notify se puede personalizar usando la variable NOTIFY_METHOD en /etc/sysconfig/powersave/common.

/etc/sysconfig/powersave/cpufreq

Incluye variables que permiten optimizar los ajustes de frecuencia de la CPU dinámicos y determinar si se debe usar la implementación del espacio de usuario o del núcleo.

/etc/sysconfig/powersave/battery

En él se definen los límites de las baterías y otros ajustes específicos de la batería.

/etc/sysconfig/powersave/sleep

En este archivo se activan los modos de reposo y se puede definir qué módulos críticos deben descargarse y qué servicios deben detenerse antes de que se produzca un evento de suspensión o de stand-by. Estos módulos se cargarán y los servicios se reiniciarán cuando el sistema se restablezca. Si lo desea, puede incluso retrasar un modo de reposo que se haya iniciado para guardar archivos, por ejemplo. Los ajustes por defecto afectan sobre todo a los módulos USB y PCMCIA. Hay ciertos módulos que pueden provocar fallos en los modos de suspensión o de stand-by. Consulte la Sección 33.5.4, “Solución de problemas” para obtener más información acerca de la identificación del error.

/etc/sysconfig/powersave/thermal

Activa los controles térmicos y de refrigeración. Puede obtener información adicional sobre este tema en el archivo /usr/share/doc/packages/powersave/README.thermal.

/etc/sysconfig/powersave/disk

Este archivo de configuración controla las acciones y los ajustes definidos en relación con el disco duro.

/etc/sysconfig/powersave/scheme_*

Este archivo contiene varios esquemas que regulan el consumo de energía en función de las distintas situaciones de aplicación. Algunos de estos esquemas están ya preconfigurados y pueden utilizarse tal y como están. Aquí también puede almacenar sus propios esquemas personalizados.

33.5.2. Configuración de APM y ACPI

33.5.2.1. Modos de suspensión y stand-by

Existen tres modos de reposo básicos ACPI y dos APM:

Suspender en disco (ACPI S4, suspensión APM)

Guarda todo el contenido de la memoria en el disco duro. El equipo se apaga por completo y no consume electricidad. Este modo de reposo está habilitado por defecto y debería funcionar en todos los sistemas.

Suspender en RAM (ACPI S3, suspensión APM)

Guarda los estados de todos los dispositivos en la memoria principal. Sólo la memoria principal consume electricidad. Este modo de reposo está inhabilitado por defecto porque todavía genera problemas en algunos sistemas. Sin embargo, la compatibilidad se ha ampliado considerablemente.

Stand-by (ACPI S1, stand-by APM)

Apaga algunos dispositivos (en función del fabricante).

Asegúrese de que las siguientes opciones por defecto estén configuradas en el archivo /etc/sysconfig/powersave/events para que sea correcto el procesamiento de los modos de suspensión, stand-by y reanudación (son los ajustes por defecto tras la instalación de SUSE Linux):

EVENT_GLOBAL_SUSPEND2DISK=
    "prepare_suspend_to_disk screen_saver do_suspend_to_disk"
EVENT_GLOBAL_SUSPEND2RAM=
    "prepare_suspend_to_ram screen_saver do_suspend_to_ram"
EVENT_GLOBAL_STANDBY=
    "prepare_standby screen_saver do_standby"
EVENT_GLOBAL_RESUME_SUSPEND2DISK=
    "restore_after_suspend_to_disk"
EVENT_GLOBAL_RESUME_SUSPEND2RAM=
    "restore_after_suspend_to_ram"
EVENT_GLOBAL_RESUME_STANDBY=
    "restore_after_standby"

33.5.2.2. Estados personalizados de la batería

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 genera alertas o lleva a cabo acciones específicas.

BATTERY_WARNING=12
BATTERY_LOW=7
BATTERY_CRITICAL=2

En el archivo de configuración /etc/sysconfig/powersave/events se definen las acciones o los guiones que han de ejecutarse cuando el nivel de carga es inferior al especificado. En la Sección 33.5.1, “Configuración del paquete powersave” se describe cómo se pueden modificar las acciones por defecto para los botones.

EVENT_BATTERY_NORMAL="ignore"
EVENT_BATTERY_WARNING="notify"
EVENT_BATTERY_LOW="notify"
EVENT_BATTERY_CRITICAL="wm_shutdown"

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

El rendimiento del sistema se puede adaptar al tipo de suministro de energía. Así, por ejemplo, el consumo de energía del sistema se puede reducir cuando el equipo esté desconectado de la red de suministro eléctrico y funcione con batería. Del mismo modo, el rendimiento se puede aumentar automáticamente en el momento en que el equipo se conecte de nuevo a la red eléctrica. Para ajustar el consumo, se pueden modificar aspectos como la frecuencia de la CPU, la función de ahorro de energía de IDE y otros parámetros.

En el archivo /etc/sysconfig/powersave/events se definen las acciones que se deben ejecutar cuando se conecta el equipo a la red eléctrica o cuando se desconecta de ella. Seleccione los esquemas que se deben usar en /etc/sysconfig/powersave/common:

AC_SCHEME="performance"
BATTERY_SCHEME="powersave"

Los esquemas se almacenan en archivos en /etc/sysconfig/powersave. Los nombres de archivo tienen el formato scheme_nombre-del-esquema. En el ejemplo, se hace referencia a dos esquemas: scheme_performance y scheme_powersave. Los esquemas performance, powersave, presentation y acoustic son esquemas preconfigurados. Los esquemas existentes se pueden editar, crear o suprimir, así como asociarlos a los distintos estados de suministro de energía con la ayuda del módulo de gestión de energía de YaST, que se describe en la Sección 33.6, “Módulo de gestión de energía de YaST”.

33.5.3. Funciones ACPI adicionales

Si utiliza ACPI, podrá controlar cómo responde el sistema cuando se usan las teclas ACPI (Power, Sleep y las teclas para abrir y cerrar la cubierta). En el archivo /etc/sysconfig/powersave/events se establece qué acciones se deben llevar a cabo. Puede obtener información adicional sobre cada una de las opciones en este archivo de configuración.

EVENT_BUTTON_POWER="wm_shutdown"

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

EVENT_BUTTON_SLEEP="suspend_to_disk"

Si pulsa la tecla Sleep, el sistema pasa al modo suspender en disco.

EVENT_BUTTON_LID_OPEN="ignore"

No pasa nada cuando se abre la cubierta del equipo portátil.

EVENT_BUTTON_LID_CLOSED="screen_saver"

Cuando se abre la cubierta, se activa el salvapantallas.

EVENT_OTHER="ignore"

Este evento tiene lugar si el daemon detecta un evento desconocido. Los eventos desconocidos incluyen teclas de activación de ACPI en algunas máquinas.

Si la carga de la CPU no supera un umbral especificado durante un período de tiempo concreto, se puede limitar su potencia. Para ello, especifique un límite de carga en PROCESSOR_IDLE_LIMIT y un tiempo de espera en CPU_IDLE_TIMEOUT. Si la carga de la CPU se mantiene por debajo del límite durante el tiempo de espera, se activará el evento configurado en EVENT_PROCESSOR_IDLE.. Si la CPU vuelve a estar ocupada, se ejecutará EVENT_PROCESSOR_BUSY.

33.5.4. Solución de problemas

Todos los mensajes de error y los avisos del sistema se recogen en el archivo /var/log/messages. Si no encuentra la información que necesita, aumente el nivel de detalle de los mensajes de powersave usando la opción DEBUG del archivo /etc/sysconfig/powersave/common. Establezca el valor de la variable en 7 o incluso en 15, y reinicie el daemon. Cuanto más detallados sean los mensajes de error de /var/log/messages, más fácil será identificar los errores. En las siguientes secciones figuran los problemas más habituales que pueden surgir con powersave.

33.5.4.1. ACPI está activado y es compatible con el hardware pero las funciones no están disponibles

Si surgen problemas con ACPI, use el comando dmesg|grep -i acpi para buscar la salida de dmesg en los mensajes específicos de ACPI. Para solucionar el error puede ser necesario actualizar el BIOS. Con este fin, visite la página Web del fabricante del equipo portátil, busque una versión actualizada del BIOS e instálela. Informe al fabricante de que debe ajustarse a las especificaciones ACPI más recientes. Si el error persiste después de actualizar el BIOS, proceda de la siguiente forma para sustituir la tabla DSDT defectuosa en el BIOS por una DSDT actualizada:

  1. Descargue una DSDT adecuada para el sistema desde http://acpi.sourceforge.net/dsdt/tables. Compruebe si el archivo está descomprimido y compilado. Lo reconocerá por la extensión .aml (Lenguaje del equipo ACPI, del inglés ACPI Machine Language). Si éste es el caso, continúe con el paso 3.

  2. Si la extensión de archivo de la tabla descargada es .asl (Lenguaje fuente ACPI, del inglés ACPI Source Language), deberá compilarla con la herramienta iasl (paquete pmtools). Ejecute el comando iasl -sa file.asl. La versión más reciente de iasl (compilador de ACPI para Intel) está disponible en http://developer.intel.com/technology/iapc/acpi/downloads.htm.

  3. Copie el archivo DSDT.aml donde desee (se recomienda usar /etc/DSDT.aml). A continuación, edite /etc/sysconfig/kernel y modifique la vía al archivo DSDT en función de los pasos anteriores. Inicie mkinitrd (paquete mkinitrd). Cuando desinstale el núcleo y use mkinitrd para crear initrd, la DSDT modificada se integrará y se cargará al arrancar el sistema.

33.5.4.2. La función de frecuencia de la CPU no funciona

Consulte las fuentes del núcleo (kernel-source) para averiguar si el procesador es compatible. Puede que necesite usar un módulo del núcleo o una opción del módulo especiales para activar el control de 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 o una opción específicos, configúrelos en el archivo /etc/sysconfig/powersave/cpufreq mediante las variables CPUFREQD_MODULE y CPUFREQD_MODULE_OPTS.

33.5.4.3. Los modos de suspensión y stand-by no funcionan

Se conocen varios problemas relacionados con el núcleo que pueden ser la causa de que los modos de suspensión y stand-by no funcionen en sistemas ACPI:

  • Actualmente, los sistemas con más de 1 GB de RAM no admiten el modo de suspensión.

  • Los sistemas con multiprocesador o con un procesador P4 (con tecnología HyperThread) no admiten actualmente el modo de suspensión.

El problema también puede deberse a una implementación defectuosa de la DSDT (BIOS). En este caso, deberá instalar una DSDT nueva.

En sistemas ACPI y APM: cuando el sistema trata de descargar módulos defectuosos, el equipo se bloquea o el evento de suspensión no se activa. También puede ocurrir lo mismo si no se descargan o no se detienen los módulos o los servicios que impiden el paso al modo de suspensión. En ambos casos, se recomienda localizar el módulo defectuoso que ha impedido que se pase al modo de reposo. Para ello pueden utilizarse los archivos de registro que el daemon powersave genera en /var/log/suspend2ram.log y /var/log/suspend2disk.log. Si el equipo ni siquiera pasa al modo de reposo, la causa del problema debe buscarse en el módulo descargado en último lugar. Puede manipular los siguientes ajustes del archivo /etc/sysconfig/powersave/sleep para descargar los módulos problemáticos antes de pasar a los modos de suspensión o stand-by.

UNLOAD_MODULES_BEFORE_SUSPEND2DISK=""
UNLOAD_MODULES_BEFORE_SUSPEND2RAM=""
UNLOAD_MODULES_BEFORE_STANDBY=""
SUSPEND2DISK_RESTART_SERVICES=""
SUSPEND2RAM_RESTART_SERVICES=""
STANDBY_RESTART_SERVICES="" 

Si se utilizan los modos de suspensión o stand-by en entornos de red cambiantes o con sistemas de archivos montados de forma remota (por ejemplo, Samba o NIS), se recomienda montarlos con automounter o añadir los servicios correspondientes como, 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 de suspensión o de stand-by, el servicio no se detendrá correctamente ni el sistema de archivos se desmontará de forma adecuada. Después de restablecer el sistema, puede que el sistema de archivos esté dañado y deba montarse de nuevo.

33.5.5. Información adicional