Si vous utilisez Ubuntu 14.04 et suivants sur un ordinateur portable, vous êtes concerné par deux problématiques : l’autonomie de la batterie et l’échauffement des composants, qui va diminuer la durée de vie de votre matériel. Voici donc quelques astuces pour améliorer tout ça.

#Activez la mise en veille des cartes PCI et des ports USB

J’ai utilisé pendant longtemps TLP, un utilitaire plutôt bien fait mais qui rajoute différents scripts sur le système. Or le noyau Linux a déjà tout ce qu’il faut pour gérer intelligemment l’allumage et la mise en veille des périphériques internes de votre ordinateur, il est donc plus élégant d’utiliser directement ses capacités plutôt que d’y empiler une surcouche.

Powertop est un outil développé directement par Intel, d’abord comme outil d’audit et d’analyse de la consommation électrique, mais il peut également effectuer une configuration optimisée de votre système.

Ces trois commandes permettent de l’installer, de lancer la calibration du système et d’activer automatiquement toutes les options recommandées pour optimiser sa consommation :

1sudo apt-get install powertop
2sudo powertop --calibrate && sudo powertop --auto-tune

Notez que pendant la calibration, le script va éteindre l’écran et effectuer différentes manipulations. Laissez l’ordinateur tranquille pendant ce temps.

À l’issue du processus, Powertop aura réglé toutes les options qu’il aura jugées nécessaires. Cependant, ces réglages seront perdus au redémarrage. Vous avez deux options pour les rendre permanents :

  • une élégante et longue consistant à générer un rapport contenant les fichiers systèmes à modifier avec les paramètres à y ajouter (fichiers qui seront réinitialisés si les logiciels concernés sont mis à jour, il faudra alors recommencer).
  • une moins élégante mais plus rapide qui consiste à charger powertop comme un démon au démarrage de l’ordinateur.

Ubuntu utilise encore init.d comme chargeur de services. Créez donc un nouveau service dans le répertoire /etc/init.d :

1sudo gedit /etc/init.d/powertop

Enregistrez dans ce fichier :

 1#! /bin/sh -e
 2
 3DAEMON="/usr/sbin/powertop" # ligne de commande du programme
 4DEAMON_OPT="--auto-tune"    # argument à  utiliser par le programme
 5DAEMONUSER="root"           # utilisateur du programme
 6DEAMON_NAME="powertop"      # Nom du programme (doit être identique à l'exécutable)
 7
 8PATH="/sbin:/bin:/usr/sbin:/usr/bin" # Ne pas toucher
 9
10test -x $DAEMON || exit 0
11
12. /lib/lsb/init-functions
13
14d_start () {
15        log_daemon_msg "Starting system $DEAMON_NAME Daemon"
16	start-stop-daemon --background --name $DEAMON_NAME --start --quiet --chuid $DAEMONUSER --exec $DAEMON -- $DEAMON_OPT
17        log_end_msg $?
18}
19
20d_stop () {
21        log_daemon_msg "Stopping system $DEAMON_NAME Daemon"
22        start-stop-daemon --name $DEAMON_NAME --stop --retry 5 --quiet --name $DEAMON_NAME
23	log_end_msg $?
24}
25
26case "$1" in
27
28        start|stop)
29                d_${1}
30                ;;
31
32        restart|reload|force-reload)
33                        d_stop
34                        d_start
35                ;;
36
37        force-stop)
38               d_stop
39                killall -q $DEAMON_NAME || true
40                sleep 2
41                killall -q -9 $DEAMON_NAME || true
42                ;;
43
44        status)
45                status_of_proc "$DEAMON_NAME" "$DAEMON" "system-wide $DEAMON_NAME" && exit 0 || exit $?
46                ;;
47        *)
48                echo "Usage: /etc/init.d/$DEAMON_NAME {start|stop|force-stop|restart|reload|force-reload|status}"
49                exit 1
50                ;;
51esac
52exit 0</pre>

puis testez le avec la commande :

1sudo /etc/init.d/powertop start

Si tout se passe bien, vous verrez :

1* Starting system powertop Daemon
2[ OK ]

Donnez alors les droits d’exécution au script à chaque démarrage :

1sudo chmod 0755 /etc/init.d/powertop && sudo update-rc.d powertop defaults

Ne reste qu’à redémarrer votre système, à ouvrir powertop dans un terminal sudo powertop et à naviguer avec la touche Tab jusqu’à l’onglet Tunables où tous les paramètres doivent être à Bon.

#Utiliser le dernier driver Intel

Intel a sorti un contrôleur de fréquence processeur récent appelé intel_pstate  pour les processeurs Ivy et Sandy Bridge. Ce contrôleur n’est pas activé par défaut car son implémentation cause encore des bugs, mais il est plus efficace que le contrôleur ondemand lorsqu’il fonctionne.

Pour l’activer, il faut rajouter une option dans grubcfg :

1sudo gedit /etc/default/grub

Dans le fichier, répérez la ligne de GRUB_CMDLINE_LINUX_DEFAULT et modifiez la comme suit :

1GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_pstate=enable"

Puis mettez à jour Grub :

1sudo update-grub

Redémarrez et vérifiez que intel_pstate est utilisé en lançant la commande :

1cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_driver

intel_pstate fournit le gouverneur powersave. Installez cpufrequtils et indicator-cpufreq pour pouvoir choisir entre les gouverneurs powersave et performance à la volée avec la commande :

1sudo cpupower frequency-set -g performance
2sudo cpupower frequency-set -g powersave

#Monitorer la température processeur

Intel a également développé thermald, un daemon conçu pour travailler avec intel_pstate, afin de limiter l’échauffement du processeur et de gérer efficacement le rapport échauffement/performance. Il est présent dans les dépôts officiels

1sudo apt-get install thermald

Ce daemon ne dispose pas d’options de configuration, il ne fait que charger des des algorithmes adaptatifs de gestion de la fréquence processeur. Il sera chargé automatiquement au prochain redémarrage de votre machine.

#Utiliser les derniers drivers de votre carte graphique

Linux 3.13 et Ubuntu 14.04 ont introduit une gestion des cartes graphique hybrides (technologie Optimus de Nvidia) beaucoup plus fine et intelligente, même si tout n’est pas parfait. Il est recommandé d’utiliser les derniers drivers propriétaires de votre carte graphique (nvidia-331-updates + nvidia-optimus dans le cas de Nvidia), car les pilotes libres sont régulièrement moins efficaces dans la gestion de l’énergie que les pilotes propriétaires.

#Commentaires sur les auteurs de logiciels

Il existe différents projets logiciels libres pour gérer l’énergie et optimiser son système. Ceci fait la force de Linux et du monde Libre en général. Le problème est que cet aspect touche la couche bas niveau de l’ordinateur : le matériel. La gestion de l’énergie passe globalement par la mise en veille des composantes matérielles non utilisées et leur rallumage à la demande. Cependant, le matériel n’étant pas documenté (les constructeurs veulent éviter autant que possible l’espionnage industriel), les développeurs indépendants qui veulent travailler sur le matériel n’ont d’autre choix que de le rétro-ingénier pour essayer de comprendre comment il fonctionne. Ceci ne donne pas toujours de très bons résultats.

Il est dans ce cas plus efficace et plus sûr de faire confiance aux scripts et pilotes conçus par les fabricants directement, car ils sont les seuls à connaître leur matériel, même si leur code n’est pas toujours de très bonne qualité.