Pourquoi la conception du système d'exploitation est-elle en mesure de réduire la consommation d'énergie?


11

J'ai lu que les systèmes d'exploitation comme Android et iOS sont en quelque sorte optimisés pour améliorer la durée de vie de la batterie.

Ma compréhension est qu'un CPU exécute un certain nombre d'opérations dans un certain temps, donc je pense que vous pouvez accélérer les applications en réduisant le nombre d'opérations requises, mais comme le CPU fera toujours x opérations en y temps, cela ne devrait pas affecter le pouvoir?

De plus, si un processus occupe plus de RAM, consomme-t-il plus d'énergie?

Réponses:


15

Les processeurs courants qui vont dans les smartphones, les ordinateurs portables et même les ordinateurs de bureau ont une fréquence d'horloge variable. Lorsque le planificateur détecte qu'il a un temps d'inactivité, il peut réduire la fréquence d'horloge et l'augmenter à nouveau s'il y a plus de processus en compétition pour le temps CPU.

Les processeurs optimisés pour les appareils alimentés par batterie ont tendance à être composés de nombreux composants fonctionnels qui ont chacun leur propre horloge (exemple: ARM Cortex A8 ). Lorsqu'un composant est inactif, le système d'exploitation peut le désactiver (ou réduire son horloge), ce qui économise de l'énergie. Par exemple, sur de nombreux processeurs multicœurs (tels que ceux des appareils mobiles haut de gamme), chaque cœur peut être activé ou désactivé séparément. ARM est particulièrement bon dans ce jeu, ce qui est l'une des raisons pour lesquelles la plupart des smartphones ont des processeurs ARM.

La variation de la fréquence d'horloge ou la désactivation de l'horloge des composants électroniques est appelée gestion de l'alimentation . Il s'agit généralement d'une partie complexe de l'écriture et de l'optimisation d'un système d'exploitation pour un appareil alimenté par batterie, avec de nombreuses dépendances sur le modèle matériel exact.

Ce qui vaut pour le CPU vaut aussi pour les périphériques. L'écran rétro-éclairé est un grand consommateur d'énergie sur un smartphone, par exemple, suivi par la radio. Le système d'exploitation du processeur peut jouer un rôle dans la gestion de l'alimentation des périphériques; les puces secondaires exécutent également leur propre firmware qui gère également l'alimentation.

Les applications ont leur rôle à jouer pour réduire la consommation d'énergie: elles doivent permettre au système d'exploitation de faire ce qu'il veut. La pire chose qu'une application puisse faire est d'interroger - exécuter une boucle comme while (not_ready()) {}. Même l'introduction d'un petit retard comme dans while (not_ready()) {usleep(100);}n'aide pas car cela ne laisse pas assez de temps au processeur pour passer en mode basse consommation, ou si c'est le cas, chaque réveil infructueux signifie un gaspillage d'énergie. Ainsi, les API du système d'exploitation doivent être conçues de sorte que les applications n'aient jamais besoin d'interroger, mais peuvent à la place s'abonner à une sorte de mécanisme d'événement et rester inactives jusqu'à ce qu'elles soient informées d'un événement pertinent. Les applications doivent à leur tour tirer parti de ces mécanismes, de sorte que la conception de l'ensemble de la pile logicielle a un impact sur la consommation d'énergie.

Vous pouvez obtenir des informations sur ce qui est responsable de la consommation d'énergie de votre PC avec l' utilitaire Intel Powertop . Les smartphones ont généralement un moyen de voir combien les applications d'alimentation ont également consommé. La prise en compte précise de la consommation d'énergie par application est difficile: si un composant se réveille pour deux applications, le temps de réveil peut être imputé à l'une d'entre elles de façon quelque peu arbitraire ou à aucune; la consommation d'énergie des périphériques n'est pas toujours facilement retracée à l'application responsable.

Une puce RAM ne sait pas lequel de ses bits stocke les données d'un processus actif, elle ne peut donc pas être désactivée de cette manière de manière sélective. La consommation d'énergie d'un processus n'est pas liée à la quantité de mémoire qu'il utilise (sauf dans la mesure où les accès RAM consomment de l'énergie, mais réutiliser la même mémoire ou utiliser différentes zones RAM ne fait aucune différence en ce qui concerne la consommation d'énergie).


4

En termes de puissance processeur, la principale chose que le système d'exploitation peut faire est de fournir des API qui découragent les applications d'interroger. (Et éliminez également toutes les interrogations à l'intérieur du noyau et des pilotes de périphériques, le cas échéant.) Ensuite, le processeur peut être mis en veille à faible puissance chaque fois qu'il n'y a rien à faire.

Pour chaque appareil, les applications utilisateur doivent pouvoir s'endormir après une demande, puis se réveiller à nouveau uniquement lorsque le résultat est prêt.

De toute évidence, les boucles d'interrogation serrées sont un désastre (car elles gardent le processeur pleinement éveillé et exécutent des sauts et des sauts inutiles.) Mais il existe des cas plus subtils, mais presque aussi mauvais, où l'application utilisateur définit des minuteries, se réveille sur l'alarme de la minuterie, vérifie une certaine condition, réinitialiser la minuterie et se rendormir.

Je connais moins cette partie, mais je pense qu'il peut également y avoir des façons créatives d'utiliser les contrôleurs DMA (accès direct à la mémoire) pour gérer de longues chaînes d'interruptions répétées sans réveiller le cœur du processeur lui-même.


3

Le rôle principal du système d'exploitation est de fournir un environnement d'exécution aussi indépendant que possible du matériel. Il sait qui utilise quel matériel, quand et comment quelqu'un utilise le matériel. Cela permet au système d'exploitation de réduire la consommation d'énergie du matériel lorsqu'il n'est pas utilisé.

Les matériels modernes offrent de nombreuses façons de réduire la consommation d'énergie, tels que

  • arrêt des périphériques non utilisés et d'une partie du processeur (unités arithmétiques à virgule flottante, cœurs de processeur, ...)
  • ralentissement des parties les moins utilisées (y compris le cœur du processeur)
  • réglage de l'alimentation pour s'adapter à la fréquence d'horloge actuelle (vous pouvez modifier la tension de fonctionnement d'un processeur à la volée, parfois par centaines de mA)

si un processus occupe plus de RAM, consomme-t-il plus d'énergie?

Pas vraiment. Néanmoins, si votre système possède 1 Go de DRAM, mais que vous n'utilisez que 512 Mo, avec certains contrôleurs de mémoire, il est possible d'arrêter de rafraîchir une partie de la DRAM, réduisant ainsi la consommation d'énergie. LPDDR prend en charge le rafraîchissement automatique de la zone partielle pour faire de même pendant le rafraîchissement automatique (lorsque le processeur est arrêté, ce qui est vrai la plupart du temps sur les appareils mobiles).

Comme vous pouvez le voir, il existe de nombreuses façons de réduire la consommation d'énergie sur les architectures modernes, mais cela nécessite le système d'exploitation pour le gérer. Certaines fonctionnalités, telles que PASR, sont très délicates à utiliser, cela demande beaucoup de travail sur l'OS pour adapter la gestion de la mémoire, mettre en place des procédures de suspension / reprise, ...


Remarque: Bien qu'elle ne soit pas nécessairement directement liée au processus gourmand en RAM, une utilisation accrue de la RAM peut entraîner une réduction de la mise en cache du système de fichiers, ce qui peut nuire à l'efficacité énergétique (ainsi qu'aux performances).
Paul A. Clayton,

3

Comme vous le savez sans doute, le système d'exploitation gère une variété de listes. Deux de ces listes sont la liste prête et la liste de minuterie. La liste prête identifie les tâches / threads prêts à être exécutés. La liste des minuteurs identifie les tâches / threads qui sont dans un état bloqué avec un délai d'expiration.

Imaginez que le système d'exploitation ait une liste prête vide. Autrement dit, il n'a plus de tâches prêtes à être exécutées (il est à l'état inactif). Certains processeurs (tels que le x86) ont une instruction d'arrêt que le système d'exploitation peut invoquer pour provoquer l'arrêt du processeur jusqu'à ce qu'il soit réveillé par une interruption externe (telle qu'une interruption par tick). Pendant cette période, il consomme moins d'énergie. Cette technique peut être encore améliorée en jetant un œil à la liste des minuteurs. Si vous êtes inactif et que vous savez que le plus tôt possible une tâche peut se réveiller à partir d'un tick de minuterie à 100 ticks, le taux de tick peut être temporairement modifié pour être dit 100 fois plus lent. De cette façon, le processeur peut dépenser encore moins d'énergie pendant une période plus longue car il n'aura pas à traiter jusqu'à 100 interruptions de tick.

Une fois l'interruption externe arrivée, le taux de tick devra être recalculé. Si l'interruption externe a rendu une tâche prête, le taux de tick revient à la normale. Sinon, le nombre de tiques à dormir doit être recalculé avec le nouveau taux de tiques (ralenti).

J'espère que cela t'aides.


2

Pour ajouter aux autres réponses:
Votre question considère iOS et Android comme des systèmes d'exploitation, mais le «système d'exploitation» n'en est qu'une partie.
Android et iOS sont des cadres et incluent de nombreuses parties qui ne sont pas considérées comme faisant partie du système d'exploitation réel, mais qui sont actives pour réduire la consommation d'énergie.
Par exemple, Android de par sa conception permet aux développeurs d'applications d'enregistrer leur état lorsqu'ils sont masqués, de sorte que les processus peuvent être interrompus lorsqu'ils ne sont pas activement utilisés et ainsi réduire la quantité de threads prêts et permettre l'arrêt du cœur et la réduction de la fréquence d'horloge.
Il y a des fonctionnalités dans le «système d'exploitation» qui définissent la luminosité adaptative, l'état de veille Wi-Fi, les threads de nettoyage, la mise en commun du calendrier, les indicateurs LED, le comportement de veille cellulaire et d'autres aspects qui affectent considérablement la consommation d'énergie.
De plus, certaines plates-formes mobiles ont travaillé dur pour optimiser leur ratio d'utilisation CPU / GPU, car le GPU est plus adapté au niveau graphique et c'est un ajout relativement nouveau au paysage mobile, de plus en plus de parties graphiques du système d'exploitation se déplacent vers le GPU, qui efface le travail du CPU et permet d'utiliser les optimisations de puissance du CPU (et dans de nombreux cas, d'accélérer également le système dans son ensemble).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.