Energy Star sous Linux

par Laurent Wacrenier


1. Introduction

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

2. Le disque dur

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.

2.1. Suspendre 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

2.2. Le disque ne se suspend pas ou reprend aléatoirement

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.

Voici une liste de démons ayant un comportement périodique susceptible de réveiller le disque.

2.2.1. cron

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.

2.2.2. mgetty

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.

2.2.3. lpr NG

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

2.2.4. apache

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.

2.2.5. bind

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; };
};

2.2.6. squid

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.

2.2.7. sendmail

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

3. Le moniteur

Les moniteurs suivant la norme VESA DPMS peuvent être mis en veille. Le moniteur passe successivement par plusieurs étapes.

Le paramétrage est différent selon que l'on est sous X ou pas.

3.1. La console

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.

    3.2. XFree86

    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.

    4. Le CPU

    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.


    Bibliographie

    Références

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