21.5. Paquetage powersave

Le paquetage powersave est responsable de la fonction d'économie d'énergie utilisée par les ordinateurs portables lorsqu'ils fonctionnent sur batterie. Certaines de ses fonctions sont également utiles pour les stations de travail normales et les serveurs, par exemple la mise en veille, la mise en attente, la fonctionnalité ACPI et la mise en veille des disques durs IDE.

Ce paquetage regroupe toutes les fonctions de gestion d'énergie de votre ordinateur. Il prend en charge le matériel utilisant ACPI, APM, les disques durs IDE, ainsi que les technologies PowerNow! ou SpeedStep. Les fonctionnalités des paquetages apmd, acpid, ospmd et cpufreqd (désormais nommé cpuspeed) ont été consolidées au sein du paquetagepowersave. Les démons de ces paquetages ne doivent pas être exécutés parallèlement au démon powersave.

Même si votre système ne comporte pas tous les éléments matériel énumérés ci-dessus, utilisez le démon powersave pour contrôler la fonction d'économie d'énergie. Dans la mesure où ACPI et APM s'excluent mutuellement, un seul de ces systèmes peut être utilisé sur votre ordinateur. Le démon détecte automatiquement toute modification dans la configuration matérielle.

21.5.1. Configuration du paquetage powersave

La configuration de powersave est normalement répartie dans plusieurs fichiers :

/etc/sysconfig/powersave/common

Ce fichier contient des paramètres généraux pour le démon powersave. La quantité de messages de débogage dans /var/log/messages peut par exemple être accrue en augmentant la valeur de la variable DEBUG.

/etc/sysconfig/powersave/events

Le démon powersave a besoin de ce fichier pour traiter les événements système. Des actions externes ou des actions effectuées par le démon lui-même peuvent être affectées à un événement. Pour les actions externes, le démon tente de lancer un fichier exécutable dans /usr/lib/powersave/scripts/. Actions internes prédéfinies :

  • ignore

  • throttle

  • dethrottle

  • suspend_to_disk

  • suspend_to_ram

  • standby

  • do_suspend_to_disk

  • do_suspend_to_ram

  • do_standby

throttle réduit la vitesse du processeur par la valeur définie dans MAX_THROTTLING. Cette valeur dépend du modèle actuel. dethrottle règle le processeur sur des performances maximales. suspend_to_disk, suspend_to_ram et standby déclenchent l'événement système permettant de passer en veille. Ces trois actions sont généralement responsables du déclenchement de la mise en veille, mais elles doivent toujours être associées à des événements système spécifiques.

Le répertoire /usr/lib/powersave/scripts contient des scripts pour le traitement des événements.

notify

Notification d'un événement par l'intermédiaire de la console, de X window ou d'un signal acoustique.

screen_saver

Active l'économiseur d'écran.

switch_vt

Utile si l'écran est déplacé après une mise en veille ou une mise en attente.

wm_logout

Enregistre les paramètres et se déconnecte de GNOME, de KDE ou d'un autre gestionnaire de fenêtres.

wm_shutdown

Enregistre les paramètres GNOME ou KDE et arrête le système.

Si, par exemple, la variable EVENT_GLOBAL_SUSPEND2DISK="prepare_suspend_to_disk do_suspend_to_disk" est définie, les deux scripts ou actions sont traités dans l'ordre spécifié, dès que l'utilisateur transmet à powersave la commande de mise en veille mise en veille sur disque. Le démon exécute le script externe /usr/lib/powersave/scripts/prepare_suspend_to_disk. Quand ce script a été traité, le démon exécute l'action interne do_suspend_to_disk et bascule l'ordinateur en veille une fois que le script a déchargé les modules critiques et arrêté les services.

Les actions exécutées en cas de clic sur le bouton de mise en veille peuvent être modifiées dans EVENT_BUTTON_SLEEP="notify suspend_to_disk". Dans ce cas, l'utilisateur est informé de la mise en veille par le script externe notify. L'événement EVENT_GLOBAL_SUSPEND2DISK est ensuite généré, entraînant l'exécution des actions mentionnées et l'activation d'une veille système sécurisée. Le script notify peut être personnalisé à l'aide de la variable NOTIFY_METHOD dans /etc/sysconfig/powersave/common.

/etc/sysconfig/powersave/cpufreq

Contient des variables pour optimiser les paramètres dynamiques de fréquence du processeur.

/etc/sysconfig/powersave/battery

Contient les limites de la batterie et d'autres réglages spécifiques à celle-ci.

/etc/sysconfig/powersave/sleep

Ce fichier sert à activer les modes de veille et à déterminer les modules critiques à décharger et les services à arrêter avant un événement de type mise en veille ou mise en attente. Lors de la reprise du système, ces modules sont rechargés et les services sont redémarrés. Vous pouvez même retarder le déclenchement de la mise en veille, par exemple pour enregistrer des fichiers. Les paramètres par défaut concernent principalement les modules USB et PCMCIA. Un échec de mise en veille ou de mise en attente est généralement lié à certains modules. Consultez Section 21.5.4, « Dépannage » pour de plus amples informations sur la façon d'identifier l'erreur.

/etc/sysconfig/powersave/thermal

Active le contrôle du refroidissement et des données thermiques. Des détails à ce sujet sont disponibles dans le fichier /usr/share/doc/packages/powersave/README.thermal.

/etc/sysconfig/powersave/scheme_*

Regroupe les différents modèles qui adaptent la consommation d'énergie à certains scénarios de déploiement. Un certain nombre de modèles préconfigurés peuvent être utilisés tels quels. Les modèles personnalisés peuvent être enregistrés ici.

21.5.2. Configuration d'APM et d'ACPI

21.5.2.1. Mise en veille et mise en attente

Par défaut, les modes de veille sont inactifs, car ils ne fonctionnent pas encore sur certains ordinateurs. Il existe trois modes de veille ACPI de base et deux modes de veille APM.

Mise en veille sur disque (ACPI S4, mise en veille APM)

Enregistre tout le contenu de la mémoire sur le disque dur. L'ordinateur est entièrement éteint et ne consomme pas d'électricité.

Mise en veille en RAM (ACPI S3, mise en veille APM)

Enregistre l'état de tous les périphériques en mémoire principale. Seule la mémoire principale continue à consommer de l'énergie.

Mise en attente (ACPI S1, mise en attente APM)

Éteint certains périphériques (selon le fabricant).

Assurez-vous que les options par défaut ci-après sont définies dans le fichier /etc/sysconfig/powersave/events pour assurer le traitement efficace de la mise en veille, de la mise en attente et de la reprise (paramètres par défaut après l'installation 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"

21.5.2.2. États de batterie personnalisés

Dans le fichier /etc/sysconfig/powersave/battery, définissez trois niveaux de charge de batterie (en pourcentage) qui déclenchent des alertes système ou des actions spécifiques quand ils sont atteints.

BATTERY_WARNING=20
BATTERY_LOW=10
BATTERY_CRITICAL=5

Les actions ou les scripts à exécuter quand les niveaux de charge tombent sous les limites spécifiées sont définis dans le fichier de configuration /etc/sysconfig/powersave/events. Les actions standard des boutons peuvent être modifiées conformément à ce qui est décrit dans Section 21.5.1, « Configuration du paquetage powersave ».

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

21.5.2.3. Adaptation de la consommation électrique à diverses conditions

Le comportement du système peut être adapté au type d'alimentation électrique. La consommation d'énergie du système doit être réduite quand le système n'est pas branché à une prise de courant et qu'il fonctionne sur batterie. De même, les performances doivent automatiquement être supérieures dès que le système est alimenté par une prise électrique. La fréquence du processeur, la fonction d'économie d'énergie de l'interface IDE et un certain nombre d'autres paramètres peuvent être modifiés.

Les actions à exécuter selon que l'ordinateur est connecté ou non au réseau électrique sont définies dans /etc/sysconfig/powersave/events. Sélectionnez les modèles à utiliser dans /etc/sysconfig/powersave/common.

AC_SCHEME="performance"
BATTERY_SCHEME="powersave"

Les modèles sont stockés dans des fichiers sous /etc/sysconfig/powersave. Les noms de fichiers suivent le format scheme_name-of-the-scheme. L'exemple fait référence à deux modèles : scheme_performance et scheme_powersave. performance, powersave, presentation et acoustic sont préconfigurés. Les modèles existants peuvent être modifiés, créés, supprimés ou associés à différents états d'alimentation à l'aide du module de gestion de l'alimentation YaST, décrit dans Section 21.6, « Module de gestion de l'alimentation YaST ».

21.5.3. Fonctions ACPI supplémentaires

Si vous utilisez ACPI, vous pouvez contrôler la réponse de votre système aux boutons ACPI (marche, veille, capot ouvert et capot fermé). Configurez l'exécution de ces actions dans /etc/sysconfig/powersave/events. Consultez ce fichier de configuration pour obtenir des explications sur les options individuelles.

EVENT_BUTTON_POWER="wm_shutdown"

En cas de pression sur le bouton marche/arrêt, le système réagit par la fermeture du gestionnaire de fenêtres concerné (KDE, GNOME, fvwm, etc.).

EVENT_BUTTON_SLEEP="suspend_to_disk"

En cas de pression sur le bouton de veille, le système passe en veille sur disque.

EVENT_BUTTON_LID_OPEN="ignore"

Rien ne se passe en cas d'ouverture du capot.

EVENT_BUTTON_LID_CLOSED="screen_saver"

En cas de fermeture du capot, l'économiseur d'écran est activé.

Une limitation des performances du processeur est possible si la charge du processeur n'excède pas une limite spécifiée pendant un temps donné. Spécifiez la limite de charge dans PROCESSOR_IDLE_LIMIT et le délai dans CPU_IDLE_TIMEOUT. Si la charge du processeur reste inférieure à la limite au-delà du délai indiqué, l'événement configuré dans EVENT_PROCESSOR_IDLE est activé. Si le processeur est à nouveau occupé, EVENT_PROCESSOR_BUSY est exécuté.

21.5.4. Dépannage

Tous les messages d'erreur et alertes sont consignés dans le fichier /var/log/messages. Si vous ne trouvez pas les informations requises, augmentez le niveau de commentaire des messages de powersave à l'aide de DEBUG dans le fichier /etc/sysconfig/powersave/common. Augmentez la valeur de la variable à 7 ou même à 15 et redémarrez le démon. Les messages d'erreur plus détaillés dans /var/log/messages doivent permettre d'identifier l'erreur. Les sections suivantes traitent des problèmes les plus courants avec powersave.

21.5.4.1. ACPI est activé avec prise en charge du matériel mais des fonctions sont indisponibles

Si vous rencontrez des difficultés avec ACPI, utilisez la commande dmesg|grep -i acpi pour rechercher la sortie de dmesg pour les messages spécifiques à ACPI. Une mise à jour du BIOS peut être requise pour résoudre le problème. Rendez-vous sur la page d'accueil du fabricant de votre ordinateur portable, recherchez une mise à jour du BIOS et installez-la. Renseignez vous auprès de votre fabricant sur la conformité aux dernières spécifications ACPI. Si les erreurs persistent après la mise à jour du BIOS, procédez comme suit pour remplacer la table DSDT défectueuse dans votre BIOS par une DSDT mise à jour.

  1. Téléchargez la DSDT pour votre système sur http://acpi.sourceforge.net/dsdt/tables. Vérifiez si le fichier est décompressé et compilé, c'est-à-dire s'il porte l'extension .aml (langage machine ACPI). Si tel est le cas, passez à l'étape 3.

  2. Si l'extension de fichier du tableau téléchargé est .asl (langage source ACPI), compilez-le avec iasl (paquetage pmtools). Saisissez la commande iasl -sa file.asl. La dernière version de iasl (compilateur ACPI Intel) est disponible à l'adresse http://developer.intel.com/technology/iapc/acpi/downloads.htm.

  3. Copiez le fichier DSDT.aml où vous le souhaitez (/etc/DSDT.aml est conseillé). Modifiez /etc/sysconfig/kernel et adaptez le chemin vers le fichier DSDT en conséquence. Démarrez mkinitrd (paquetage mkinitrd). Lorsque vous installez le kernel et que vous utilisez mkinitrd pour créer un fichier initrd, la DSDT modifiée est intégrée et chargée à l'amorçage du système.

21.5.4.2. Le contrôle de fréquence du processeur ne fonctionne pas

Consultez les sources du kernel (kernel-source) pour savoir si votre processeur est pris en charge. Un module de kernel ou une option de module spécifique peuvent être requis pour activer le contrôle de fréquence du processeur. Ces informations sont disponibles dans /usr/src/linux/Documentation/cpu-freq/*. Si une option de module ou un module spécifique est requis, configurez-le(la) dans le fichier /etc/sysconfig/powersave/cpufreq à l'aide des variables CPUFREQD_MODULE et CPUFREQD_MODULE_OPTS.

21.5.4.3. La mise en veille et la mise en attente ne fonctionnent pas

Plusieurs problèmes liés au kernel peuvent empêcher l'utilisation de la mise en veille et de la mise en attente sur les systèmes ACPI.

  • Actuellement, les systèmes avec plus de 1 Go de mémoire vive (RAM) ne prennent pas la mise en veille en charge.

  • De même, les systèmes multiprocesseurs et ceux équipés d'un processeur P4 (avec hyperthreading) ne prenent pas la mise en veille en charge.

L'erreur peut également être due à la mise en œuvre d'une DSDT défectueuse (BIOS). Dans ce cas, installez une nouvelle DSDT.

Sur les systèmes ACPI et APM : quand le système tente de décharger des modules défectueux, le système s'arrête ou la mise en veille ne se déclenche pas. La même chose peut se produire si vous ne déchargez pas les modules ou si vous n'arrêtez pas les services empêchant le succès de la mise en veille. Dans les deux cas, essayez d'identifier le module défectueux qui a empêché la mise en veille. Les fichiers journaux générés par le démon powersave dans /var/log/sleep mode sont très utiles dans cette optique. Si l'ordinateur ne passe pas en veille, la cause se situe dans le dernier module déchargé. Manipulez les réglages suivants dans /etc/sysconfig/powersave/sleep pour décharger les modules problématiques avant la mise en veille ou en attente.

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

Si vous utilisez la mise en veille ou la mise en attente dans des environnements réseaux changeants ou avec des systèmes de fichiers montés à distance, tels que Samba et NIS, utilisez automounter pour les monter ou ajoutez les services correspondants, par exemple smbfs ou nfs, dans la variable mentionnée ci-dessus. Si une application accède à un système de fichier monté à distance avant une mise en veille ou en attente, le service ne peut pas être arrêté correctement et le système de fichier ne peut pas être démonté convenablement. Après la reprise du système, le système de fichiers peut être corrompu et doit alors être remonté.

21.5.4.4.  Powersave ne tient pas compte des limites de batterie avec ACPI

Avec ACPI, le système d'exploitation peut demander au BIOS d'envoyer un message quand le niveau de charge de la batterie tombe sous une certaine limite. L'avantage de cette méthode est d'éviter une surveillance permanente de l'état de la batterie, ce qui grèverait les performances globales de l'ordinateur. Cependant, il arrive que la notification ne se fasse pas quand la limite est dépassée, même quand le BIOS est supposé prendre en charge cette fonction. Si cela se produit sur votre système, réglez la variable FORCE_BATTERY_POLLING du fichier /etc/sysconfig/powersave/battery sur yes pour forcer la surveillance de la batterie.

21.5.5. Pour plus d'informations

Des informations à propos du paquetage powersave sont également disponibles dans /usr/share/doc/packages/powersave.