33.5. Paquetage powersave

Le paquetage powersave gère toutes les fonctions d'économie d'énergie mentionnées précédemment. En raison d'une volonté toujours plus forte de faire baisser la consommation d'énergie en général, certaines de ses fonctions sont également disponibles sur les stations de travail et les serveurs, comme la mise en veille, la mise en attente ou le contrôle de la fréquence de l'unité centrale.

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, à l'exception de acpid qui sert de multiplexeur pour les événements acpi, 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.

33.5.1. Configuration du paquetage powersave

La configuration de powersave est répartie dans plusieurs fichiers. Chaque option de configuration répertoriée ici contient des informations supplémentaires sur ses fonctionnalités.

/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 (généralement un script Bash) 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

  • notify

  • screen_saver

  • reread_cpu_capabilities

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.

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.

set_disk_settings

Exécute les paramètres du disque configurés dans /etc/sysconfig/powersave/disk.

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 une fenêtre contextuelle dans X ou un message sur la console. 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. L'action interne notify peut être personnalisée à 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 et des informations pour savoir si l'implémentation de l'espace utilisateur ou du kernel doit être utilisée.

/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. Reportez-vous à la Section 33.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/disk

Le fichier de configuration contrôle les actions et les paramètres du disque dur.

/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.

33.5.2. Configuration d'APM et d'ACPI

33.5.2.1. Mise en veille et mise en attente

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é. Cette mise en veille est activée par défaut et doit fonctionner sur tous les systèmes.

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. Cette mise en veille est désactivée par défaut car elle cause des problèmes sur certains systèmes. Cependant, la prise en charge s'est considérablement étendue.

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 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. É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=12
BATTERY_LOW=7
BATTERY_CRITICAL=2

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 la Section 33.5.1, « Configuration du paquetage powersave ».

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

33.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 la Section 33.6, « Module de gestion de l'alimentation YaST ».

33.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. Reportez-vous à 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é.

EVENT_OTHER="ignore"

Cet événement se produit si le démon rencontre un événement inconnu. Il peut s'agir des touches rapides ACPI présentes sur certaines machines.

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é.

33.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.

33.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 de la manière suivante 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é, soit quand 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.

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

Reportez-vous aux 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.

33.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 prennent pas la mise en veille en charge.

L'erreur peut également être due à la mise en oeuvre 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/suspend2ram.log et /var/log/suspend2disk.log 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 fichiers monté à distance avant une mise en veille ou en attente, le service ne peut pas être arrêté correctement et le système de fichiers 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é.

33.5.5. Pour plus d'informations