Liens connexes

Dépêche modérée par

Dépêche éditée par

: Gestion de l'énergie : se dépêcher de ne rien faire

Posté par Sébastien Koechlin (). Modéré le 16 mai 2008.
1
Je vous propose la traduction de deux courts articles de Matthew Garrett publié sur Livejournal sur l'historique et l'intérêt des états de sommeil des processeurs x86 modernes et de la réduction de fréquence.

« Certaines personnes écrivent des logiciels qui vous permettent de choisir différents réglages selon que vous être branché sur le secteur ou sur batterie. Typiquement, l'un de ces choix vous permet de réduire la fréquence du processeur lorsque vous êtes sur batterie. Ceci est mauvais. Ceci est faux. Les personnes qui implémentent ces programmes sont dangereuses... »

> Lire la suite (57 commentaires, moyenne: 3,3).   [dépêche : 9551 caractères]

Les processeurs modernes sont fantastiques. Ils ont toutes sortes de fonctionnalités d'économie d'énergie ; c'est l'un de ces cas où tout le monde peut économiser de l'argent, augmenter les performances et prétendre préserver l'environnement en même temps. Tout le monde y gagne.

Hmmm, tout le monde y gagne à condition que votre logiciel ne soit pas mal fichu.

J'ai déjà écrit à propos des bénéfices des noyaux sans horloge (tickless), de la réduction du nombre de réveil du processeur et du fait de passer plus de temps dans les états C[0a] par le passé ; si vous ne connaissez pas ces choses, je vous invite à aller les lire en premier[0b]. Cette fois ci, je vais me concentrer sur un autre niveau matériel, et sur un autre niveau de choses mal fichues.

Depuis longtemps, les ordinateurs portables supportent le changement de fréquence du processeur selon que le portable est branché ou sur batterie. La consommation du processeur est proportionnelle à la fréquence, donc abaisser la fréquence entraîne une augmentation de l'autonomie. Bien sur, cela signifie aussi qu'il faut plus de temps pour faire une tache donnée. La raison pour laquelle ceci était quand même un gain, est qu'à cette époque les processeurs consommaient exactement autant d'énergie, qu'ils fassent quelque chose ou non. La société Transmeta a introduit une technologie appelée Longrun dans leurs processeurs Crusoe ; permettant de faire baisser simultanément la fréquence et la tension du processeur. Comme la consommation électrique est proportionnelle au carré de la tension, même une petite réduction de la tension provoque une économie d'énergie valable. Comme c'était la seule innovation intéressante apportée par Transmeta dans le monde du x86[1], de manière toute logique, cette amélioration a été copiée par tout le monde : Intel a développé sa technologie Enhanced Speedstep, AMD a proposé PowerNow et VIA a Longhaul.

Naturellement, réduire la fréquence du processeur augmente l'autonomie. Tout le monde est content ?

Non[2].

Le problème est que de nos jours, les processeurs ne consomment pas autant d'énergie lorsqu'ils ne font rien que lorsqu'ils travaillent. Les niveaux C préalablement mentionnés signifient qu'un processeur en sommeil ne consomme qu'un faible pourcentage de l'énergie consommée par un processeur actif - un processeur Intel ultra-basse tension a une consommation de l'ordre du watt. Exécuter du code, même à la plus basse tension et fréquence, consomme bien plus d'énergie. Par conséquent, nous voulons conserver le processeur en sommeil aussi longtemps que possible. La façon la plus facile de faire cela est de ne jamais rien exécuter, mais cela n'est pas une option valable. La solution alternative est de fonctionner lorsque cela est nécessaire, mais de s'assurer que cela soit fait le plus rapidement possible afin de retourner en état de sommeil. De manière contre-intuitive, cela signifie basculer à la plus haute tension et à la plus haute fréquence, exécuter le code, puis retourner en état de sommeil. En allant plus vite, nous économisons de l'énergie[3].

En résumé, la seule façon logique d'utiliser un processeur est de le faire fonctionner aussi rapidement que possible afin de lui permettre de passer le plus de temps possible en état de sommeil, situation dans laquelle la fréquence et la tension sont au minimum. La seule façon *logique*.

Certaines personnes écrivent des logiciels qui vous permettent de choisir différents réglages selon que vous être branché sur le secteur ou sur batterie. Typiquement, l'un de ces choix vous permet de réduire la fréquence du processeur lorsque vous êtes sur batterie. Ceci est mauvais. Ceci est faux. Les personnes qui implémentent ces programmes sont dangereuses. Ne les écoutez pas. N'approuvez pas leurs produits et leurs communiqués. Ne laissez pas votre fils aîné avoir des relations conjugales avec eux. Cela réduira l'autonomie de votre batterie, augmentera la température de votre maison, tuera les bébés phoques, fera monter le niveau de l'océan et emportera votre voiture. Si vous l'utilisez déjà, assurez vous qu'il utilise systématiquement la politique "ondemand" de cpufreq et qu'il ne limite pas les fréquences utilisées. J'incendierai personnellement tout contrevenant[4].

La seule raison légitime pour réduire la fréquence du processeur est de limiter la surchauffe (ce qui doit être fait dans le noyau - avoir un programme utilisateur chargé d'assurer le bon fonctionnement de la machine est une ânerie) ou rendre la machine plus silencieuse. Et si vous voulez une machine plus silencieuse, il devrait y avoir une case à cocher : "Réduire les performances afin de réduire le bruit" qui prenne en compte toutes les sources de chaleur de votre machine et non juste le processeur. Encourager la gestion du niveau sonore en demandant aux utilisateurs de réduire la puissance de leurs processeurs est une façon de dire "Regardez, nous avons mal conçu le système !". Laisser l'utilisateur choisir une politique de gestion du processeur ou une fréquence particulière n'est pas une bonne chose. Ne le faites-pas, à moins de vouloir voir des chatons morts, livrés par UPS.

[0a] NdT : Les états C (C1, C2...) sont des états ACPI normalisés dans lesquels il est possible de basculer le processeur afin lui faire économiser de l'énergie ; cela se traduit par un temps de réponse plus important, la purge des caches, l'arrêt de certaines horloges internes... Le processeur ne peut exécuter des instructions qu'au niveau C0, le retour à cet état est d'autant plus long que le processeur est à un niveau de sommeil profond.

[0b] NdT : Ces articles ne sont pas traduits ici, mais sur l'absence d'horloge, je vous invite à lire "Timers haute résolution et horloge dynamique" : http://linuxfr.org/2006/06/30/21038.html

[1] Et, probablement, toutes les licences qu'Intel et les autres ont fini par acquérir, ce qui transforme Transmeta en entreprise de gestion de la propriété intellectuelle et non en fabricant de processeur, mais ce n'est pas notre sujet.

[2] Même en ignorant toutes les personnes qui sont mécontentes pour des raisons totalement étrangères au sujet comme ceux qui se sont cogné le petit orteil ce matin ou ceux dont la famille a été soudainement assassinée.

[3] Il y a un cas particulier ici : c'est celui d'un système qui est constamment occupé. Imaginons que nous divisons par deux la vitesse du processeur. Avec la réduction de tension, cela entraîne une consommation réduite à 20% de la consommation initiale. Bien évidement, toutes les taches prennent maintenant deux fois plus de temps ; et votre écran, votre mémoire, votre disque dur, chipset et tout le reste continuent à consommer de l'énergie ; au final vous consommez deux fois plus d'énergie qu'il en aurait fallu à pleine vitesse. En faisant le calcul, on détermine que l'on économise de l'énergie si la consommation du processeur à pleine vitesse est de plus de 1,7 fois le reste de la plate-forme. Dans le monde réel, les choses se compliquent car les autres composants consomment également plus d'énergie s'ils fonctionnent plus longtemps : le disque dur sera actif pendant plus longtemps, le bus mémoire sera occupé pendant plus longtemps... Vous n'êtes pas, en principe, dans ce cas de 1,7 fois plus.

[4] Bien que la combustion de votre corps provoque une émission de carbone, la réduction énergétique consécutive entraîne un bilan positif sur le long terme.


Éclaircissements postés le lendemain:

Mon précédent article a été un peu trompeur sur un point : le débat sur la consommation d'un processeur à fréquence réduite. Le problème est que de nos jours, diviser par deux la fréquence d'un processeur ne réduit pas par deux la consommation électrique (voir les graphiques des diapositives de Arjan à l'OSCON l'année dernière par exemple). Je suppose que cela est dû aux mémoires cache qui représentent une part importante de la consommation. Réduire la fréquence ne réduit pas l'énergie nécessaire pour maintenir le contenu de ce cache ; par conséquent, la réduction énergétique est plus faible que prévue. Les niveaux C de sommeil les plus profonds désactivent le cache et économisent plus d'énergie.

Par conséquent, si diviser par deux la fréquence signifie que tout prend deux fois plus de temps mais ne réduit pas par deux la consommation électrique, quel est l'intérêt d'avoir des fréquences réduites ? Il faut un certain délai et une certaine quantité d'énergie pour changer d'état C ; et si le choix est entre basculer continuellement de la pleine vitesse à l'état C4 ou simplement rester à vitesse réduite (en passant éventuellement à l'état C1 ou C2), alors exécuter le programme à la plus faible fréquence peut être bénéfique. La politique "ondemand" du noyau Linux prend en compte la charge du processeur à travers le temps ; si une certaine valeur de seuil n'est pas atteinte, il considérera qu'il vaut mieux rester à la plus basse fréquence.

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

Why ?

Posté par GeneralZod () le 16/05/2008 à 16:58. (lien). Évalué à 7.

L'écriture de ces 2 articles n'est pas anodine, Matthew Garrett a été embauche par RedHat fin mars pour travailler sur l'aspect gestion d'énergie dans Linux.
D'ailleurs, je recommande la lecture des billets précédents qui sont tout aussi intéressants autour ce sujet (ACPI, interaction pilotes graphiques/gestion d'énergie)

http://www.flickr.com/photos/kernelslacker/1397519526/

Ondemand

Posté par krumtrash () le 16/05/2008 à 17:00. (lien). Évalué à 2.

Tout le monde sait qu'il faut laisser son proc en ondemand via cpufreq, non?

Mais il y a des exceptions: mattage de film ou de flash

pas convaincu.

Posté par lordcow () le 16/05/2008 à 17:05. (lien). Évalué à 2.

Il faut faire les calculs.

En etant autant de mauvaise foi que Matthew..

si P_C2 = 1W
si P_C0_2GHZ = 20W
si P_C0_1GHZ = 10W

pour n'importe quelle tache qui dure 1sec en mode 2GHZ

mode je me depeche de ne rien faire:
Q(2s) = P_C0_2GHZ*1s + P_C2*1s + Q_C0_TO_C2
= 20Ws + 1Ws + ..
mode basse frequence:
Q(2s) = P_C0_1GHZ*2*T
= 20Ws

--
Je est un autre.

un peu trompeur

Posté par Guillaume Knispel () le 16/05/2008 à 18:14. (lien). Évalué à 5.

La grande majorité de son article n'est pas sujette à polémique mais tout n'est pas aussi tranché qu'il veut bien le faire croire.

D'abord cela dépend bien évidemment du processeur (et oui, il existe encore des gens vaguement sensés qui ne changent pas de laptop une fois tous les deux mois) et donc il faut conserver la possibilité dans le soft d'avoir d'un comportement différent sur secteur et sur batterie.

Ensuite il ne prend pas en compte la consommation d'un ventilateur. Si on la prend en compte, maintenir la température suffisamment basse pour éviter qu'il ne se déclenche peut être avantageux dans le bilan calculs effectués / énergie consommées.

Un bon test

Posté par a_jr () le 16/05/2008 à 18:58. (lien). Évalué à 2.

Un bon test si vous avez un ordinateur portable.
Dans un premier temps, configurez le systeme pour favoriser l'economie d'energie. Clic clic clic, hop, c'est fait ? Alors debranchez l'adaptateur secteur et lancez le chronometre. Travaillez comme a votre habitude jusqu'a extinction de l'ordinateur. Combien de temps a-t-il tenu ?

Rechargez la batterie et configurez le systeme pour respecter les concepts presentes dans l'article. A nouveau, debranchez l'adaptateur secteur et lancez le chronometre. Travaillez comme a votre habitude jusqu'a extinction de l'ordinateur. Et la, combien de temps a-t-il tenu ?

En ce qui me concerne, j'ai remarque que mon ordi tient mieux quand les economies d'energies de l'OS sont activees. Cela me rend sceptique vis-a-vis de l'article.

Le bonjour chez vous,
Yves

Pas à l'utilisateur de deviner

Posté par Michel Galle () le 16/05/2008 à 20:17. (lien). Évalué à 3.

l'article dit que vous serez pas plus malins que le processeur et le noyau.

Décharger cette gestion sur l'utilisateur est un leurre.


A ce propos, os X sur un macbook pro ne permet presque aucun choix sur la batterie, et en aucun cas proposer de varier la fréquence (ou tension) du cpu à l'utilisateur.

A a juste de savoir s'il faut "éteindre ou pas le disque dur le plus souvent possible" (choix pas évident car le disque dur est le truc le plus lent à se réveiller, cela peut énerver l'utilisateur. c'est un échec technologique là.

et diminuer un peu la lumière de l'écran ou pas.

Tout le reste est masqué et géré selon le cas par l'os et le matériel.

Revenir en haut de page