16.5. Le paquetage powersave

Le paquetage powersave est responsable de l'économie d'énergie lors du fonctionnement sur batterie des ordinateurs portables. Certaines de ses caractéristiques sont toutefois aussi intéressantes pour les ordinateurs de bureau et les serveurs, par exemple, les modes veille et attente, la gestion des boutons ACPI et la mise en sommeil des disques durs IDE.

Ce paquetage rassemble toutes les fonctions de gestion d'énergie pour votre ordinateur. Il prend en charge le matériel utilisant ACPI, APM, la gestion des disques durs IDE et les technologies PowerNow! ou SpeedStep. Les fonctionnalités offertes par les paquetages apmd, acpid, ospmd et cpufreqd (maintenant, cpuspeed) sont rassemblées dans le paquetage powersave. Il est déconseillé d'exécuter les démons de ces paquetages parallèlement au démon powersave.

Il est conseillé d'utiliser le démon powersave pour le contrôle des fonctions d'économie d'énergie, même si votre système ne comprend pas tous les éléments matériels cités précédemment. Étant donné que ACPI et APM s'excluent mutuellement, vous ne pouvez utiliser que l'un des deux sur votre système. Des modifications éventuelles de la configuration matérielle sont reconnues automatiquement par le démon.

[Important]Informations sur powersave

Des informations actualisées sur le paquetage powersave sont également disponibles dans le fichier /usr/share/doc/packages/powersave.

16.5.1. Configuration du paquetage powersave

D'une manière générale, la configuration de powersave est répartie sur plusieurs fichiers :

/etc/sysconfig/powersave/common

Ce fichier contient des paramètres généraux pour le démon powersave. Entre autres, le nombre de messages de débogage (dans /var/log/messages) peut être augmenté en changeant la valeur de la variable POWERSAVE_DEBUG.

/etc/sysconfig/powersave/events

Ce fichier est nécessaire au démon powersave pour garantir le traitement des événements (en anglais events) du système qui se produisent. Des actions externes ou des actions que le démon traite lui-même peuvent être attribuées à un événement. On parle d'actions externes lorsque le démon essaie d'activer un fichier exécutable qui est situé dans /usr/lib/powersave/scripts/. Les actions internes prédéfinies sont :

  • ignore

  • throttle

  • dethrottle

  • suspend_to_disk

  • suspend_to_ram

  • standby

  • do_suspend_to_disk

  • do_suspend_to_ram

  • do_standby

throttle ralentit le processeur de la valeur qui est définie par POWERSAVE_MAX_THROTTLING. Cette valeur est dépendante du profil utilisé actuellement. dethrottle redonne ses performances initiales au processeur. suspend_to_disk, suspend_to_ram et standby initient l'événement système pour un mode de sommeil. Ces trois dernières actions sont généralement reponsables de la mise en sommeil mais devraient toujours être soumises à des événements systèmes bien définis.

Des scripts pour le traitement d'événements se trouvent dans le répertoire /usr/lib/powersave/scripts :

notify

Avertissement à travers la console, le fenêtre X ou un signal acoustisque d'un événement se produisant

screen_saver

Activation de l'économiseur d'écran

switch_vt

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

wm_logout

Enregistrement de la configuration et déconnexion de GNOME ou KDE ou d'autres gestionnaires de fenêtre

wm_shutdown

Enregistrement de la configuration GNOME ou KDE et arrêt du système

Si, par exemple, la variable POWERSAVE_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 défini dès que l'utilisateur donne à powersaved l'ordre pour le mode sommeil suspend to disk. Le démon exécute le script externe /usr/lib/powersave/scripts/prepare_suspend_to_disk. Lorsque celui-ci est traité avec succès, le démon exécute l'action interne do_suspend_to_disk et met l'ordinateur définitivement en sommeil une fois que le script a arrêté les modules et les services critiques.

Une modification des actions pour l'événement d'un bouton sleep pourrait être comme dans POWERSAVE_EVENT_BUTTON_SLEEP="notify suspend_to_disk". Dans ce cas, l'utilisateur est informé de la mise en veille par le script externe notify. Ensuite, l'événement POWERSAVE_EVENT_GLOBAL_SUSPEND2DISK est créé qui a pour suite l'exécution des actions décrites ci-dessus et garantit un mode de mise en veille sûr du système. Le script notify peut être modifié dans /etc/sysconfig/powersave/common avec la variable POWERSAVE_NOTIFY_METHOD.

/etc/sysconfig/powersave/cpufreq

Le fichier contient des variables pour l'optimisation des paramètres dynamiques de la fréquence du processeur.

/etc/sysconfig/powersave/battery

Contient les limites de la batterie et d'autres paramètres spécifiques à la batterie.

/etc/sysconfig/powersave/sleep

Dans ce fichier, vous pouvez définir quels modules et quels services doivent être arrêtés avant que la mise en sommeil soit effectuée. Ceux-ci seront rechargés et démarrés lors de la remise en route du système. En outre, vous pouvez retarder une mise en sommeil déclenchée (pour éventuellement encore enregistrer des données). Les paramètres par défaut concernent principalement les modules USB et PCMCIA. Un échec de la mise en sommeil est généralement dû à certains modules. Consultez Section 16.5.4, « Problèmes possibles et solutions » pour savoir comment déterminer l'erreur.

/etc/sysconfig/powersave/thermal

Ici, le contrôle pour la régulation de la ventilation et de la chaleur est activé. Vous trouverez plus de détails à ce sujet dans le fichier /usr/share/doc/packages/powersave/README.thermal.

/etc/sysconfig/powersave/scheme_*

Il s'agit des différents profils, qui régissent l'ajustement de la consommation d'énergie suivant des scénarios d'utilisation déterminés. Un certain nombre de profils sont préconfigurés et utilisables sans autre modification. Toutefois, vous pouvez aussi intégrer à ce fichier vos propres profils.

16.5.2. Configuration d'APM et ACPI

16.5.2.1. Mise en veille (Suspend) et mise en attente (Standby)

Par défaut, les modes de mise en sommeil sont désactivés étant donné qu'ils ne fonctionnent toujours pas sur certains ordinateurs. Il existe trois modes de mise en sommeil ACPI et deux modes APM :

Suspend to Disk (ACPI S4, APM suspend)

Enregistre le contenu entier de la mémoire sur le disque dur. L'ordinateur s'arrête complètement et n'utilise pas de courant.

Suspend to RAM (ACPI S3, APM suspend)

Enregistre l'état de tous les appareils dans la mémoire principale. Il n'y a plus que la mémoire principale qui soit alimentée en courant.

Standby (ACPI S1, APM standby)

Arrête, selon le fabricant, quelques appareils.

Assurez-vous que les options par défaut suivantes sont correctement définies dans le fichier /etc/sysconfig/powersave/events pour un bon fonctionnement de la mise en veille, la mise en attente et de la reprise (paramètres par défaut après l'installation 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. États de la batterie définis par l'utilisateur

Dans le fichier /etc/sysconfig/powersave/battery, vous pouvez définir trois niveaux de charge de la batterie (en pourcentage). Lorsque ces niveaux sont atteints, le système envoie un message d'avertissement ou exécute des opérations déterminées.

POWERSAVED_BATTERY_WARNING=20
POWERSAVED_BATTERY_LOW=10
POWERSAVED_BATTERY_CRITICAL=5

Les opérations ou scripts à exécuter lorsque la charge de la batterie descend en dessous d'un seuil donné sont définis dans le fichier de configuration /etc/sysconfig/powersave/events. Vous pouvez modifier les actions standard pour les boutons tel que décrit dans Section 16.5.1, « Configuration du paquetage powersave ».

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. Ajustement de la consommation d'énergie dans différentes conditions de travail.

Il est possible de faire dépendre le comportement du système de son alimentation électrique. Ainsi, la consommation du système devrait être réduite lorsque le système est déconnecté du réseau électrique et fonctionne sur batterie. Inversement, les performances du système devraient automatiquement revenir à un niveau élevé dès que le système est reconnecté au réseau électrique. La fréquence du processeur, la fonction d'économie d'énergie des disques durs IDE ainsi que quelques autres paramètres peuvent être modifiés.

Lors d'une connexion au réseau électrique ou de la déconnexion, l'exécution de certaines actions bien définies est spécifiée dans /etc/sysconfig/powersave/events. Définissez les profils à appliquer dans le fichier /etc/sysconfig/powersave/common :

POWERSAVE_AC_SCHEME="performance"
POWERSAVE_BATTERY_SCHEME="powersave"

Chaque profil est stocké dans un fichier lui correspondant, dans le répertoire /etc/sysconfig/powersave. Les noms de fichiers sont constitués de la manière suivante : scheme_nom du profil. Dans l'exemple ci-dessus, deux profils sont référencés : scheme_performance et scheme_powersave. Les profils performance, powersave, presentation et acoustic sont livrés pré-configurés. Vous pouvez à tout moment, au moyen du module de gestion de l'énergie de YaST (voir Section 16.6, « Le module de gestion d'énergie de YaST »), mettre en place de nouveaux profils, modifier ou supprimer des profils existants ou modifier leur affectation aux états d'alimentation électrique.

16.5.3. Autres fonctionnalités d'ACPI

Si vous êtes amené à utiliser ACPI, vous pouvez contrôler la réaction de votre système aux boutons ACPI (power, sleep, et écran ouvert, écran fermé). L'exécution des opérations correspondantes est définie dans le fichier /etc/sysconfig/powersave/events. Pour plus d'informations sur chacune des options, veuillez vous référer à ce fichier de configuration.

POWERSAVE_EVENT_BUTTON_POWER="wm_shutdown"

Si vous appuyez sur le bouton power, le système provoque l'extinction du gestionnaire de fenêtres (KDE, GNOME, fvwm, etc.).

POWERSAVE_EVENT_BUTTON_SLEEP="suspend_to_disk"

Si vous appuyez sur le bouton sleep, le système passe en mode veille sur disque.

POWERSAVE_EVENT_BUTTON_LID_OPEN="ignore"

L'ouverture de l'écran ne déclenche aucune action.

POWERSAVE_EVENT_BUTTON_LID_CLOSED="screen_saver"

L'économiseur d'écran est activé quand l'écran est rabattu.

Si, pendant une certaine durée, le processeur n'est pas utilisé au delà d'une certain proportion, vous pouvez réduire son activité en conséquence. Définissez le niveau en dessous duquel, dans la variable POWERSAVED_CPU_LOW_LIMIT, et le délai au delà duquel, dans la variable POWERSAVED_CPU_IDLE_TIMEOUT, l'activité du processeur est réduite.

16.5.4. Problèmes possibles et solutions

On trouve un enregistrement de chaque erreur et de chaque message d'avertissement dans le fichier /var/log/messages. Si vous ne trouvez à première vue aucune indication, affectez DEBUG dans le fichier /etc/sysconfig/powersave/common de façon à obtenir des messages plus détaillés. Puis incrémentez la valeur de cette variable à 7 ou même à 15 et relancez le démon. Grâce aux messages d'erreur désormais plus détaillés disponibles dans le fichier /var/log/messages, vous devriez être en mesure de cerner le problème. Les questions et réponses suivantes couvrent les problèmes rencontrés le plus fréquemment avec powersave.

16.5.4.1. ACPI activé avec prise en charge matérielle mais fonctionnalités non disponibles

Si vous avez des problèmes avec l'ACPI, utilisez la commande suivante pour rechercher des messages spécifiques à l'ACPI parmi les résultats de dmesg : dmesg|grep -i acpi. Pour résoudre ce problème, une mise à jour du BIOS peut s'avérer nécessaire. Consultez la page d'accueil du fabricant de votre ordinateur portable, recherchez-y une version actualisée du BIOS et installez-la sur votre système. Indiquez au fabricant de votre ordinateur qu'il doit se conformer aux dernières spécifications ACPI. Si les mêmes problèmes surviennent encore après la mise à jour du BIOS, recherchez dans les sites web suivants la dernière version de la table DSDT correspondant à votre système et remplacez dans votre BIOS la table DSDT erronée :

  1. Téléchargez la DSDT correspondant à votre système à l'adresse http://acpi.sourceforge.net/dsdt/tables. Assurez-vous que le fichier est décompressé et compilé ; vous pouvez le vérifier avec l'extension de fichier en .aml (ACPI Machine Language). Si tel est bien le cas, vous pouvez passer à la troisième étape.

  2. Si la table que vous avez téléchargée a pour extension de fichier .asl (ACPI Source Language), elle doit être compilée avec l'application iasl du paquetage pmtools. Exécutez à cette fin, la commande iasl -sa fichier.asl. La version la plus récente d'iasl (compilateur Intel ACPI) est par ailleurs disponible à l'adresse http://developer.intel.com/technology/iapc/acpi/downloads.htm.

  3. Copiez le fichier DSDT.aml à l'emplacement qui vous convient (nous conseillons l'emplacement /etc/DSDT.aml). Éditez /etc/sysconfig/kernel et renseignez le chemin d'accès au fichier DSDT avec la valeur correspondante. Lancez mkinitrd (paquetage mkinitrd). Dès que vous désinstallerez votre noyau et que vous construirez un initrd à l'aide de mkinitrd, la nouvelle table DSDT sera intégrée et chargée au démarrage.

16.5.4.2. CPU Frequency ne fonctionne pas

Vérifiez, en vous basant sur les sources du noyau (kernel-source), si votre processeur est bien pris en charge et si vous devez éventuellement utiliser un module noyau spécifique, ou une option de module particulière, pour activer le contrôle de la fréquence du processeur. Ces informations sont disponibles dans les fichiers /usr/src/linux/Documentation/cpu-freq/*. Lorsqu'un module ou une option particuliers sont requis, vous devez configurer les variables CPUFREQD_MODULE et CPUFREQD_MODULE_OPTS dans le fichier /etc/sysconfig/powersave/cpufreq.

16.5.4.3. La mise en veille et en attente (Suspend/Standby) ne fonctionnent pas

Il existe plusieurs problèmes connus, liés au noyau, qui empêchent l'utilisation de la mise en veille ou en attente (Suspend/Standby) sur des systèmes ACPI :

  • Actuellement, les systèmes dotés de plus d'1 Go de RAM ne permettent pas (encore) d'utiliser la mise en veille (Suspend).

  • Les systèmes multi-processeurs ou basés sur le processeur P4 (avec hyperthreading) ne permettent pas, pour le moment, d'utiliser la mise en veille (Suspend).

Le problème peut également venir d'une implémentation défectueuse de votre DSDT (BIOS). Dans ce cas, importez une nouvelle DSDT.

Sur des systèmes ACPI et APM, s'applique ce qui suit : dès que votre système cherche à décharger des modules défectueux, l'ordinateur se bloque et l'événement de mise en veille n'est pas déclenché. Le processus inverse est également possible, si vous ne déchargez ou ne stoppez pas des modules/services qui empêchent Suspend de se réaliser. Dans les deux cas, vous devrez tenter de localiser les modules posant problème. Les fichiers de journalisation créés par le démon powersave dans /var/log/mode sommeil sont très utiles. Si l'ordinateur ne passe pas du tout en mode sommeil, il faut en rechercher la cause dans le dernier module déchargé. Vous pouvez décharger les modules problématiques avant la mise en veille ou en attente en manipulant les paramètres suivants dans le fichier /etc/sysconfig/powersave/sleep :

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 vous utilisez la mise en veille ou en attente dans différents environnements de réseau ou en connexion avec des systèmes de fichiers montés distants, tels que Samba et NIS, préférez alors automounter pour monter ceux-ci ou entrez les services correspondants (par exemple, smbfs ou nfs) dans la variable citée ci-dessus. Lorsqu'un programme accède à un système de fichiers monté distant 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 vraiment libéré. Après la reprise du système, le système de fichiers peut être corrompu et devoir être monté à nouveau.

16.5.4.4. Utilisant ACPI, le démon Powersave ne reconnaît pas le seuil de charge de la batterie

Dans le cadre d'ACPI, le système de gestion de l'énergie peut demander au BIOS d'envoyer un message lorsqu'un seuil de charge de la batterie est franchi. L'avantage de cette méthode est qu'il n'est pas indispensable de lire en permanence l'état de charge de la batterie, ce qui réduirait les performances de l'ordinateur. Toutefois, il peut arriver que ce processus d'alerte en provenance du BIOS, qui devrait certes fonctionner, ne se déclenche en fait jamais, même en cas de franchissement de la limite de charge. Si vous observez un tel comportement sur votre système, attribuez la valeur yes à la variable POWERSAVED_FORCE_BATTERY_POLLING dans le fichier /etc/sysconfig/powersave/battery afin de forcer la lecture de l'état de la batterie.


SUSE LINUX Guide de l'administrateur 9.2