mandhyl.net

Utiliser PowerTOP en tant que service

Mis à la disposition de la communauté du libre par Intel et initialement destiné fournir des statistiques aux développeurs, PowerTOP est un outil qui permet de réaliser des économies d’énergie sur son ordinateur.

Déjà préinstallé sur une Debian 9, il suffit de le lancer pour prendre connaissance des applications et des pilotes qui réveillent fréquemment le noyau du système1, et qui donc, consomment de l’énergie. Dans un souci de sobriété, le logiciel émet parallèlement une série de recommandations faciles à appliquer, une simple validation au clavier est nécessaire.

Une option intéressante avec ce programme est --auto-tune qui va modifier votre système pour activer toutes les préconisations utiles à la réduction de la consommation électrique de votre machine. L’idée de créer un service au démarrage qui lance PowerTOP avec cette option est tout à fait plaisante.

L’inconvénient dans cette méthode est que cet outil est quelque peu « agressif ». Ainsi, sur mon poste de travail, ma sortie audio émet lors de sa mise en veille une sorte de bruit blanc et des claquements gênants à l’oreille, idem pour ma souris USB qui perd grandement de sa réactivité. Cela rend son utilisation beaucoup trop contraignante. Il est donc nécessaire de revenir sur quelques mesures prises une fois que le programme a été lancé.

Les mains dans le cambouis

La détection de la souris est un cas qui mérite d’être étudié. Comme les options d’alimentation du matériel USB sont modifiées à partir de l’arbre des périphériques /sys/bus/ de sysfs, il nous faut au préalable connaître précisément sur quelle interface elle est connectée, et ceci peut tout à fait varier dans le temps.

Actuellement, j’utilise un service systemd qui suit ce modèle :

mandhyl@zephyr:~$ cat /etc/systemd/system/powertop.service
[Unit]
Description=PowerTOP tunings

[Service]
Type=oneshot
ExecStart=/usr/sbin/powertop --auto-tune
ExecStartPost=/bin/sh -c "echo '0' > /sys/module/snd_hda_intel/parameters/power_save"
ExecStartPost=/bin/sh -c "echo 'on' >  $(grep -l 'Comfort Mouse 4500' /sys/bus/usb/devices/*-*/product | sed 's:/product:/power/control:')"

[Install]
WantedBy=multi-user.target

Deux commandes shell sont utilisées dans les lignes ExecStartPost=. La première désactive le mode économie d’énergie de la carte son et la seconde détermine l’adresse de la souris et active son bus de manière permanente.

Pour cette dernière ligne, l’astuce consiste à se servir de grep avec l’option -l pour retourner le chemin du descripteur qui correspond au modèle de ma souris2 contenu dans /product puis de le substituer avec sed afin qu’il mène vers /power/control, le fichier qui contrôle son alimentation électrique.

Pour que tout cela soit fonctionnel, il faut vérifier que tout se passe bien en exécutant les commandes systemctl daemon-reload et systemctl start powertop.service avant de l’installer de manière durable avec un systemctl enable powertop.service.

Bibliographie :

Notes et références :

  1. Florent Zara, « PowerTOP : Un outil pour réduire la consommation d’énergie sous GNU/Linux », sur LinuxFr.org

  2. Il s’agit ici d’une sympathique Microsoft Comfort Mouse 4500.