Comment réduire sa consommation électrique avec GNU/Linux ?
image/svg+xml
Comment réduire sa consommation électrique avec GNU/Linux ?
Michael Opdenacker
JDLL 2023, Lyon
Comment réduire sa consommation
électrique avec GNU/Linux ?
Passionné de logiciels libres
Fondateur de la société Bootlin
Ingénierie en systèmes embarqués
Siège social dans l'agglomération lyonnaise ;-)
Auteur de supports de formation libres
(Linux embarqué, noyau Linux, réduction
du temps de démarrage...)
Contributeur au Linux Ecology HOWTO
dans les années 2000.
Michael Opdenacker
Suite à la crise énergétique et à l'urgence écologique
Besoin d'économiser l'énergie plutôt que d'en produire plus
GNU/Linux permet d'utiliser son matériel plus longtemps
Projet de mettre à jour le "Linux Ecology HOWTO"
Pourquoi cette présentation ?
Avoir plus d'autonomie sur batterie,
prolonger sa durée de vie
Savoir faire hiberner son pingouin
Partager nos meilleures pratiques
Motivations plus techniques
Matériel cible principal : ordinateurs portables sous GNU/Linux
Aussi : ordinateurs de bureau, serveurs
Aussi (un peu) : cartes électroniques embarquées
Objet de cette présentation
Mesurez votre consommation
Mise en veille, mise en hibernation
Gestion de l'écran
Gestion de la fréquence
Identifier les programmes les
plus consommateurs
Sujets abordés (1)
Mesurez votre consommation
Désactiver les périphériques non utilisés
Récupérer la chaleur générée
Sujets abordés (2)
Licence Creative Commons - BY - SA - 4.0
https://creativecommons.org/licenses/by-sa/4.0/
Raspberry Pi 3 Model B V1.2
Power
HDMI
Audio
USB 2x
USB 2x
ETHERNET
DSI (DISPLAY)
CSI (CAMERA)
GPIO
© Raspberry Pi 2015
Des questions ?
michael.opdenacker.org@bootlin.com
Lien vers la présentation:
https://bootlin.com/pub/conferences/2023/jdll/
Présentation réalisée avec les logiciels libres Sozi et Inkscape
Images: https://bootlin.com/pub/conferences/2023/jdll
Procurez-vous un wattmètre
Neuf : environ 20 EUR
Pas génial pour la conso totale d'un
PC (kW), mais bien pour la conso
instantannée (W)
Vous servira pour les autres appareils
de votre domicile.
Mettez votre système en veille
Presque tout est éteint, sauf la RAM
Consommation d'énergie négligeable pour
le wattmètre. Sauf si vous êtes sur batterie.
Facile à faire dès que vous laissez votre ordi.
- Sur ligne de commande
- Avec systemd
Comment mettre votre système en veille ?
Normalement facile sur toute distro graphique
Depuis la ligne de commande (avec systemd):
systemctl suspend
ou commande bas niveau (ne verrouille pas l'écran):
sudo sh -c "echo mem > /sys/power/state"
Comment réveiller votre système ?
Toujours plus facile de s'endormir !
Sur PC, réveiller en appuyant sur le bouton d'allumage
des fois, en bougeant une souris USB
Les sources qui peuvent réveiller votre PC se trouvent dans
/sys/class/wakeup/
Plus de détails sur
https://wiki.archlinux.org/title/Power_management/Wakeup_triggers
Sur un serveur à distance, pas de solution
simple pour sortir de veille.
En résumé
Mettez votre pingouin en veille
à chaque fois que vous le quittez
Passez en hibernation la nuit et
par une prise, coupez tous les périphériques,
y compris la box Internet (si possible)
En voyage, utilisez l'hibernation pour prolonger
la durée de vie de votre batterie.
La fréquence du CPU s'adapte bien à
l'activité de vos programmes.
Attention à la consommation de vos écrans
Récupérez la chaleur produite
Laissez travailler votre imagination !
Mon levain adore ma Livebox
(conso : 12 W)
Ou bien...
Mettre votre système en hibernation
L'état de votre système est sauvegardé sur disque,
et puis votre machine est éteinte.
Meilleur pour des extinctions plus longues, car aucune conso
électrique et pas d'usure de la batterie pour les portables.
Hélas pas toujours disponible en standard sur les distributions
récentes.
Pas très compliqué à mettre en place cependant.
Principes de l'hibernation (1)
L'hibernation se repose sur la mise en veille
Pour l'endormissement:
1. On simule une mise en veille
Sauvegarde en mémoire de l'état des périphériques
2. On copie toute la RAM sur le disque
Besoin d'une partition swap ou d'un fichier aussi gros que la RAM
3. On éteint la machine.
Principes de l'hibernation (2)
Pour le réveil:
1. On allume la machine, on démarre Linux
2. On recopie en mémoire le contenu
sauvegardé sur disque.
3. On réveille la machine depuis la RAM
comme si on sortait de veille.
Comment mettre en place l'hibernation ? (1)
Besoin de place sur disque pour stocker
l'image de la mémoire
Le plus simple : une partition swap au moins
aussi grande que la taille de la mémoire
Sinon, on peut stocker la mémoire dans un
fichier, un peu plus compliqué :
https://ubuntuhandbook.org/index.php/2021/08/enable-hibernate-ubuntu-21-10/
Comment mettre en place l'hibernation ? (2)
1. Trouver l'UUID de votre partition swap:
cat /etc/fstab | grep UUID=
2. Rajouter
resume=UUID=xxxx
à
GRUB_CMDLINE_LINUX_DEFAULT
dans
/etc/default/grub
3. Mettre à jour le fichier de configuration de Grub:
sudo update-grub
Testé sur Ubuntu 22.04
Comment déclencher l'hibernation ?
Simplement avec Systemd
(le plus complet : verrouillage de la session) :
systemctl hibernate
La solution bas niveau (pas de verrouillage) :
sudo sh -c "echo disk > /sys/power/state"
Comment sortir d'hibernation ?
Rallumer la machine, c'est tout !
Sur un serveur à distance, possibilité
d'utiliser le "Wake on LAN"
1. Activer la fonctionnalité dans le BIOS
2. Trouver l'adresse MAC de l'interface réseau de votre serveur
ip a
3. Passer cette adresse MAC à la commande wakeonlan :
wakeonlan f8:ca:b8:17:44:02
Sending magic packet to 255.255.255.255:9 with f8:ca:b8:17:44:02
Facile pour une machine sur même réseau, mais possible aussi
(sous conditions) sur un réseau sur Internet.
Rajouter une option "hiberner" (1)
Testé sur Ubuntu 22.04
Lancer le gestionnaire d'extensions de GNOME :
extension-manager
Rechercher "Hibernate Status Button", instaler et activer
cette extension.
Rajouter une option "hiberner" (2)
Testé sur Ubuntu 22.04
Il faut aussi créer un fichier
/etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla :
[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes
[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;
org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;
org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes
Source :
https://ubuntuhandbook.org/index.php/2021/08/enable-hibernate-ubuntu-21-10/
Attention à la consommation de vos écrans !
Portable qui ne fait rien luminosité maximale:
14.88W
Portable qui ne fait rien luminosité minimale:
10.04W
Portable qui ne fait rien écran éteint:
7.44W
Conclusion : un écran au max de luminosité
peut représenter la moitié de votre consommation
électrique quand le PC ne fait rien !
Comment éteindre vos écrans ?
Commande pas très pratique à cause de
sudo
:
$ sudo vbetool dpms off
(bof: avec sudo)
$ sudo vbetool dpms on
Plus pratique pour éteindre un écran en particulier :
$ xrandr -q
(identifier les écrans)
$ xrandr --output DP-2-3 --off
(éteindre)
$ xrandr --output DP-2-3 --auto
(rallumer)
Ne marchait pas chez moi pour un seul écran
Le plus simple pour éteindre ses écrans sans passer
en veille est sans doute de verrouiller son PC (Super - L)
Mais mieux de passer en veille si votre PC ne fait rien !
Adaptez la performance de votre processeur
Ubuntu offre en standard des options
pour contrôler la fréquence
de votre processeur.
Cela se base sur l'infrastructure
"cpufreq" du noyau Linux. On peut
même mettre des réglages différents
pour chaque coeur !
Extension GNOME CPU Power Manager (1)
GNOME offre des options
plus fines pour contrôler la consommation
et la performance de votre processeur.
Extension GNOME CPU Power Manager (2)
Compilation du noyau Linux (configuration "defconfig" sur x86)
- "Haute performance" : 14:37 min (mode actif: 35W, mode inactif : 10 W)
- "Economie d'énergie" : 40:45 min (mode actif: 15,5 W (moyenne), mode inactif : 15 W)
- "Multimedia" : 13:47 min (mode actif : 38W, mode inactif : 13W)
- "Silencieux" : 36:20 min (mode actif : 17.8 W, mode inactif : 12W)
=> Des résultats un peu surprenants, à refaire en les refaisant chacun
carte mère froide. Il semble que la gestion de l'énergie tienne compte de la température.
Merci aux participants à ma présentation pour cette interprétation plausible !
Enseignements:
- Le mode "Économie d'énergie" garantit une conso minimale. Bien sur batterie.
- Le mode "Haute performance" ne fait pas toujours tourner votre processeur
à fond. Il l'autorise juste.
Tests (un peu bruts) de performance
PowerTop - Disponible partout
Mesure ce qui consome le plus sur votre PC
Vous donne aussi des conseils pour améliorer les réglages.
Besoin d'être root et de fonctionner sur batterie (plus d'infos):
$sudo powertop
Qui consommera 30 fois moins ?
Si c'est pour jouer un rôle de serveur ou de
contrôleur d'affichage.
Une exception à la règle de conservation du matériel
PowerTop - Vue d'ensemble
PowerTop - Réglages
Remplacez votre vieux et gros PC par une carte embarquée
Détecter les activités qui consomment de l'énergie
Nouvelles options dans le menu "alimentation"
Qu'est-ce que la veille hybride ?
C'est à la fois une mise en veille et une mise en hibernation.
- Si vous reprenez rapidement votre ordinateur, celui-ci se réveille instantanément
- Si vous laissez plus longtemps votre ordinateur, la batterie finit par se vider,
mais au rallumage, vous retrouvez son état d'origine grâce à l'hibernation.
Une "super-veille" plus sécurisante, mais pas une alternative à l'hibernation,
qui elle seule économise votre batterie.
1
Titre
Michael Opdenacker
Pourquoi ?
Motivations techniques
Objet de cette présentation