Guide de la gestion de l'alimentation
1.
Introduction
La capacité et la durée de vie des batteries des portables se sont améliorées
considérablement pendant les dernières années. Toutefois, les processeurs
d'aujourd'hui consomment bien plus d'énergie que leurs prédécesseurs et chaque
génération de portables introduit de nouveaux composants énergivores. C'est
pourquoi la gestion de l'alimentation est plus importante que jamais. Améliorer
l'autonomie ne signifie pas nécessairement acheter une deuxième batterie ;
l'utilisation de politiques logicielles intelligentes a un impact
considérable.
Vue d'ensemble
Veuillez noter que ce guide s'intéresse à la gestion de l'alimentation pour les
portables. Même si certaines sections peuvent peut-être s'appliquer aux
serveurs, d'autres ne s'y appliquent pas et peuvent même être nuisibles.
N'essayez pas de mettre en pratique les conseils de ce guide avec un serveur, à
moins que vous ne sachiez vraiment ce que vous faites.
Dans sa version actuelle, ce guide est plutôt long. Le paragraphe suivant
résume son contenu afin de vous aider à y trouver ce que vous chercher.
Le chapitre sur les prérequis vous informe des
actions qui doivent être entreprises avant de pouvoir utiliser les conseils
relatifs à des composants particuliers présentés dans les autres sections. Cela
inclut la configuration du BIOS et du noyau ainsi que des idées pour simplifier
la gestion du côté utilisateur. Les trois chapitres suivants se concentrent sur
les composants qui, typiquement, consomment le plus d'énergie : le
processeur, l'écran et le disque dur. Chacun d'eux peut être paramétré
indépendamment. Le chapitre Gestion de l'alimentation
pour l'unité centrale décrit comment ajuster la fréquence du processeur
afin de maximiser l'économie d'énergie sans sacrifier les performances. Vous
apprendrez comment éviter que votre disque dur ne consomme de l'énergie pour un
travail inutile dans le chapitre Gestion de
l'alimentation pour le disque dur (un effet secondaire agréable est la
réduction du niveau de bruit de votre machine). Quelques notes sur les cartes
réseau sans fil et les périphériques USB (dans le chapitre Gestion de l'alimentation pour les autres composants)
terminent la section dédiée à des composants spécifiques. Le chapitre qui suit
s'intéresse aux états de veille (mais leur support
est expérimental). Pour conclure, le chapitre Résolution
des problèmes dresse une liste des pièges à éviter.
Budget énergétique des composants
Figure 1.1 : Budget énergétique des composants |
 |
Presque tous les composants peuvent opérer dans différents états (hors
tension, en veille, inactif, etc.) ; leur consommation d'énergie variera
selon cet état. Les composants les plus gourmands sont l'écran à cristaux
liquides, l'unité centrale, le jeu de composants de la carte-mère et le disque
dur. Il est parfois possible, grâce au BIOS, d'activer une politique de gestion
de l'alimentation indépendante du système d'exploitation. Toutefois, une
gestion intelligente de l'alimentation par le système d'exploitation est
beaucoup plus efficace et s'adapte plus aisément à une variété de situations.
2.
Prérequis
Avant de s'intéresser à la gestion de l'alimentation pour des composants
particuliers, vous devez vous assurer que votre système remplisse certaines
conditions. Après la configuration du BIOS, quelques options du noyau devront
être activées (en bref, ce sont l'ACPI, les états de veille et l'échelonnage de
la fréquence de l'unité centrale (en anglais « CPU frequency
scaling »)). Puisque les économies d'énergie sont habituellement
accompagnées de baisses de performances, il faut s'assurer de n'activer cette
gestion que lorsque le portable utilise la batterie. C'est ici qu'un nouveau
niveau d'exécution nommé battery se révélera fort utile.
Préparer le BIOS
Jetez d'abord un coup d'œil aux paramètres de gestion de l'alimentation de votre
BIOS. L'idéal serait de combiner les capacités du BIOS et du système
d'exploitation, mais, pour l'instant, il est préférable de désactiver la gestion
de l'alimentation par le BIOS. Cela nous assure que les politiques de ce dernier
n'interfèreront pas avec celles du système d'exploitation. N'oubliez pas de
vérifier à nouveau les paramètres du BIOS une fois que vous aurez configuré
tout le reste.
Régler les paramètres USE
Veuillez vérifier que le paramètre USE acpi soit bien activé dans
/etc/make.conf. Les paramètres apm, lm_sensors,
nforce2, nvidia et pmu peuvent également être intéressants
pour votre système. Consultez /usr/portage/profiles/use*.desc pour
plus d'informations. Si vous oubliez d'activer un de ces paramètres, vous
pourrez recompiler les paquets qui l'utilisent grâce à l'option --newuse
de la commande emerge (voir man emerge).
Configurer le noyau
Le support pour l'ACPI (sigle anglais pour « Advanced Configuration and
Power Interface ») dans le noyau Linux est actuellement en cours de
développement. Utiliser un noyau récent vous assurera le meilleur support
possible.
Parmi les différentes sources du noyau Linux proposées par Portage, je vous
conseillerais d'utiliser les gentoo-sources ou les
tuxonice-sources. Ce dernier paquet contient les correctifs pour
TuxOnIce (voyez le chapitre qui parle des états
de veille pour en savoir plus). Lorsque vous configurerez votre noyau,
activez au moins ces options :
Exemple de code 2.1 : Configuration minimale du noyau pour la gestion de l'alimentation (noyau 2.6) |
Power management and ACPI options --->
[*] Power Management support
[ ] Software Suspend
ACPI( Advanced Configuration and Power Interface ) Support --->
[ ] Deprecated /proc/acpi/ files
[*] AC Adapter
[*] Battery
<M> Button
<M> Video
[ ] Generic Hotkey
<M> Fan
<M> Processor
<M> Thermal Zone
< > ASUS/Medion Laptop Extras
< > IBM ThinkPad Laptop Extras
< > Toshiba Laptop Extras
(0) Disable ACPI for systems before Jan 1st this year
[ ] Debug Statements
[*] Power Management Timer Support
< > ACPI0004,PNP0A05 and PNP0A06 Container Driver (EXPERIMENTAL)
CPU Frequency Scaling --->
[*] CPU Frequency scaling
[ ] Enable CPUfreq debugging
< > CPU frequency translation statistics
[ ] CPU frequency translation statistics details
Default CPUFreq governor (userspace)
<*> 'performance' governor
<*> 'powersave' governor
<*> 'ondemand' cpufreq policy governor
<*> 'conservative' cpufreq governor
<*> CPU frequency table helpers
<M> ACPI Processor P-States driver
<*> Pilote CPUFreq approprié pour votre processeur
|
Décidez vous-même si vous souhaitez activer les options « Software
Suspend » et « Sleep States » (voyez ci-dessous). Si vous
possédez un portable de marque ASUS, Medion, IBM Thinkpad ou Toshiba, activez
l'option appropriée.
Vous devez indiquer au noyau comment activer l'échelonnage de la fréquence
pour votre unité centrale. Puisque chaque type de processeur a une interface
différente, il importe de choisir le pilote approprié pour votre processeur.
Assurez-vous de ne pas vous tromper ! Activer l'option Intel Pentium 4
clock modulation sur un système équipé d'un Pentium M, par exemple, cause
des comportements étranges. Consultez la documentation du noyau si vous êtes
dans le doute.
Compilez votre noyau, assurez-vous que les modules appropriés seront chargés
lors du démarrage et amorcez votre nouveau noyau avec support ACPI. Ensuite,
exécutez emerge sys-power/acpid pour installer le démon acpi. Ce dernier
vous informe des événements tels que le changement de la source du courant
lorsque l'adaptateur est branché ou débranché, ou encore la fermeture du
boîtier du portable. Assurez-vous que les modules soient chargés (si vous ne les
avez pas compilé dans le noyau) et lancez acpid avec la commande
/etc/init.d/acpid start. Exécutez rc-update add acpid default
pour qu'il soit lancé lors du démarrage. Vous verrez bientôt comment
l'utiliser.
Exemple de code 2.2 : Installer acpid |
# emerge sys-power/acpid
# /etc/init.d/acpid start
# rc-update add acpid default
|
Créer le niveau d'exécution battery
La politique par défaut est d'activer la gestion de l'alimentation seulement
lorsque cela est nécessaire : lorsque vous utilisez la batterie. Pour
simplifier la gestion du changement entre l'adaptateur et la batterie, créez un
niveau d'exécution nommé battery qui contiendra des références à tous les
scripts servant à démarrer et arrêter la gestion de l'alimentation.
Note :
Vous pouvez ignorer cette section en toute sécurité si vous n'aimez pas l'idée
de créer un autre niveau d'exécution. Toutefois, les étapes subséquentes
deviendront plus complexes, car les sections qui suivent supposent qu'il
existe un niveau d'exécution battery.
|
Exemple de code 2.3 : Créer le niveau d'exécution battery |
# cd /etc/runlevels
# cp -a default battery
|
C'est terminé. Votre nouveau niveau d'exécution battery contient tout ce
que default contient, mais il n'existe pas encore de mécanisme pour
passer de l'un à l'autre. Nous allons maintenant remédier à cela.
Réagir aux événements ACPI
Des événements ACPI typiques sont la fermeture du boîtier, le branchement ou le
débranchement de l'adaptateur et la pression du bouton de mise en veille. Les
changements de la source de l'alimentation sont des événements
particulièrement importants et le système devrait y réagir en changeant le
niveau d'exécution. Un petit script se chargera de cela.
Vous devez donc d'abord obtenir ce script qui passera du niveau d'exécution
default à battery selon l'état de votre source d'alimentation. Le
script utilise la commande on_ac_power du paquet
sys-power/powermgmt-base. Ce paquet doit être installé sur votre système.
Exemple de code 2.4 : Installer powermgmt-base |
# emerge powermgmt-base
|
Vous pouvez maintenant connaître votre source d'alimentation en tapant
on_ac_power && echo "Alimentation externe" || echo "Batteries"
dans un shell. Le script ci-dessous se chargera de changer de niveau
d'exécution. Sauvez-le sous le nom
/etc/acpi/actions/pmg_switch_runlevel.sh.
Exemple de code 2.5 : /etc/acpi/actions/pmg_switch_runlevel.sh |
#!/bin/bash
RUNLEVEL_AC="default"
RUNLEVEL_BATTERY="battery"
if [ ! -d "/etc/runlevels/${RUNLEVEL_AC}" ]
then
logger "${0}: Runlevel ${RUNLEVEL_AC} does not exist. Aborting."
exit 1
fi
if [ ! -d "/etc/runlevels/${RUNLEVEL_BATTERY}" ]
then
logger "${0}: Runlevel ${RUNLEVEL_BATTERY} does not exist. Aborting."
exit 1
fi
if on_ac_power
then
if [[ "$(</var/lib/init.d/softlevel)" != "${RUNLEVEL_AC}" ]]
then
logger "Switching to ${RUNLEVEL_AC} runlevel"
/sbin/rc ${RUNLEVEL_AC}
fi
elif [[ "$(</var/lib/init.d/softlevel)" != "${RUNLEVEL_BATTERY}" ]]
then
logger "Switching to ${RUNLEVEL_BATTERY} runlevel"
/sbin/rc ${RUNLEVEL_BATTERY}
fi
|
N'oubliez pas de faire un chmod +x
/etc/acpi/actions/pmg_switch_runlevel.sh pour que le script soit exécutable.
La dernière chose qu'il reste à faire est de lancer le script lorsque la source
d'alimentation change. Ceci est accompli par l'interception des événements ACPI
grâce à acpid. Vous devez d'abord savoir quels événements sont générés
lorsque la source d'alimentation change. Les événements sont appelés
ac_adapter et battery sur la plupart des ordinateurs portables,
mais cela peut-être différent sur le vôtre.
Exemple de code 2.6 : Trouver les événements ACPI envoyés lors du changement de source d'alimentation |
# tail -f /var/log/messages | grep "received event"
|
Lancez la commande ci-dessus et enlever le câble d'alimentation. Vous devriez
voir quelque chose comme ceci :
Exemple de code 2.7 : Exemple d'affichage pour le changement d'alimentation |
[Tue Sep 20 17:39:06 2005] received event "ac_adapter AC 00000080 00000000"
[Tue Sep 20 17:39:06 2005] received event "battery BAT0 00000080 00000001"
|
La partie intéressante est celle entre guillemets, après received event.
Elle sera mise en correspondance avec la ligne « event » dans le
fichier que l'on créera plus bas. Ne vous inquiétez pas si votre système génère
des événements multiples ou toujours les mêmes événements. Du moment qu'un
événement est généré, le changement de niveau d'exécution fonctionnera.
Exemple de code 2.8 : /etc/acpi/events/pmg_ac_adapter |
event=ac_adapter.*
action=/etc/acpi/actions/pmg_switch_runlevel.sh %e
|
Exemple de code 2.9 : /etc/acpi/events/pmg_battery |
event=battery.*
action=/etc/acpi/actions/pmg_switch_runlevel.sh %e
|
Enfin, acpid doit être redémarré pour prendre en compte les modifications de
configuration.
Exemple de code 2.10 : Terminer la configuration des niveaux d'exécution avec acpid |
# /etc/init.d/acpid restart
|
Faites un essai : branchez et débranchez l'adaptateur et consultez les
messages de syslog. Vous devriez y voir « Switching to AC mode » et
« Switching to battery mode ». Consultez la section Résolution des problèmes si le script n'arrive pas à
détecter correctement la source d'alimentation.
À cause de la nature du mécanisme de gestion des événements, votre portable
démarrera toujours avec le niveau default quel que soit l'état réel de
l'adaptateur. Cela ne pose pas de problème si nous utilisons l'alimentation
secteur, mais nous voudrions démarrer en niveau d'exécution battery de
temps en temps. Une solution serait d'ajouter à votre chargeur de démarrage une
nouvelle entrée contenant softlevel=battery, mais il y a une meilleure
façon de faire : il est possible de simuler un événement acpi à la fin du
processus de démarrage et de laisser le script /etc/acpi/default.sh
décider si un changement de niveau d'exécution est nécessaire. Ouvrez
/etc/conf.d/local.start dans votre éditeur favori et ajoutez ces
lignes :
Exemple de code 2.11 : Éditer local.start pour implémenter le changement de niveau d'exécution lors du démarrage |
/etc/acpi/actions/pmg_switch_runlevel.sh "battery/battery"
|
Vous êtes maintenant prêt à activer les politiques individuelles de gestion de
l'alimentation pour chaque composant.
3.
Gestion de l'alimentation pour l'unité centrale
Les processeurs dits « mobiles » peuvent opérer à différentes
fréquences d'horloge. Certains permettent même la modification de la tension
d'alimentation. La plupart du temps, votre processeur n'a pas besoin de tourner
à la vitesse maximale, on peut ainsi ralentir la cadence et largement réduire la
puissance consommée, ceci sans perte de performance.
Quelques termes techniques
Discuter de l'échelonnage de la fréquence des processeurs implique l'emploi de
certains termes techniques avec lesquels vous n'êtes peut-être pas familier.
Voici une brève explication.
D'abord, le noyau doit pouvoir changer la fréquence du microprocesseur. Un
pilote CPUfreq pour le processeur (en anglais « CPUfreq processor
driver ») connaît la commande qui permet de faire ce changement avec un
processeur particulier. Il est donc important que vous choisissiez le pilote
approprié, c'est-à-dire celui qui correspond à votre processeur. Vous devriez
déjà avoir fait ce choix un peu plus tôt. Une fois que le noyau sait comment
changer la fréquence, il doit savoir à quelle fréquence il doit régler le
processeur. Cela se fait d'après les règles d'une politique à deux
composants : la politique CPUfreq (« CPUfreq policy »)
et le gouverneur (« governor »). La politique CPUfreq n'est en
fait que deux nombres qui définissent un intervalle à l'intérieur duquel la
fréquence doit rester ; il y a une fréquence maximale et une fréquence
minimale. Le gouverneur, lui, décide laquelle des fréquences disponibles entre
les fréquences minimale et maximale doit être choisie. Par exemple, le
gouverneur powersave choisit toujours la fréquence disponible la plus
basse, alors que le gouverneur performance choisit la plus élevée. Le
gouverneur userspace, enfin, ne prend aucune décision. Il laisse plutôt
l'utilisateur (ou un programme utilisateur) décider de la fréquence à utiliser
et se contente de mettre en œuvre cette décision. Ce gouverneur lit la fréquence
choisie à partir du fichier
/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed.
Vous trouvez peut-être que cela ne ressemble toujours pas à des changements
dynamiques de la fréquence, et vous avez raison. Ces changements dynamiques
peuvent être implémentés de différentes façons. Par exemple, le gouverneur
ondemand prend ses décisions en fonction de la charge actuelle du
processeur. La même chose peut être réalisée avec des outils utilisateurs tels
que cpudyn, cpufreqd, powernowd et plusieurs autres. Les
événements ACPI peuvent être utilisés pour activer ou désactiver les
changements dynamiques de la fréquence en fonction de la source de
l'alimentation.
Ajuster la fréquence
Diminuer la vitesse et le voltage du processeur réduit à la fois la
consommation d'énergie et le dégagement de chaleur (votre portable ne deviendra
donc pas aussi chaud que lorsque vous l'utilisez à pleine puissance). Le
principal désavantage est évidemment une diminution des performances. Réduire
la vitesse du processeur revient à tronquer les performances contre des gains
énergétiques.
Note :
Tous les portables ne supportent pas l'échelonnage de la fréquence. Pour être
sûr, consultez la liste des processeurs supportés dans la section Résolution des problèmes.
|
Il est temps de vérifier si l'échelonnage de la fréquence fonctionne. Installons
un autre outil : sys-power/cpufrequtils.
Exemple de code 3.1 : Vérifier la fréquence du processeur |
# emerge cpufrequtils
# cpufreq-info
|
Voici un exemple :
Exemple de code 3.2 : Exemple de ce que peut renvoyer cpufreq-info |
cpufrequtils 0.3: cpufreq-info (C) Dominik Brodowski 2004
Report errors and bugs to linux@brodo.de, please.
analyzing CPU 0:
driver: centrino
CPUs which need to switch frequency at the same time: 0
hardware limits: 600 MHz - 1.40 GHz
available frequency steps: 600 MHz, 800 MHz, 1000 MHz, 1.20 GHz, 1.40 GHz
available cpufreq governors: conservative, ondemand, powersave, userspace, performance
current policy: frequency should be within 924 MHz and 1.40 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 1.40 GHz.
|
Maintenant, testez cpufreq-set pour être sûr que le changement de
fréquence fonctionne. Par exemple, lancez cpufreq-set -g ondemand pour
activer le gouverneur ondemand et vérifiez le changement avec
cpufreq-info. Si cela ne marche pas comme prévu, vous pouvez chercher de
l'aide dans la section « Résolution des
problèmes ».
cpufrequtils peut fonctionner en mode automatique (si vous utilisez le
gouverneur ondemand), vous pouvez alors basculer sur le gouverneur
userspace pour définir manuellement une vitesse spécifique. Vous pouvez
aussi paramétrer votre processeur pour qu'il utilise sa plus haute ou sa plus
basse fréquence possible en utilisant respectivement les gouverneurs
performance et powersave.
Exemple de code 3.3 : Changement des vitesses du processeur |
# cpufreq-set -g performance
# cpufreq-set -g powersave
# cpufreq-set -g userspace
# cpufreq-set -f 2.00ghz
|
Autres utilitaires de gestion de la vitesse du processeur
Si cpufrequtils est sans doute le meilleur programme pour tout gérer, il
existe d'autres choix disponibles dans Portage. Le tableau suivant donne un
aperçu rapide des utilitaires disponibles pour gérer la vitesse du processeur.
Ceux-ci sont grossièrement catégorisés en trois, à savoir les programmes de
type noyau qui ne nécessitent que le support noyau, les programmes de
type démon qui s'exécutent en arrière-plan et les programmes
graphiques qui proprosent une interface graphique pour faciliter les
modifications et la configuration.
| Nom |
Catégorie |
Commutateur des décisions |
Gouverneurs du noyau |
Autres gouverneurs |
Commentaires |
| Gouverneur « ondemand » |
Noyau |
Charge de l'unité centrale |
Ne s'applique pas |
Ne s'applique pas |
Choisit une fréquence CPU maximale lorsque le système est chargé et la
redescend progressivement lorsque le système est inactif. Peut être
paramétré grâce aux options contenues dans :
/sys/devices/system/cpu/cpu0/cpufreq/ondemand/. Requiert tout
de même des outils utilisateurs (programmes et scripts) si l'on souhaite
utiliser le changement de gouverneur ou des fonctionnalités similaires.
|
| Gouverneur « conservative » |
Noyau |
Charge de l'unité centrale |
Ne s'applique pas |
Ne s'applique pas |
À la différence du gouverneur ondemand, le conservative ne
saute pas directement à la fréquence maximale lorsque le système est en
pleine charge, mais augmente celle-ci progressivement. On peut également le
paramétrer grâce aux fichiers situés dans
/sys/devices/system/cpu/cpu0/cpufreq/ondemand/. Il requiert
tout de même des outils (programmes, scripts) si vous désirez changer
automatiquement de gouverneur.
|
| cpudyn |
Démon |
Charge de l'unité centrale |
performance, powersave |
Dynamique |
Supporte également la mise en veille des disques. Toutefois, laptop
mode est plus efficace dans la plupart des cas.
|
| cpufreqd |
Démon |
État de la batterie, charge de l'unité centrale, température, programmes
exécutés et plus...
|
Tous disponibles |
Aucun |
Configuration sophistiquée (mais compliquée). Extensible grâce à des plugins
tels que la supervision de la température (lm_sensors) ou la coordination de
la mémoire et du cœur des cartes graphiques nVidia. Cpufreqd gère les
systèmes multiprocesseurs et peut éventuellement être contrôlé manuellement.
|
|
powernowd
|
Démon |
Charge de l'unité centrale |
Aucun |
« passive », « sine », « aggressive » |
Supporte SMP.
|
|
ncpufreqd
|
Démon |
Température |
Aucun |
« powersave », « performance » |
Bascule le gouverneur utilisé de performance à powersave selon
la température du système. Très utile sur les portables qui chauffent
beaucoup.
|
| speedfreq |
Démon |
Charge de l'unité centrale |
Aucun |
« dynamic », « powersave », « performance »,
« fixed speed »
|
Interface client/serveur pratique. Requiert un noyau de la
série 2.6. Non maintenu, dysfonctionnel et donc retiré de Portage. Veuillez
plutôt utiliser cpufreqd.
|
| gtk-cpuspeedy |
Graphique |
Aucun |
Aucun |
Aucun |
Un outil graphique GNOME permettant de régler manuellement la fréquence du
processeur. Il n'offre aucune possibilité d'automatisation.
|
| klaptopdaemon |
Graphique |
État de la batterie |
Tous disponibles |
Aucun |
KDE seulement. Le gouverneur « ondemand » est requis pour
l'échelonnage dynamique de la fréquence.
|
Bien qu'ajuster la fréquence semble simple à première vue, ce n'est pas une
tâche triviale. Un mauvais algorithme peut changer constamment la fréquence ou
gaspiller de l'énergie en choisissant une fréquence trop élevée.
Lequel choisir ? Si vous êtes embêté, essayez d'abord
cpufreqd :
Exemple de code 3.4 : Installer cpufreqd |
# emerge cpufreqd
|
cpufreqd se configure en éditant le fichier
/etc/cpufreqd.conf. Le fichier inclu par défaut dans le paquet peut
vous sembler déroutant. Je vous recommande de le remplacer par celui du
développeur Gentoo Hendrik Brix Andersen (voir ci-dessous). Veuillez notez qu'il
vous faut cpufreqd-2.0.0 ou supérieur car les versions précédentes n'ont pas la
même syntaxe de configuration.
Exemple de code 3.5 : /etc/cpufreqd.conf (pour cpufreqd-2.0.0 et supérieur) |
[General]
pidfile=/var/run/cpufreqd.pid
poll_interval=3
enable_plugins=acpi_ac,acpi_battery
enable_remote=1
remote_group=wheel
verbosity=5
[/General]
[Profile]
name=ondemand
minfreq=0%
maxfreq=100%
policy=ondemand
[/Profile]
[Profile]
name=conservative
minfreq=0%
maxfreq=100%
policy=conservative
[/Profile]
[Profile]
name=powersave
minfreq=0%
maxfreq=100%
policy=powersave
[/Profile]
[Profile]
name=performance
minfreq=0%
maxfreq=100%
policy=performance
[/Profile]
[Rule]
name=battery
ac=off
profile=conservative
[/Rule]
[Rule]
name=battery_low
ac=off
battery_interval=0-10
profile=powersave
[/Rule]
[Rule]
name=ac
ac=on
profile=ondemand
[/Rule]
|
Vous pouvez maintenant démarrer le démon cpufreqd. Ajoutez-le également aux
niveaux d'exécution default et battery.
Exemple de code 3.6 : Démarrer cpufreqd |
# rc-update add cpufreqd default battery
# /etc/init.d/cpufreqd start
|
Quelques fois, il est préférable de choisir une politique différente de celle
qu'a choisie le démon. Par exemple lorsque la batterie est faible mais que vous
savez que l'alimentation secteur sera bientôt disponible. Dans ce cas, vous
pouvez activer le mode manuel de cpufreqd avec la commande cpufreqd-set
manual et sélectionner la politique désirée (parmi celles listées par
cpufreqd-get). Vous pouvez quitter le mode manuel en tapant
cpufreqd-set dynamic.
Attention :
Ne lancez pas plus d'un de ces programmes simultanément. Votre ordinateur risque
de ne plus s'arrêter de changer de fréquence...
|
Vérifier les résultats
La dernière chose à faire est de vérifier si vos politiques fonctionnent
correctement. Vous pouvez le faire en surveillant la vitesse de l'unité
centrale pendant que vous travaillez avec votre portable.
Exemple de code 3.7 : Surveiller la vitesse du processeur |
# watch grep \"cpu MHz\" /proc/cpuinfo
|
Si /proc/cpuinfo n'est pas mis à jour (voir la « Résolution des problèmes »), surveillez votre
processeur avec sys-apps/x86info :
Exemple de code 3.8 : Méthode alternative pour surveiller la vitesse du processeur |
# watch x86info -mhz
|
Selon votre configuration, la vitesse de votre processeur devrait augmenter
lorsque la charge est élevée et diminuer (ou rester constante) lorsqu'il n'y a
pas d'activité. En utilisant cpufreqd au niveau 5 (ou plus) de verbosité
(à régler dans cpufreqd.conf), vous obtiendrez plus d'informations
dans syslog sur ce qui se passe.
4.
Gestion de l'alimentation pour l'écran à cristaux liquides
Comme vous pouvez le voir à la figure 1.1,
l'écran à cristaux liquides est le composant le plus énergivore. (Soulignons
que ce n'est pas nécessairement le cas pour les portables équipés de
processeurs qui ne sont pas de type mobile.) Il n'est donc pas seulement
important de fermer l'écran lorsque l'on ne s'en sert pas, mais il faut aussi
réduire la luminosité lorsque possible. La plupart des portables permettent de
contrôler la luminosité.
Réglage de la pause (standby)
La première chose à faire est de vérifier les délais de pause, de suspension et
de mise hors tension. Puisque cela dépend essentiellement de votre gestionnaire
de fenêtres, ce sera à vous de découvrir comment vous y prendre. Voici deux
façons de faire classiques. D'abord, les commandes
setterm -blank <nombre-de-minutesM>, setterm -powersave on
et setterm -powerdown <nombre-de-minutesM> permettent de gérer
l'extinction de l'écran. Ensuite, si vous utilisez Xorg, vous pouvez modifier
le fichier /etc/X11/xorg.conf pour y incorporer ce qui suit :
Exemple de code 4.1 : Extinction de l'écran avec Xorg |
Section "ServerFlags"
Option "blank time" "5"
Option "standby time" "10"
Option "suspend time" "20"
Option "off time" "30"
[...]
EndSection
[...]
Section "Monitor"
Identifier [...]
Option "DPMS"
[...]
EndSection
|
Réglage de la luminosité
Le réglage de la luminosité est probablement plus important encore. Si vous
pouvez modifier ce paramètre avec un outil logiciel, écrivez un script qui
réduit la luminosité lorsque la batterie est utilisée et ajoutez-le à votre
niveau d'exécution battery. Le script suivant devrait fonctionner sur la
plupart des portables IBM Thinkpad et Toshiba. Vous devrez activer l'option
appropriée dans votre noyau (pour les IBM Thinkpad) ou installer le paquet
sys-power/acpitool pour les Toshiba (dans ce cas, sautez la partie
configuration d'thinkpad_acpi, anciennement appelé ibm_acpi,
décrite plus bas).
Attention :
Le réglage de la luminosité est marqué comme expérimental dans thinkpad_acpi. Il
accède au matériel directement et peut causer de sérieux dommages à votre
système. Veuillez lire le site
de thinkpad_acpi.
|
Pour pouvoir régler la luminosité, le module thinkpad_acpi doit avoir été chargé
avec le paramètre experimental.
Exemple de code 4.2 : Charger automatiquement le module thinkpad_acpi |
# echo "options thinkpad_acpi experimental=1" >> /etc/modprobe.d/thinkpad_acpi
# update-modules
# echo thinkpad_acpi >> /etc/modules.autoload.d/kernel-2.6
# modprobe thinkpad_acpi
|
Cela devrait marcher sans message d'erreur et un fichier
/proc/acpi/ibm/brightness a dû être créé lors du chargement du
module. Un script d'initialisation s'occupera de choisir la bonne luminosité en
fonction de la source d'alimentation.
Exemple de code 4.3 : /etc/conf.d/lcd-brightness |
BRIGHTNESS_AC=7
BRIGHTNESS_BATTERY=4
|
Exemple de code 4.4 : /etc/init.d/lcd-brightness |
#!/sbin/runscript
set_brightness() {
if on_ac_power
then
LEVEL=${BRIGHTNESS_AC:-7}
else
LEVEL=${BRIGHTNESS_BATTERY:-4}
fi
if [ -f /proc/acpi/ibm/brightness ]
then
ebegin "Setting LCD brightness"
echo "level ${LEVEL}" > /proc/acpi/ibm/brightness
eend $?
elif [[ -e /usr/bin/acpitool && -n $(acpitool -T | grep "LCD brightness") ]]
then
ebegin "Setting LCD brightness"
acpitool -l $LEVEL >/dev/null || ewarn "Unable to set lcd brightness"
eend $?
else
ewarn "Setting LCD brightness is not supported."
ewarn "For IBM Thinkpads, check that thinkpad_acpi is loaded into the kernel"
ewarn "For Toshiba laptops, you've got to install sys-power/acpitool"
fi
}
start() {
set_brightness
}
stop () {
set_brightness
}
|
Ensuite, activez l'ajustement automatique de la luminosité en ajoutant ce script
au niveau d'exécution « battery ».
Exemple de code 4.5 : Activer le réglage automatique de la luminosité |
# chmod +x /etc/init.d/lcd-brightness
# rc-update add lcd-brightness battery
# rc
|
5.
Gestion de l'alimentation pour le disque dur
Les disques durs consomment moins d'énergie en mode sommeil. Il est donc logique
d'activer la fonctionnalité d'économie d'énergie lorsque le disque dur n'est pas
utilisé depuis un certain temps. Je vous montrerai deux possibilités
alternatives pour cela. Tout d'abord, le laptop-mode économisera la plupart de
l'énergie grâce à plusieurs mesures qui empêchent ou retardent l'écriture sur le
disque. L'inconvénient de cette technique est que, en cas de coupure électrique
ou de crash du noyau, des données seront perdues car non encore écrites sur le
disque. Si cela ne vous convient pas, assurez-vous qu'aucun processus n'écrit
fréquemment sur le disque. La deuxième alternative est la possibilité d'activer
l'économie d'énergie de votre disque dur via hdparm.
Augmenter le temps d'inactivité avec laptop-mode
Les noyaux 2.6 récents supportent ce que l'on appelle laptop-mode.
Lorsque ce mode est activé, le contenu des tampons n'est écrit sur le disque
qu'après 10 minutes (plutôt que 30 secondes) ou sur demande (lors des demandes
de lecture sur le disque). Cela minimise le temps pendant lequel le disque dur
doit être actif.
Exemple de code 5.1 : Démarrage automatique du laptop-mode |
# emerge laptop-mode-tools
|
Le fichier /etc/laptop-mode/laptop-mode.conf permet de configurer
laptop-mode-tools. Ajustez les options en suivant les instructions
incluses dans le fichier. Lancez rc-update add laptop_mode battery
pour qu'il démarre automatiquement.
Les versions récentes (à partir de 1.11) de laptop-mode-tools incluent un nouvel
outil lm-profiler. Il supervisera l'utilisation du disque et les services
réseaux de votre système puis vous suggèrera de désactiver ceux qui ne sont pas
utilisés. Vous pourrez alors les désactiver via le support intégré des niveaux
d'exécution de laptop-mode-tools ou en utilisant vos niveaux
default et battery (recommandé).
Exemple de code 5.2 : Exemple d'exécution de lm-profiler |
# lm-profiler
Profiling session started.
Time remaining: 600 seconds
[4296896.602000] amarokapp
Time remaining: 599 seconds
[4296897.714000] sort
[4296897.970000] mv
Time remaining: 598 seconds
Time remaining: 597 seconds
[4296900.482000] reiserfs/0
|
Au bout de dix minutes, lm-profiler aura établi un profil de votre système qui
lui permettra de vous lister les services qui ont causé des accès disques
pendant cette période.
Exemple de code 5.3 : lm-profiler suggère la désactivation de services |
Program: "atd"
Reason: standard recommendation (program may not be running)
Init script: /etc/init.d/atd (GUESSED)
Do you want to disable this service in battery mode? [y/N]: n
|
Pour désactiver atd, comme suggéré dans l'exemple ci-dessus, lancez rc-update
del atd battery. Faites attention à ne pas désactiver des services
nécessaires au fonctionnement de votre système ; il est probable que
lm-profiler vous renverra des faux-positifs. Ne désactivez pas un service
si vous ne savez pas à quoi il sert.
Limiter les accès en écriture
Si vous ne voulez pas utiliser le laptop-mode, vous devez prendre soin de
désactiver tous les services qui écrivent régulièrement sur le disque :
syslog est un bon candidat par exemple. Vous ne voudrez peut-être pas le
couper complètement mais vous pouvez modifier sa configuration pour ne pas
journaliser d'événements superflus, ce qui diminuera le trafic vers votre disque
dur. Cups aussi écrit sur le disque régulièrement, nous vous recommandons
de le désactiver et de ne l'activer manuellement que lorsque vous en avez
besoin.
Exemple de code 5.4 : Désactiver cups en mode battery |
# rc-update del cupsd battery
|
Vous pouvez aussi utiliser lm-profiler contenu dans le paquet
laptop-mode-tools (voir plus haut) pour trouver les services à désactiver. Une
fois que vous les aurez tous éliminés, continuez avec la configuration de
hdparm.
hdparm
La deuxième méthode utilise hdparm. Sautez cette étape si vous utiliser
laptop-mode. Sinon, éditez le fichier /etc/conf.d/hdparm et
ajoutez-y les valeurs suivantes pour vos disques. Cet exemple présume que votre
disque dur se nomme hda :
Exemple de code 5.5 : Utiliser /etc/conf.d/hdparm pour la mise en veille des disques |
hda_args="-q -S12"
|
Cela activera la gestion d'énergie de votre disque dur. Si vous vouliez un jour la désactiver, éditez /etc/conf.d/hdparm et changez les valeurs pour -q -S0 (ou exécutez hdparm -q -S0 /dev/hda).
Voir man hdparm pour les options. Bien que vous puissiez démarrer le
service hdparm manuellement lorsque vous passez en mode batterie en lançant
/etc/init.d/hdparm start, il est bien plus commode d'automatiser son
démarrage et son arrêt. Pour ce faire, ajoutez hdparm au niveau
d'exécution battery.
Exemple de code 5.6 : Automatiser la mise en veille des disques |
# rc-update add hdparm battery
|
Important :
Soyez précautionneux lorsque vous décidez des délais pour l'arrêt de votre
disque dur. Utiliser des temps très courts pourrait user votre disque et
invalider votre garantie.
|
Quelques trucs
Une autre possibilité est de désactiver la mémoire virtuelle en mode batterie.
Avant d'écrire un script pour exécuter swapon/swapoff, assurez-vous d'avoir
assez de mémoire vive et que vous n'utilisez pas une grande quantité de mémoire
virtuelle. Autrement, vous allez à l'encontre de graves problèmes.
Si vous ne voulez pas utiliser laptop-mode, vous pouvez tout de même limiter
l'accès au disque en montant tempfs sur certains répertoires. (Les
données écrites sont alors conservées dans la mémoire principale plutôt que sur
le disque et le contenu est perdu lors du démontage.) Il peut être pratique de
monter ce système sur /tmp. Après tout, le contenu de ce
répertoire importe peu puisqu'il est de toute façon supprimé à chaque
redémarrage. Que ce contenu ait été conservé sur le disque ou en mémoire ne
change rien. Assurez-vous toutefois d'avoir assez de mémoire vive et qu'aucun
programme (par exemple un client de téléchargement ou un utilitaire de
compression) n'a besoin d'un espace disque phénoménal dans /tmp.
Pour activer cette fonction, ajoutez le support pour tempfs à votre noyau et la
ligne suivante au fichier /etc/fstab :
Exemple de code 5.7 : Éditer /etc/fstab pour rendre /tmp encore plus volatil |
none /tmp tmpfs size=32m 0 0
|
Attention :
Faites attention au paramètre « size ». Modifiez-le pour l'adapter à
votre système. Si vous n'êtes pas sûr de vous, mieux vaut ne pas essayer. Cette
configuration peut limiter vos performances en créant un goulet d'étranglement.
Si vous voulez un système de fichier tempfs sur /var/log,
assurez-vous de fusionner les fichiers au disque avant de le démontage. Ils sont
essentiels. N'essayez pas de monter un tempfs sur /var/tmp.
Portage utilise ce répertoire pour compiler...
|
6.
Gestion de l'alimentation pour les autres composants
Les cartes graphiques
Dans le cas où vous posséderiez une carte graphique ATI qui supporte le
PowerPlay (technique d'ajustement dynamique de l'horloge du processeur
graphique), vous pouvez activer cette fonctionnalité dans Xorg. Ouvrez le
fichier /etc/X11/xorg.conf et ajoutez (ou activez) l'option
DynamicClocks dans la section Device. Veuillez noter que cette
option pourrait faire planter votre système.
Exemple de code 6.1 : Activer le support ATI PowerPlay dans Xorg |
Section "Device"
[...]
Option "DynamicClocks" "on"
EndSection
|
Gestion de l'alimentation pour les cartes réseau sans fil
Les cartes réseau sans fil consomment une quantité non négligeable d'énergie.
Cette consommation peut être gérée de façon analogue à ce qui a été décrit pour
le disque dur.
Note :
Ce script suppose que votre interface sans fil se nomme wlan0 ;
faites les corrections appropriées.
|
Ajoutez l'option suivante à votre /etc/conf.d/net pour activer
automatiquement la gestion de l'énergie pour votre carte sans fil :
Exemple de code 6.2 : Activer la gestion d'énergie de la carte sans fil |
iwconfig_wlan0="power on"
|
Voir man iwconfig pour plus de détails et plus d'options telles que les
délais entre les réveils et les délais d'attente. Si votre pilote et votre
point d'accès permettent de modifier l'intervalle de temps entre chaque balise
(beacon), c'est un bon point de départ pour économiser de l'énergie.
Gestion de l'alimentation pour les périphériques USB
Il existe deux problèmes liés à la consommation d'énergie par les périphériques
USB. Premièrement, les périphériques tels que les souris, caméras numériques et
clés USB consomment de l'énergie lorsqu'ils sont branchés. Vous n'y pouvez
rien, si ce n'est les débrancher lorsqu'ils ne servent pas. Deuxièmement,
lorsque des périphériques USB sont branchés, le contrôleur USB hôte accède
périodiquement au bus, ce qui empêche le processeur d'entrer dans un état de
veille. Le noyau offre une fonctionnalité expérimentale pour activer la
suspension des périphériques USB au moyen d'appels au pilote ou à un des
fichiers power/state dans /sys/.
Exemple de code 6.3 : Activer le support de la mise en veille de l'USB dans le noyau Linux |
Device Drivers
USB support
[*] Support for Host-side USB
[*] USB suspend/resume (EXPERIMENTAL)
|
7.
États de veille : suspension, mise en veille et hibernation
L'ACPI définit plusieurs états de veille. Les principaux sont :
- S1 ou pause (« standby ») ;
-
S3 ou suspension en mémoire vive ou encore mise en veille
(« sleep ») ;
-
S4 ou suspension sur le disque ou encore hibernation
(« hibernate »).
Ces états peuvent être utilisés dès que vous ne travaillez pas sur votre
portable mais que vous ne voulez pas l'éteindre afin d'éviter le long délai
nécessaire au démarrage.
Pause (S3)
Le support pour les états de veille ACPI est considéré expérimental pour de
bonnes raisons. Les états de veille APM semblent plus stables, mais vous ne
pouvez pas utiliser à la fois ACPI et APM.
Exemple de code 7.1 : Configuration du noyau pour divers types de mises en veille |
Power Management Options --->
[*] Power Management support
[*] Suspend to RAM and standby
|
Une fois que le noyau est correctement configuré, vous pouvez utiliser
hibernate-script pour activer la mise en veille. Installons d'abord ce
script.
Exemple de code 7.2 : Installer hibernate-script |
# emerge hibernate-script
|
Ce programme se configure dans le fichier /etc/hibernate. Le paquet
fourni par défaut présente quelques fichiers de configuration pour chaque état
de veille. Les options communes à chaque état se trouvent dans
common.conf. Veillez à ce que ce fichier soit correctement
renseigné pour votre système.
La configuration de l'état "Pause (S3)" se fait dans le fichier
sysfs-ram.conf dans /etc/hibernate.
UseSysfsPowerState mem est déjà configuré correctement, mais si vous avez
besoin de faire d'autres changements pour cet état de veille (ou pour tout autre
état de veille), vous devrez les ajouter au fichier
/etc/hibernate/hibernate.conf. Les commentaires et le nom des
options devraient vous guider. Si vous utilisez des partages NFS ou Samba sur
votre réseau, assurez-vous d'appeler les bons scripts d'initialisation pour les
couper proprement.
Note :
Pour plus d'informations sur les différents états de veille, consultez le man
hibernate.conf.
|
Vous êtes prêt ? C'est votre dernière chance de sauvegarder vos données
avant d'exécuter la prochaine commande. Notez que vous devrez probablement taper
une touche particulière comme Fn pour revenir de la mise en veille.
Exemple de code 7.3 : Passer en veille |
# hibernate-ram
|
Vous pouvez aussi lancer la pause (Standby ou S1) d'une manière similaire en
éditant sysfs-ram.conf et en changeant "UseSysfsPowerState mem" par
"UseSysfsPowerState standby". Les modes S3 et S4 sont les plus intéressants à
cause de leurs meilleures capacités d'économie d'énergie.
Hibernation (S4)
Cette section introduit l'hibernation, qui consiste en une capture du système
écrite sur disque juste avant d'éteindre l'ordinateur. Lors de la reprise, la
capture est restaurée et vous pouvez reprendre votre travail exactement au point
où vous l'avez laissé.
Attention :
N'installez pas du matériel non installable à chaud pendant l'hibernation.
N'essayez pas de charger la capture avec un noyau différent que celui qui a
servi à la créer. Coupez tous les clients NFS ou Samba avant de passer en
hibernation.
|
Il existe deux implémentations différentes pour S4. L'originale est swsusp.
tuxonice (anciennement suspend2), plus récent, a une interface plus agréable
(qui inclut le support de « fbsplash »). Un comparatif de
fonctionnalités est disponible sur le site de tuxonice. Fut un temps, il y eu
Suspend-to-Disk (pmdisk), dérivé de swsusp, mais les modifications ont été
ramenées.
TuxOnIce n'est pas encore inclus dans Linux. Vous devez donc soit appliquer les
correctifs fournis par tuxonice.net
sur les sources du noyau, soit utiliser sys-kernel/tuxonice-sources.
Voici la configuration du noyau pour swusp et TuxOnIce :
Exemple de code 7.4 : Configuration pour différents types d'états de veille |
Power Management support --->
[*] Hibernation (aka 'suspend to disk')
Enhanced Hibernation (TuxOnIce)
--- Image Storage (you need at least one allocator)
[*] File Allocator
[*] Swap Allocator
--- General Options
[*] Compression support
[ ] Allow Keep Image Mode
[*] Replace swsusp by default
|
La configuration de swusp est plutôt facile. Si vous n'avez pas indiqué le nom
de votre partition de swap dans la configuration du noyau, vous pouvez lui
indiquer lors du démarrage grâce à la directive resume=/dev/SWAP. Si le
démarrage est impossible à cause d'une image défectueuse, utilisez le paramètre
noresume. Le script d'initialisation hibernate-cleanup se chargera
de libérer les images inutilisées lors de la procédure de démarrage du système.
Exemple de code 7.5 : Invalider les images swusp lors du démarrage |
# rc-update add hibernate-cleanup boot
|
Pour permettre à swusp de gérer l'hibernation, utilisez le script hibernate et
mettez UseSysfsPowerState disk dans le fichier
/etc/hibernate/sysfs-disk.
Attention :
Sauvegardez vos données avant de tenter ceci. Exécutez sync avant
d'exécuter ces commandes afin que les données du cache soient écrites sur le
disque. Essayez d'abord hors de l'environnement X, puis dans cet environnement
mais sans session ouverte.
|
Si vous rencontrez des erreurs du type « kernel panic » à cause de
uhci ou d'une fonctionnalité similaire, essayez de compiler le support USB
comme un module et déchargez les modules avant d'entrer dans un état de veille.
Des options sont disponibles à cet effet dans le fichier
common.conf.
Exemple de code 7.6 : L'hibernation avec swusp |
# nano -w /etc/hibernate/common.conf
# hibernate
|
La suite de cette section décrit l'installation de TuxOnIce avec le support
fbsplash pour avoir une barre de défilement graphique pendant la mise en veille
et le réveil.
La première partie de la configuration est similaire à celle swusp. Au cas où
vous n'auriez pas indiqué le nom de votre partition de swap au noyau pendant la
configuration de celui-ci, vous devez lui indiquer grâce au paramètre de
démarrage resume=swap:/dev/SWAP. Si le démarrage est impossible à cause
d'une image défectueuse, ajoutez le paramètre noresume. De plus, le
script d'initialisation hibernate-cleanup se chargera de libérer les
images TuxOnIce inutilisées lors de la procédure de démarrage du système.
Exemple de code 7.7 : Invalider les images TuxOnIce lors du démarrage |
# rc-update add hibernate-cleanup boot
|
Éditez maintenant le fichier /etc/hibernate/tuxonice.conf, activez
les options TuxOnIce dont vous avez besoin et commentez tout dans les
sections sysfs_power_state et acpi_sleep. N'activez pas encore la
partie fbsplash dans le fichier common.conf.
Exemple de code 7.8 : Hiberner avec TuxOnIce |
# nano -w /etc/hibernate/tuxonice.conf
# hibernate
|
Nous pouvons maintenant passer à la configuration de fbsplash. Le paquet
sys-apps/tuxonice-userui est nécessaire pour l'activer pendant
l'hibernation. De plus, vous devez activer l'option USE fbsplash.
Exemple de code 7.9 : Installer tuxonice-userui |
# echo "sys-apps/tuxonice-userui fbsplash" >> /etc/portage/package.use
# echo "sys-apps/tuxonice-userui" >> /etc/portage/package.keywords
# emerge tuxonice-userui
|
L'ebuild vous indique de créer un lien symbolique vers le thème que vous voulez
utiliser. Par exemple, pour le thème livecd-2005.1, lancez la commande
suivante :
Exemple de code 7.10 : Utiliser le thème livecd-2005.1 pendant l'hibernation |
# ln -sfn /etc/splash/livecd-2005.1 /etc/splash/tuxonice
|
Si vous ne voulez pas un écran noir dans la première partie du réveil, vous
devez ajouter l'outil tuxoniceui_fbsplash à votre image initrd. En
supposant que vous ayez créé cette image avec splash_geninitramfs et que
vous l'ayez nommée /boot/fbsplash-emergence-1024x768, voici comment
procéder.
Exemple de code 7.11 : Ajouter tuxoniceui_fbsplash à une image initrd |
# mount /boot
# mkdir ~/initrd.d
# cp /boot/fbsplash-emergence-1024x768 ~/initrd.d/
# cd ~/initrd.d
# gunzip -c fbsplash-emergence-1024x768 | cpio -idm --quiet -H newc
# rm fbsplash-emergence-1024x768
# cp /usr/sbin/tuxoniceui_fbsplash sbin/
# find . | cpio --quiet --dereference -o -H newc | gzip -9 > /boot/fbsplash-tuxonice-emergence-1024x768
|
Ensuite, ajustez votre grub.conf (ou lilo.conf) pour
que votre noyau TuxOnIce utilise
/boot/fbsplash-tuxonice-emergence-1024x768 comme image initrd. Vous
pouvez maintenant tester si tout fonctionne correctement.
Exemple de code 7.12 : Test de l'hibernation avec fbsplash |
# tuxoniceui_fbsplash -t
|
Enfin, ouvrez le fichier /etc/hibernate/common.conf et activez
l'option fbsplash. Exécutez hibernate et appréciez.
8.
Résolution des problèmes
Q: J'essaie de changer la fréquence de l'unité centrale, mais
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor n'existe pas.
R: Assurez-vous que votre processeur supporte l'échelonnage de la
fréquence et que vous avez choisi le pilote CPUFreq correspondant à votre
processeur. Voici une liste des processeurs supportés par cpufreq (avec le
noyau 2.6.7) : ARM Integrator, ARM-SA1100, ARM-SA1110, AMD Elan - SC400,
SC410, AMD K6-2+ mobile, AMD K6-3+ mobile, AMD Duron mobile, AMD Athlon mobile,
AMD Opteron, AMD Athlon 64, Cyrix Media GXm, Intel PIII mobile et Intel PIII-M
mobile (avec certains jeux de composants), Intel Pentium 4, Intel Xeon, Intel
Pentium M (Centrino), National Semiconductors Geode GX, Transmeta Crusoe, VIA
Cyrix 3 / C3, UltraSPARC-III, SuperH SH-3, SH-4, plusieurs PowerBook et iBook2
et divers processeurs utilisés sur des systèmes compatibles avec ACPI 2.0
(seulement si l'option « ACPI Processor Performance States » est
disponible dans l'interface BIOS/ACPI).
Q: Mon processeur supporte l'échelonnage de la fréquence, mais
/sys/devices/system/cpu/cpu0/cpufreq/ est vide.
R: Cherchez des messages d'erreurs ACPI avec dmesg | grep ACPI.
Essayez de mettre votre BIOS à jour, particulièrement si un mauvais
fonctionnement de DSDT est rapporté. Vous pouvez également essayer de corriger
la situation vous-même (ce qui dépasse le cadre de ce guide).
Q: Mon portable supporte l'échelonnage de la fréquence, mais selon
/proc/cpuinfo, la vitesse ne change pas.
R: Vous avez probablement activé le support multiprocesseurs symétrique
(CONFIG_SMP) dans votre noyau. Désactivez cette option et le problème devrait
disparaître. Il y avait un bogue dans certains vieux noyaux causant ce
problème. Si c'est votre cas, exécutez emerge x86info, mettez votre
noyau à jour et vérifiez la vitesse actuelle du processeur avec x86info
-mhz.
Q: Je peux changer la fréquence du processeur, mais la plage disponible
est plus restreinte qu'elle ne l'est dans un autre système d'exploitation.
R: Vous pouvez combiner l'échelonnage de la fréquence avec la régulation
du temps processeur ACPI (« ACPI CPU throttling ») pour obtenir une
fréquence minimale plus basse. Notez que la régulation du temps processeur ne
sauve pas beaucoup d'énergie et sert plutôt à la gestion de la dissipation de
la chaleur (afin de garder votre portable froid et silencieux). Vous pouvez
consulter l'état de régulation du temps processeur avec cat
/proc/acpi/processor/CPU/throttling et le changer avec echo -n "0:x" >
/proc/acpi/processor/CPU/limit, où x est un des états Tx listés dans
/proc/acpi/processor/CPU/throttling.
Q: Lorsque je configure le noyau, les gouverneurs
« powersave », « performance » et « userspace »
sont disponibles, mais pas « ondemand ». Comment puis-je
l'activer ?
R: Le gouverneur « ondemand » n'est disponible que dans les
noyaux récents. Essayez de mettre le votre à jour.
Q: La durée de vie de la batterie semble moindre qu'avant.
R: Vérifiez les paramètres du BIOS. Peut-être avez-vous oublié de
réactiver certaines options.
Q: Ma batterie est chargée, mais KDE rapporte un niveau de charge de 0 %
et éteint le système aussitôt.
R: Vérifiez que le support pour la batterie est compilé dans le noyau.
Si vous l'utilisez comme module, assurez-vous que celui-ci est chargé.
Q: Mon système de journalisation reporte quelque chose comme
« logger: ACPI group battery / action battery is not defined ».
R: Ce message est généré par le script /etc/acpi/default.sh
livré avec acpid, vous pouvez tranquillement l'ignorer. Si vous voulez supprimer
ce message, commentez la ligne appropriée dans le script :
Exemple de code 8.1 : Désactiver les avertissements à propos d'événements ACPI inconnus |
*) # logger "ACPI action $action is not defined"
|
Q: J'ai un portable Dell Inspiron 51XX et je n'obtiens aucun événement
ACPI.
R: Cela semble être un bogue dans le noyau. Consultez cette page.
Q: J'ai activé l'option DynamicClocks dans xorg.conf et
maintenant Xorg plante / l'écran reste noir / mon portable ne s'éteint plus
correctement.
R: Cela arrive sur certains systèmes. Vous devez désactiver
DynamicClocks.
Q: Je veux utilisez TuxOnIce, mais il me dit que ma partition d'échange
est trop petite. Je ne peux pas l'agrandir.
R: Si vous disposez d'assez d'espace sur votre système, vous pouvez
enregistrer la capture dans un fichier plutôt que dans la swap.
hibernate-script sait le faire. Vous trouverez plus d'information à ce
sujet dans le fichier
/usr/src/linux/Documentation/power/tuxonice.txt.
Q: Je viens d'acheter une batterie, mais elle ne dure que quelques
minutes ! Où est mon erreur ?
R: Suivez d'abord les instructions du constructeur expliquant comment
charger la batterie correctement.
Q: Ce qui précède ne m'a pas aidé. Que devrais-je faire ?
R: Certaines batteries prétendument neuves sont en fait usagées.
Essayez ce qui suit :
Exemple de code 8.2 : Vérifier l'état de la batterie |
$ grep capacity /proc/acpi/battery/BAT0/info
design capacity: 47520 mWh
last full capacity: 41830 mWh
|
Si la valeur de « last full capacity » diffère
significativement de celle de « design capacity », votre batterie est
probablement défaillante. Essayez de faire jouer votre garantie.
Q: Mon problème n'est pas mentionné ci-dessus. Que puis-je faire ?
N'hésitez pas à me contacter (Dennis
Nienhüser) directement. Les Forums
Gentoo sont également un bon endroit pour trouver de l'aide. Si vous
préférez IRC, essayez le canal #gentoo-laptop canal.
Ce document est protégé par la licence Creative
Commons : Paternité - Partage des Conditions Initiales à
l'Identique 2.5.
|