ACPI (en anglais, Advanced Configuration and Power Interface) doit permettre au système d'exploitation d'organiser et de gérer les différents composants matériel individuellement. Ainsi ACPI remplace aussi bien le Plug and Play qu'APM. ACPI fournit aussi d'autres informations diverses sur la batterie, l'alimentation en énergie, la température et le ventilateur et renseigne sur les événements système, tels que par exemple « rabattre l'écran » ou « charge de la batterie faible ».
Le BIOS contient des tables dans lesquelles sont répertoriées des
informations sur les différents composants et les méthodes d'accès au
matériel. Ces informations sont par exemple utilisées par le système
d'exploitation pour attribuer des interruptions ou mettre sous ou hors
tension des composants, le cas échéant. Mais comme le système
d'exploitation exécute des instructions qui se trouvent dans le BIOS, tout
dépend là encore de l'implémentation du BIOS. Vous trouverez dans
/var/log/boot.msg les messages d'amorçage. ACPI les
utilise pour signaler les tables trouvées et qu'il a pu lire. Vous trouverez
plus d'informations sur le dépannage des problèmes ACPI dans
Section 16.3.4, « Problèmes possibles et solutions ».
Lorsque le noyau reconnaît un BIOS ACPI lors de l'amorçage, ACPI est
automatiquement activé et APM désactivé. Le paramètre d'amorçage
acpi=on peut tout au plus être utile sur les vieilles
machines. L'ordinateur doit prendre en charge ACPI 2.0 ou une version
plus récente. Vous pouvez vérifier si ACPI a été activé dans les
messages d'amorçage du noyau, dans /var/log/boot.msg.
Ensuite, un certain nombre de modules doit encore être chargé. Ceux-ci
sont chargés par le script de démarrage du démon ACPI. Si l'un de ces
modules rencontre un problème, vous pouvez l'exclure du chargement ou du
déchargement dans /etc/sysconfig/powersave/common.
Vous trouverez dans le journal du système (/var/log/messages)
les messages du module et les composants qui ont été reconnus.
Vous pouvez trouver maintenant dans
/proc/acpi un ensemble de fichiers
qui vous informent au sujet de l'état du système ou que vous pouvez utiliser
pour modifier de manière active certains états. Les fonctionnalités ne
sont pas encore toutes totalement prises en charge dans la mesure où
quelques unes sont encore en phase de développement et que la prise en
charge de certaines dépend fortement de l'implémentation du fabricant.
Vous pouvez afficher tous les fichiers (à l'exception de
dsdt et fadt) avec la commande
cat. Pour certains d'entre eux, vous pouvez modifier
quelques réglages en utilisant echo, par exemple, en
indiquant avec echo X
> fichier les valeurs appropriées pour X. Pour accéder
à ces informations et possibilités de contrôle, utilisez toujours la
commande powersave. Pour plus de détails, vous trouverez
ci-après une description des fichiers les plus importants :
/proc/acpi/info
Informations générales à propos d'ACPI
/proc/acpi/alarm
Définissez ici quand le système doit reprendre après une période de sommeil. Cette fonctionnalité n'est actuellement pas encore totalement prise en charge.
/proc/acpi/sleep
Donne des informations sur les différents états de sommeil.
/proc/acpi/event
Tous les événements sont consignés ici. Ils sont traités par le
démon Powersave (powersaved). Si aucun démon n'est
en train d'y accéder, vous pouvez lire les événements avec
cat /proc/acpi/event (pressez
Ctrl-C
pour terminer). Un effleurement sur l'interrupteur de mise sous tension ou l'écran
rabattu sont de tels événements.
/proc/acpi/dsdt et
/proc/acpi/fadt
C'est ici que se trouvent les tables ACPI, DSDT (Differentiated
System Description Table) et FADT (Fixed ACPI
Description Table). Vous pouvez les lire avec les commandes
acpidmp, acpidisasm et
dmdecode. Vous trouverez ces programmes et la
documentation correspondante dans le paquetage
pmtools. Exemple :
acpidmp DSDT | acpidisasm
/proc/acpi/ac_adapter/AC/state
Indique si l'ordinateur est raccordé à l'alimentation en énergie.
/proc/acpi/battery/BAT*/{alarm,info,state}
Informations détaillées sur l'état des batteries. Pour pouvoir
consulter l'état de charge, vous devez comparer last full
capacity dans info avec remaining
capacity dans state. Vous pouvez effectuer
la même opération plus confortablement avec des programmes spéciaux
tels que présentés dans Section 16.3.3, « Outils ACPI ». Vous
pouvez préciser dans alarm la capacité à partir de
laquelle un événement de batterie doit être déclenché.
/proc/acpi/button
Ce répertoire contient des informations sur les différents interrupteurs.
/proc/acpi/fan/FAN/state
Indique si le ventilateur fonctionne correctement. Vous pouvez également
le mettre sous ou hors tension en inscrivant 0
(activé) ou 3 (désactivé) dans ce fichier.
Attention, car aussi bien le code ACPI dans le noyau que le matériel (ou
le BIOS) écrasent ce réglage en cas de trop forte chauffe.
/proc/acpi/processor/CPU*/info
Informations concernant les possibilités d'économie d'énergie du processeur.
/proc/acpi/processor/CPU*/power
Informations relatives à l'état actuel du processeur. Un astérisque à
côté de C2 signifie que le processeur est à vide ;
c'est l'état le plus courant comme le laisse voir la valeur pour
usage.
/proc/acpi/processor/CPU*/throttling
Vous pouvez ici configurer la réduction de la fréquence du processeur. Dans la plupart des cas, il est possible de procéder à huit niveaux de réduction. Ceci est indépendant de l'adaptation de la fréquence.
/proc/acpi/processor/CPU*/limit
Lorsque la performance (désuet) et l'étranglement (en anglais throttling) sont automatiquement réglés par un démon, indiquez ici les limites à ne pas dépasser. Il existe des limites définies par le système et certaines qui peuvent être réglées par l'utilisateur.
/proc/acpi/thermal_zone/
Un sous-répertoire est prévu ici pour chaque zone thermique. Une zone thermique est un domaine avec des propriétés thermiques semblables ; leur nombre et leur nom est choisi par le fabricant de matériel informatique. Les nombreuses possibilités proposées par ACPI sont cependant rarement implémentées. En revanche, la gestion de la température est effectuée de manière classique, directement par le BIOS, sans accorder le moindre droit à la parole au système d'exploitation car c'est tout simplement la durée de vie du matériel qui est ici en jeu. Les descriptions ci-après sont donc partiellement théoriques.
/proc/acpi/thermal_zone/*/temperature
La température actuelle de la zone thermique.
/proc/acpi/thermal_zone/*/state
L'état indique si tout est ok ou si ACPI assure un
refroidissement actif ou passif.
Pour les systèmes de ventilation indépendants d'ACPI, l'état est
toujours ok.
/proc/acpi/thermal_zone/*/cooling_mode
Vous pouvez choisir ici la méthode de refroidissement contrôlée par ACPI ; passive (moins de performances mais économique) ou active (100 % de performance et 100 % du bruit du ventilateur).
/proc/acpi/thermal_zone/*/trip_points
Vous pouvez définir ici à partir de quelle température une mesure doit
être entreprise. Les options possibles varient entre un refroidissement
passif ou actif jusqu'à la mise en sommeil (hot)
voire à la mise hors tension de l'ordinateur
(critical). Les actions possibles sont définies,
selon les appareils, dans la table DSDT. Les points de déclenchement
définis dans les spécifications ACPI sont :
critical, hot,
passive, active1 et
active2. Même s'ils ne sont pas tous implémentés,
vous devez, lorsque vous écrivez dans le fichier
trip_points, les saisir tous dans cet ordre. Ainsi
une entrée comme echo 90:0:70:0:0 >
trip_points
correspond à une température de 90 pour
critical et de 70 pour
passive (toutes les températures sont mesurées en
degrés Celsius).
/proc/acpi/thermal_zone/*/polling_frequency
Lorsque la valeur dans temperature n'est pas
automatiquement mise à jour, dès que la température varie, il est
possible ici de passer au mode d'interrogation (en anglais,
polling mode). La commande echo X >
/proc/acpi/thermal_zone/*/polling_frequency
implique que la température est sondée toutes les X
secondes. Utilisez X=0 pour désactiver l'interrogation.
Vous n'avez pas besoin de régler manuellement ces informations, configurations et événements. Pour cela, vous disposez du démon Powersave (powersaved) et de différentes applications telles que powersave, kpowersave et wmpowersave (voir Section 16.3.3, « Outils ACPI »). Étant donné que powersaved contient les fonctionnalités de l'ancien acpid, celui-ci n'est plus nécessaire.
Avec le processeur, il est possible d'économiser de l'énergie de trois façons différentes qui, selon le type d'utilisation de l'ordinateur peuvent être combinées suivant vos besoins. Économie d'énergie signifie également que le système chauffe moins et qu'il sollicite donc moins la ventilation.
PowerNow! et
Speedstep sont les noms donnés par les
entreprises AMD et Intel pour cette technique qui existe aussi dans les
processeurs d'autres fabricants. Ici, la fréquence du processeur et sa
tension intrinsèque sont toutes deux diminuées. L'avantage réside dans
une économie d'énergie plus que linéaire. C'est à dire que pour une
fréquence (et donc une performance) diminuée de moitié, c'est
nettement plus que la moitié de l'énergie qui est économisée. Cette
technique fonctionne indépendamment de APM ou de ACPI et nécessite un
démon qui régule la fréquence et les performances requises. Les
paramètres peuvent être configurés dans le répertoire
/sys/devices/system/cpu/cpu*/cpufreq/.
Cette technique est connue sous le nom de throttling. Ici, un certain
pourcentage des cycles d'horloge du processeur est supprimé. Un quart
est supprimé pour un étranglement de 25%, et pour un étranglement de
87,5%, il n'y a plus qu'un huitième des cycles d'horloge. Cependant,
l'économie d'énergie n'est pas tout à fait linéaire. On utilise le
throttling uniquement lorsqu'il n'y a pas de régulation de la fréquence
ou pour une économie maximale. Cette technique doit également être
contrôlée par un processus propre. L'interface du système est
/proc/acpi/processor/*/throttling.
Le processeur est toujours mis en sommeil par le système d'exploitation
lorsqu'il n'y a rien à faire. Dans ce cas, le système d'exploitation
envoie au processeur l'instruction halt prévue à cet
effet. Il existe différents niveaux : C1, C2 et C3. Dans l'état C3, le
plus économique, même le processus de comparaison de la mémoire cache
du processeur avec la mémoire principale est arrêté ; cet état
ne peut donc être pris que lorsqu'aucun périphérique ne modifie le
contenu de la mémoire principale par activité de bus maître. Certains
pilotes empêchent ainsi l'utilisation de C3. L'état courant est
affiché dans /proc/acpi/processor/*/power.
L'adaptation de la fréquence comme la réduction de la cadence d'horloge ne sont intéressants que lorsque le processeur a quelque chose à faire car dans le cas contraire, ce sont les états C, plus économiques qui sont favorisés. Cependant, lorsque le processeur est occupé, la régulation de la fréquence est la meilleur méthode d'économie d'énergie. Souvent, le processeur n'est que partiellement occupé. Une fréquence réduite lui suffit alors pour fonctionner. En général, l'adaptation dynamique de la fréquence à l'aide d'un démon, tel que powersaved, est la meilleure solution. Lorsque l'ordinateur fonctionne sur batterie ou lorsqu'il doit ne doit pas chauffer, c'est à dire être silencieux, la spécification d'une fréquence basse définie statiquement peut être préférable.
Le throttling ne devrait être utilisé qu'en dernière extrémité lorsque l'on souhaite, par exemple, augmenter la durée de vie des batteries malgré le fonctionnement du système. Cependant, certains systèmes ne fonctionnent plus correctement lorsque l'étranglement est trop important. La suppression de cycles d'horloge n'est d'aucun intérêt lorsque le processeur n'a que peu à faire.
Le démon powersave contrôle aussi ces technologies sous SUSE LINUX. La configuration nécessaire à cette fin est décrite dans Section 16.5, « Le paquetage powersave ».
Il existe un grand nombre d'outils ACPI plus ou moins volumineux, notamment
des outils d'informations purs, qui indiquent l'état de la batterie, la
température, etc. (acpi, klaptopdaemon, wmacpimon, etc.). D'autres facilitent l'accès aux
structures sous /proc/acpi ou aident à observer les
modifications (akpi, acpiw, gtkacpiw). De
plus, il existe aussi des outils pour le traitement des tables ACPI dans le
BIOS (paquetage pmtools).
Il existe deux groupes de problèmes différents. D'une part, il peut naturellement y avoir des erreurs dans le code ACPI du noyau qui n'ont pas encore été relevées. D'autre part, il peut toutefois y avoir une solution à télécharger. Les problèmes au niveau du BIOS de l'ordinateur sont malheureusement moins agréables et aussi plus fréquents. Il arrive malheureusement que des écarts aient été insérés par rapport aux spécifications ACPI du BIOS pour contourner des erreurs de l'implémentation ACPI dans d'autres systèmes d'exploitation très développés. Il existe aussi du matériel connu pour ses erreurs graves dans l'implémentation ACPI et qui est donc répertorié dans une liste noire afin de ne pas utiliser dessus ACPI pour le noyau Linux.
En cas de problème, la première chose à faire est la mise à jour du BIOS. Si l'ordinateur n'amorce pas du tout, l'un des paramètres d'amorçage suivants peut se révéler utile :
Ne pas utiliser ACPI pour la configuration des appareils PCI.
Ne procéder qu'aux configurations de ressources simples, sinon, ne pas utiliser ACPI.
Nésactiver ACPI.
![]() | Problèmes lors de l'amorçage sans ACPI |
|---|---|
Certains ordinateurs de la nouvelle génération, notamment les systèmes SMP et AMD64, ont besoin d'ACPI pour configurer correctement le matériel. Si l'on désactive ACPI, cela peut engendrer des problèmes. | |
Surveillez bien les messages du système lors de l'amorçage. Utilisez pour
cela la commande dmesg | grep -2i acpi
après l'amorçage (ou alors on affiche tous les messages, car
ACPI n'est pas nécessairement responsable du problème). En cas d'erreur
lors de l'analyse d'une table ACPI, vous avez la possibilité, du moins pour
la table la plus importante, la table DSDT, de créer une table corrigée
dans un noyau individuel. La DSDT erronée du BIOS est par la suite
ignorée. La procédure à suivre est détaillé dans Section 16.5.4, « Problèmes possibles et solutions ».
Vous disposez, lors de la configuration du noyau, d'un interrupteur pour activer les messages de débogage d'ACPI. Lors de la compilation et de l'installation d'un noyau avec débogage ACPI, cela peut fournir des informations détaillées aux experts à la recherche d'erreurs.
En cas de problèmes relatifs au BIOS ou au matériel, il est toujours judicieux de s'adresser au fabricant de l'appareil. Même quand ces derniers ne sont pas toujours d'un grand secours lorsqu'il s'agit d'un système fonctionnant sous Linux, il est important de les informer d'éventuels problèmes. Ce n'est que lorsque les fabricants auront remarqué que suffisamment de leurs clients optent pour Linux qu'ils prendront le problème au sérieux.
Vous trouverez plus de documentation et d'aide relatives à ACPI dans :
http://www.cpqlinux.com/acpi-howto.html (HowTo ACPI détaillé, contient des correctifs de la DSDT)
http://www.intel.com/technology/iapc/acpi/faq.htm (FAQ ACPI chez Intel)
http://acpi.sourceforge.net/ (Le projet ACPI4Linux de Sourceforge)
http://www.poupinou.org/acpi/ (Correctifs DSDT de Bruno Ducrot)