par Laurent Wacrenier
Le programme « Energy Star » lancé à l'initiative de l'EPA (« Environmental Protection Agency » américain) a pour objet principal de diminuer la consommation électrique des systèmes inactifs. Certains matériels peuvent parfois voir leur durée de vie augmentée.
Linux offre la possibilité d'utiliser des équipements conformes. On peut par exemple programmer une touche ou un menu qui, sur un portable, stoppe la rotation des disques, éteint l'écran et ralentit le système.
Le choix des délais d'inactivité avant une suspension est fonction de l'utilisation du système. Noter également que tous les systèmes ne sont pas forcément « verts » et que tous les systèmes « verts » ne se comportent pas de la même façon d'un constructeur à l'autre.
Les informations ci-dessous sont données dans l'espoir d'être utiles mais sont données SANS AUCUNE GARANTIE quant au bon fonctionnement de votre système après les avoir suivies. Si votre petite amie vous largue parce que votre disque dur émet des bruits bizarres ou si votre propriétaire vous expluse après que votre écran a mis le feu à votre appartement, vous en avez l'entière responsabilité.
L'arrêt de la rotation du disque dur présente un avantage supplémentaire à ceux énoncés plus haut : celui de rendre le système moins bruyant. Cependant, sur Unix, quelques démons accèdent aux données sans réel besoin et ont tendance à réveiller le disque.
Certains BIOS « verts » peuvent suspendre le disque après une non utilisation. Rechercher l'option « HDD Standby Timer ». Avec les disques IDE, on peut utiliser l'utilitaire hdparm qui fait la même chose :
$ hdparm -S 120 # arrête le disque après 10 minutes (120 x 5s) $ hdparm -y # suspend le disque tout de suite
Si le disque ne veut jamais s'arrêter en mode normal (mais qu'il le fait bien par exemple en mode « single user ») ou s'il reprend son activité sans raison apparente, c'est que des programmes continuent à lire et écrire sur le disque sans que vous ne fassiez quoi que ce soit. Ces programmes (démons) sont normalement lancés au boot, le jeu consiste à les détecter et les reparamétrer.
Pour la détection, il faut que vous ayez un moyen de surveiller les accès physiques au disque dur, que ce soit au bruit d'un accès ou une led d'activité. Ensuite, voici trois méthodes pour rechercher les agitateurs.
Tuer tous les programmes, un par un, en commençant par ceux qui sont les plus susceptibles d'avoir une activité disque. Cette méthode est un peu barbare et pas vraiment efficace à elle toute seule.
Lancer strace -p sur les numéros de processus des démons suspects. Si vous voyez une activité disque en même temps qu'une activité du processus, vous tenez probablement là un des coupables. strace vous indique également quels fichiers sont accédés et la périodicité des accès.
Utiliser les affichages « timeout » et « alarm » du programme top. Ces champs ne sont pas présents par défaut mais vous pouvez les insérer (appuyez sur o). Le champ « timeout » indique le temps qu'il reste avant qu'un appel à select ne termine. Si vous le voyez passer à 0 sur un processus pendant un accès disque physique, vous tenez un des coupables. Le champ « alarm » est moins utile, il représente la durée en secondes entrée comme argument à la fonction alarm, on peut mettre ces valeurs en corrélation avec une éventuelle périodicité des accès physiques.
Voici une liste de démons ayant un comportement périodique susceptible de réveiller le disque.
Le démon cron lance des programmes à certaines heures.
Il n'est pas directement en cause dans les accès disques (il ne fait que des
accès en lecture pour vérifier que ses tables n'ont pas changé mais ces
information sont la plupart du temps dans le cache disque). Certaines
distributions insèrent dans la crontab
des processus lancés
toutes les quelques minutes. Jetez un coup d'½il dans les crontabs des
utilisateurs démons (root, news, uucp...) ou dans le fichier
/etc/crontab
et faites le ménage.
Dans certaines distributions, le programme atrun est lancé
toutes les minutes. Il sert à exécuter des programmes à une date donnée avec
la commande at. Si vous ne vous en servez pas, désactivez-le
sinon essayez le démon atd du package
at-3.1.*
.
Conservez les lignes qui nettoient les logs et rassemblez les autour d'une même heure.
mgetty vérifie toutes les quelques minutes que le modem
répond bien. Comme il note toutes ses actions dans un fichier de log (en
fonction du paramètre debug
) cela entraîne des accès
disques non désirables.
Parade : mettre une période de vérification démesurément longue dans
mgetty.config
. Par exemple :
modem-check-time 360000
vérifie toutes les 100 heures.
Cette option n'a pas l'air désactivable.
lpd vérifie la queue et l'activité des démons toutes quelques dizaines de minutes.
Parade : désactivez cette option dans
/etc/lpd.conf
: poll_time 0
Le serveur maître httpd discute avec ses
co-serveurs via le fichier log/apache_status
.
Parade : lancez httpd via inetd. Dans
/etc/inetd.conf
, ajoutez :
www stream tcp nowait root /usr/local/etc/httpd/httpd httpd
mettez le paramètre ServerType
à
inetd
dans le fichier httpd.conf
De nombreux commentaires déconseillent d'utiliser Apache avec inetd pour des raisons de performance (inetd doit forker un serveur qui va relire et analyser sa config à chaque URL demandée) mais si votre serveur n'a pas énormément d'accès, c'est tout-à-fait jouable.
bind 8.1 (named) logue toutes les heures des informations sur ses activités.
Parade : envoyez ces informations ailleurs que sur le disque dur (sur
une console, par exemple) ou désactivez les carrément.
Dans /etc/named.conf
:
logging { category statistics { null; }; category maintenance { null; }; };
Squid fait constamment le ménage dans les fichiers cachés.
Parade : aucune avec squid lui même, mais on peut utiliser le module proxy d'apache (voir plus haut). Ce module n'est pas actif dans la configuration par défaut. Vous devrez peut-être recompiler apache pour vous en servir.
sendmail vérifie périodiquement la queue pour réexpédier le courrier qui peut s'y trouver.
Parade : avez-vous vraiment besoin d'un sendmail en démon (c.-à-d. votre machine est-elle censée recevoir du courrier par SMTP) ? Si vous pensez que non, tuez le processus et vérifiez que votre lecteur de courrier fonctionne encore (mail, vm, rmail, mush, pine... se passent de démon mais mh en a paraît-il besoin). Regardez aussi si vous ne pouvez pas vous servir du démon d'une autre machine.
Si vous avez vraiment besoin de sendmail en démon, lancez-le au boot sans l'option -q [durée] et videz la queue en lançant sendmail -q via la crontab aux heures que vous voudrez (par exemple, en même temps que le nettoyage des fichiers de logs).
Les moniteurs suivant la norme VESA DPMS peuvent être mis en veille. Le moniteur passe successivement par plusieurs étapes.
Standby (?)
Suspend (coupure du signal hsync ou vsync et écran noir)
Off (coupure des signaux hsync et vsync et écran noir)
Le paramétrage est différent selon que l'on est sous X ou pas.
La commande setterm permet de déterminer si on utilise DPMS et avec quelle durée :
$ setterm -blank 10 # extinction apres 10 minutes (defaut) $ setterm -powsersave on
On peut faire un réglage plus fin avec les séquences d'échappement :
ESC[9;intervalle]
intervalle est le nombre de minutes d'inactivité avant d'entrer en mode Suspend
.
ESC[14;intervalle]
nombre de minutes d'inactivité entre le mode Suspend
et le mode Off
.
Voir, dans les sources de linux, le fichier
drivers/char/vesa_blank.c
pour plus de détails.
Dans XFree86 3.3, les défauts sont initialisés dans le fichier
XF86Config
, pour activer le mode DPMS, ajoutez dans la
section Devices
:
Option "power_saver"
Ensuite vous pouvez paramétrer les délais StandbyTime
,
SuspendTime
et OffTime
de la section
Monitors
comme indiqué dans le manuel.
On peut changer ces valeurs au vol ou passer dans un état particulier avec la commande xset.
Les BIOS supportant APM (Advanced Power Management) peuvent faire passer le système par 3 stades d'inactivité :
Doze
le système réduit 80 % de ses activités
Standby
le système réduit 92 % de ses activités
Suspend
le système est réduit à l'état le plus inactif possible (99 %) et aura besoin d'un temps de chauffe pour repartir.
Lorsque le système est ralenti, Linux perd la notion du temps réel (son horloge est ralentie). Tous les programmes qui effectuent des actions périodiques (en particulier cron) sont perturbés. L'horloge est remise à l'heure une fois le système reparti si le noyau est compilé pour supporter APM (sinon, remettez-la avec clock).
Si vous comptez faire des gros calculs, utiliser la crontab ou vous si votre machine fait office de serveur, je doute que les options APM vous soient utiles, mais sur un portable c'est sûrement tout autre chose (si quelqu'un m'offre un portable, je lui ferais part de mes impressions).
L'utilitaire apmd (ftp.cs.unc.edu:/pub/users/faith/linux/apmd-2.4.tar.gz) permet de surveiller les états liés à APM ou forcer la suspension.
Mis à part dans les pages du manuel ou dans les documentations attachées aux logiciels, vous pouvez trouver de l'information utile sur le sujet dans :
Mueller, Hanno. Battery Powered Linux Mini-HOWTO, .