Votre laptop sous Linux se vide en quelques heures alors que les specs annoncent une journée d’autonomie ? Avant de blâmer la batterie vieillissante ou de racheter un chargeur, il y a un coupable bien plus probable qui tourne silencieusement en tâche de fond. La bonne nouvelle : un terminal et quelques commandes suffisent pour le débusquer.
À retenir
- Pourquoi les micro-réveils du CPU (wakeups storms) consomment plus qu’un travail constant
- Comment utiliser PowerTop et Turbostat pour identifier le coupable en quelques secondes
- Les pièges cachés : drivers GPU et timers kernel qui empêchent le CPU de dormir
Pourquoi Linux dévore parfois votre batterie sans prévenir
Linux gère l’énergie d’une façon différente de Windows ou macOS. Là où ces systèmes proposent des profils d’alimentation relativement figés, Linux expose des dizaines de paramètres configurables, ce qui est une force sur serveur et un piège sur portable. Un service mal configuré, un driver qui refuse de laisser le GPU entrer en veille, un processus qui réveille le CPU 200 fois par seconde pour… rien de visible : voilà les coupables habituels.
Le truc contre-intuitif, c’est que l’ennemi de l’autonomie n’est souvent pas la charge CPU au sens classique. Un processeur qui calcule à fond consomme, certes, mais au moins il finit le travail. Ce qui tue vraiment les batteries, c’est le wakeup storm : des micro-réveils permanents qui empêchent le processeur de basculer dans ses états de veille profonde (C-states), là où il consomme quasi rien. Un timer mal réglé, et votre CPU ne dort jamais vraiment.
Le diagnostic pas à pas : ces commandes qui révèlent tout
On commence par l’outil le plus simple et souvent le plus révélateur. Dans votre terminal, tapez :
sudo powertop
PowerTop (disponible dans les dépôts de toutes les distributions majeures) affiche en temps réel la consommation estimée en watts, mais surtout l’onglet « Wakeups » qui liste les processus triés par fréquence de réveil du CPU. Si vous voyez un processus dépasser les 50 réveils par seconde, vous avez trouvé votre suspect principal. Sur une machine saine, la majorité des processus devraient afficher moins de 5 wakeups/s au repos.
L’onglet « Tunables » de PowerTop est un bonus : il liste des optimisations possibles avec leur statut actuel (Good/Bad). Vous pouvez appliquer toutes les optimisations suggérées en une commande :
sudo powertop --auto-tune
Attention, certains réglages peuvent perturber des périphériques USB ou le comportement réseau. Testez avant de rendre ça permanent.
Pour aller plus loin dans l’identification des coupables, turbostat (paquet du même nom) donne une vision chirurgicale des C-states du processeur. Lancez-le et regardez la colonne « Pkg%pc8 » ou « pc10 » : ce sont les états de veille profonde. Si ces pourcentages restent proches de zéro même quand la machine est idle, quelque chose empêche activement le CPU de dormir.
Le vrai coupable que personne ne regarde : les réveils noyau
Les processus utilisateur sont souvent innocents. Le vrai drame se joue au niveau du noyau, avec les timers kernel. La commande qui permet de les inspecter :
cat /proc/timer_list | grep -A5 "timer_list"
C’est verbeux et difficile à lire. Mieux vaut utiliser perf, l’outil d’analyse de performances du noyau Linux :
sudo perf stat -a sleep 10
Cette commande mesure l’activité système pendant 10 secondes. Le nombre de « context-switches » et de « cpu-migrations » vous donne une idée de l’agitation générale. Plus de 5 000 context-switches par seconde au repos, c’est anormal.
Une autre piste souvent négligée : les drivers graphiques. Sur les machines avec GPU discret (typiquement une config Intel + Nvidia ou AMD), le GPU discret peut rester allumé en permanence si le système de gestion dynamique ne fonctionne pas correctement. Pour vérifier l’état de votre GPU Nvidia sous Linux :
cat /proc/driver/nvidia/gpus/*/information
Et pour voir si le runtime PM (power management) est activé :
cat /sys/bus/pci/devices/*/power/runtime_status
Si vous voyez « active » en permanence pour votre GPU discret alors qu’aucune appli 3D ne tourne, c’est lui qui grille votre batterie. La solution passe généralement par activer le mode PRIME Offload correctement ou par un outil comme envycontrol sur les configs hybrides.
Rendre les optimisations permanentes (sans tout casser)
PowerTop avec --auto-tune applique ses réglages jusqu’au prochain redémarrage. Pour les pérenniser proprement, deux approches coexistent. La première : créer un service systemd qui lance powertop --auto-tune au démarrage. Simple, mais un peu brutal. La seconde, plus élégante : utiliser TLP, le gestionnaire d’alimentation de référence sous Linux.
TLP s’installe depuis les dépôts officiels sur Debian, Ubuntu, Fedora et leurs dérivés, et il gère automatiquement des dizaines de paramètres : fréquence CPU, gestion des disques NVMe, USB autosuspend, SATA link power management… Sa config se trouve dans /etc/tlp.conf, et le fichier est extrêmement bien commenté. Vous n’avez pas besoin de tout toucher : les valeurs par défaut sont déjà bien pensées pour un usage portable.
Pour voir ce que TLP fait en ce moment sur votre machine :
sudo tlp-stat -s
La commande affiche l’état de chaque paramètre géré, avec la valeur active et souvent une explication. C’est un excellent point de départ pour comprendre ce qui se passe avant de modifier quoi que ce soit.
Un dernier outil à avoir dans sa besace : upower -d, qui donne l’état de santé réel de votre batterie (charge actuelle, capacité maximum mesurée vs capacité design, nombre de cycles). Une batterie à 60% de sa capacité d’origine ne pourra pas durer 8 heures peu importe ce qu’on optimise au niveau logiciel. Ça évite de chercher pendant des heures un problème software qui est en fait un problème hardware.
Ce qui frappe avec Linux et la gestion batterie, c’est l’écart entre ce que le système est capable de faire quand il est bien configuré et ce que la plupart des distributions proposent out-of-the-box. Ubuntu, Fedora et compagnie font des progrès, mais ils restent prudents sur les optimisations agressives pour ne pas casser les cas limites. Le revers de cette prudence, c’est que des millions de portables Linux tournent avec une autonomie médiocre alors qu’un après-midi de diagnostic suffisait à tout changer. La batterie que vous pensiez à bout de souffle a peut-être encore beaucoup à dire.