El paquete powersave se ocupa de la función de ahorro de energía cuando un equipo 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, los modos stand-by y de suspensión, la función de las teclas ACPI y la puesta en reposo los discos duros IDE.
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 y el daemon de powersave no deben ejecutarse simultáneamente.
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.
Normalmente, la configuración de powersave está distribuida en varios archivos:
/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). Se habla de una acción externa cuando el daemon intenta activar un archivo ejecutable guardado en /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
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:
Notificación acerca de un evento mediante la consola, X Window o una señal acústica.
Activa el salvapantallas.
Es muy útil si la pantalla se muestra distorsionada después de haber estado en reposo o en stand-by.
Guarda los ajustes y cierra la sesión de GNOME, KDE o de otros gestores de ventanas.
Guarda los ajustes de GNOME o de KDE y apaga el sistema.
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 sobre la suspensión mediante el guión externo notify (Notificar). 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. El guión notify se puede personalizar usando la variable NOTIFY_METHOD en /etc/sysconfig/powersave/common.
/etc/sysconfig/powersave/cpufreqContiene variables para optimizar el ajuste dinámico de la frecuencia de la CPU.
/etc/sysconfig/powersave/batteryEn él se definen los límites de las baterías y otros ajustes específicos de la batería.
/etc/sysconfig/powersave/sleepEn 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 21.5.4, “Resolució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/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.
Los modos de reposo están inactivos por defecto porque todavía no funcionan en algunos equipos. Existen tres modos de reposo básicos ACPI y dos APM:
Guarda todo el contenido de la memoria en el disco duro. El equipo se apaga por completo y no consume electricidad.
Guarda los estados de todos los dispositivos en la memoria principal. Sólo la memoria principal consume electricidad.
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 do_suspend_to_disk"
EVENT_GLOBAL_SUSPEND2RAM=
"prepare_suspend_to_ram do_suspend_to_ram"
EVENT_GLOBAL_STANDBY=
"prepare_standby 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"
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=20 BATTERY_LOW=10 BATTERY_CRITICAL=5
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 21.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"
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 21.6, “Módulo de gestión de energía de YaST”.
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.
Al pulsar la tecla Power, el sistema apaga el gestor de ventanas correspondiente (KDE, GNOME, fvwm, etc.).
Si pulsa la tecla Sleep, el sistema pasa al modo suspender en disco.
No pasa nada cuando se abre la cubierta del equipo portátil.
Cuando se abre la cubierta, se activa el salvapantallas.
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.
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.
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:
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.
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.
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.
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.
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 almacena en /var/log/sleep mode.. 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.
En sistemas con ACPI, el sistema operativo puede pedir al BIOS que envíe un mensaje cuando la carga de la batería sea inferior a un límite especificado. La ventaja de este método es que no es necesario consultar continuamente el estado de la batería, lo que repercutiría negativamente en el rendimiento del equipo. No obstante, puede ocurrir que, a pesar de que el BIOS sea compatible con esta función, la notificación no se produzca, ni siquiera cuando el nivel de carga sea inferior al especificado. Si ocurre esto, establezca la variable FORCE_BATTERY_POLLING del archivo /etc/sysconfig/powersave/battery en un valor afirmativo (yes) para forzar la consulta del estado de la batería.