Jump to content

[EXP] Governor & I/O Scheduler


Recommended Posts

Bonjour a tous, petite explication sur les governors et i/o scheduler les plus populaires.

GOVERNOR

Le "Governor" (gouverneur en Anglais, pour les anglophobes) est un module inclus dans le kernel qui s'occupe de gérer la fréquence du processeur en fonction des activités du smartphone ou de la tablette.

C'est lui qui va faire augmenter la fréquence du processeur quand vous lancez un jeu par exemple, pour vous permettre de jouer confortablement sans lag, et lui encore qui va faire baisser la fréquence de votre CPU quand vous éteignez l'écran de votre appareil, ou que vous en vous en servez pas.

Pour résumer, le Governor s'occupe d'équilibrer les performances et l'autonomie, en temps réel, selon les tâches que vous effectuez avec votre Android.

Voici la liste des Gouverneurs de Processeur que nous couvriront dans ce tutoriel :

Ondemand

OndemandX

Conservative

Interactive

InteractiveX

Lulzactive

Smartass

Smartass V2

Intellidemand

Lazy

Lagfree

Lionheart

LionheartX

Brazillianwax

SavagedZen

Userspace

Powersave

Performance

Pegasus-q

Hotplug

Wheatley

a) Ondemand

Dans la plupart des kernels (dont les kernels officiels (aussi appelés kernels stocks), Ondemand est le gouverneur par défaut.

Le but principal de ce gouverneur est de passer à la fréquence maximale du processeur dès qu'il détecte une activité pour assurer un temps de réponse optimal. Lorsque l'activité s'arrête ou commence à décroître, Ondemand va baisser graduellement la fréquence du CPU jusqu'à arriver à la fréquence minimale du processeur lorsque l'appareil est inactif.

C'est un gouverneur relativement fiable. Malgrès tout, il n'est pas très performant en terme d'autonomie, et même au niveau des performances ce n'est pas le top. Son principal problème se trouve certainement dans le choix et la détection des tâches, ce qui cause souvent une sorte de 'ping-pong" entre la fréquence maximale et la fréquence minimale lors d'une utilisation sur la durée.

Personnellement, pour un équilibre autonomie/performances je ne conseillerait pas Ondemand en premier lieu.

B) OndemandX

En gros, c'est Ondemand avec l'ajout des profils "réveil" et "veille". Cela résulte en un Ondemand un peu plus économe en batterie ; lorsque l'écran est éteint, la fréquence maximale de votre processeur passe à 500mhz. Le temps de réponse lorque vous allumez votre écran peut en pâtir un peu. Le choix du I/O Scheduler sera important si vous choisissez ce Gouverneur, mais chaque chose en son temps...

c) Conservative

Encore une variante d' Ondemand qui cette fois va augmenter la fréquence petit à petit lorsqu'une tâche est détectée , au lieu de passer directement à la fréquence max, afin d'économiser de la batterie. Il augmente et réduit la fréquence de mainère plus graduelle qu' Ondemand.

d) Interactive

Une autre variante d' Ondemand qui améliore cette fois les performances au détriment de l'autonomie.

Au lieu de déterminer la fréquence à chaque intervalle comme la plupart des autres variantes Ondemand, il détermine la fréquence lorsque l'appareil n'est plus inactif.

Qu'est-ce que ça change ? quand les autres gouverneurs déterminent quelle fréquence est adaptée à telle tâche en cours, il le font toutes les X secondes, ce qui peut entrainer une baisse du régime du proc' toutes les X secondes, et donc être moins stable et moins performant. Néanmoins la batterie se déchargera plus vite qu'avec ces autres variantes.

e) InteractiveX

Clone d' Interactive avec un profil de réveil, meilleure autonomie qu' Interactive.

f) Lulzactive

La nouvelle trouvaille de chez Tegrak, une sorte de mix entre Interactive et Smartass, très populaire en ce moment.

Dans l'ancienne version, lorsque la charge liée aux tâches dépasse les 60%, le gouverneur passe au pallier de fréquence du dessus, ce qui fait donc baisser le pourcentage de la charge et, quand cette dernière dépasse à nouveau les 60%, il passe au pallier encore supérieur, et ainsi de suite.

Dans la nouvelle version, trois nouveaux paramètres personnalisable sont ajoutés : "inc_cpu_load", "pump_up_step", "pump_down_step". En clair, il est désormais possible de choisir le pourcentage de charge CPU à partir duquel le gouverneur doit passer au pallier de fréquence supérieur. Il est également possible de dterminer le nombre de ces palliers d'augmentation/baisse de la fréquence.

Afin de ne pas effrayer certains lecteurs novices en terme de programmation, voici la "traduction" de la logique de ces paramètres :

"Si l'on considère que :

- le pourcentage à partir duquel passer au pallier supérieur (inc_cpu_load) = 70%

- le nombre de palliers à augmenter lorsque la charge dépasse le pourcentage précisé = 2

- le nombre de palliers à descendre lorsque la charge repasse en dessous du pourcentage = 1

Alors :

Si la charge cpu est supérieure ou égale à inc_cpu_load, le gouverneur applique pump_up_step (passe au pallier supérieur).

Si la charge cpu est strictement inférieure à inc_cpu_load, le gouverneur applique pump_down_step (passe au pallier inférieur)".

g) Smartass

Le résultat du travail de réécriture complète du code du gouverneur Interactive par un programmeur du nom d' Erasmusx.

Son principal objectif étant d'optimiser la batterie sans répercussions sur les performances.

SmartassV2 économise néanmoins plus de batterie pour des performances égales.

h) SmartassV2

La version 2 du Smartass original d' Erasmusx. Le gouverneur favori de beaucoup d'utilisateurs d' Android.

Ce gouverneur décide de la fréquence "idéale" pour la tâche en cours et monte progressivement jusqu'a cette fréquence plus rapidement qu'il n'en redescend. Il utilise des fréquences idéales différentes selon si l'écran est allumé ou éteint (à savoir les paramètres awake_ideal_freq et sleep_ideal_freq).

Contrairement à son grand frère, SmartassV2 n'a pas de limite de fréquence maximale quand l'écran est éteint, ce qui lui permet d'avoir à sa disposition la fourchette de fréquences entière pour les deux états d'écran.

Le mot d'ordre de ce gouverneur est équilibre.

i) Intellidemand

Aussi connu sous le nom d' Intelligent Ondemand (créé par Faux), ce gouverneur se comportera différemment selon la charge du GPU (le processeur de la carte graphique) ; si cette dernière est élevée, il se comportera comme Ondemand, si au contraire la charge GPU est basse ou nulle, il limitera la fréquence en fonction des palliers disponibles dans votre kernel correspondant à l'économie de batterie, un peu à la manière d' Interactive.

Ici, le choix de la fréquence se fait en fonction du temps d'inactivité du GPU (Graphical Processing Unit).

j) Lazy

Créé par Ezeekel, ce gouverneur est encore une fois basé sur Ondemand. L'ajout majeur de cette variante est le fait de spécifier un temps minimum passé sur le même pallier de fréquence (le paramètre min_time_state).

Le but est ici d'éradiquer les ralentissements et les instabilités causées par le changement rapide de fréquence d' Ondemand.

Il en existe une variante appellée Lazyass.

k) Lagfree

Enième variante d' Ondemand, axée sur l'autonomie. La différence principale est que ce gouverneur ne saute aucun pallier lorsqu'il augmente et baisse la fréquence, contrairement à Ondemand qui passe (trop ?) souvent directement à 100%.

Ce gouverneur ne vous satisfera pas si vous avez besoin de performances élevées rapidement après avoir sorti votre appareil de l'inactivité (lancement d'un jeu ou d'une vidéo juste après avoir allumé l'écran par exemple).

Certains utilisateurs ont rapportés que la lecture vidéo avait des problèmes de fluidité avec ce gouverneur.

l) Lionheart

L'idée originale de ce gouverneur vient de Netarchy. Ce gouverneur est inspiré de Conservative et basé sur l'update 3 de Samsung.

Un peu gourmand en batterie, les paramètres ont été changés pour plus de fluidité. Quelques petits changements (tweaks) sont conseillés pour optimiser l'utilisation de ce gouverneur. Ces tweaks proviennent de Knzo et Morfic.

Voici ce qu'il est conseillé de modifier :

sampling_rate : changer la valeur pour 1000, 2000 ou 5000. Mettre plus de 5k semble dangereux.

up_thresold : changer pour 60

down_thresold : changer pour 30

freq_step : changer pour 5

Le I/O Scheduler deadline complète très bien ce gouverneur.

m) LionheartX

Clone de Lionheart avec l'ajout d'un mode suspend basé sur le governor Smartass et quelques changements dans les paramètres des palliers de fréquences.

n) BrazillianWax

Basé sur SmartassV2, avec un changement de palliers plus aggressif, il procure plus de performance et moins d'autonomie que ce dernier.

o) SavagedZen

Une autre variante de SmartassV2, avec un meilleur équilibre performances/batterie que BrazillianWax.

p) Userspace

Au lieu de déterminer lui même les fréquences à utiliser, il laisse l'utilisateur determiner lui-même la fréquence du cpu.

Concrètement, la fréquence ne change pas tant que vous ne la changez pas. Ne pas utiliser sur la durée, plutôt destiné à du testing.

q) Powersave

Bloque le processeur sur la fréquence minimale. Très très lent, à déconseiller. La batterie peut durer beaucoup plus longtemps par contre. Peut être utile si vous vous perdez dans la forêt et que vous ne captez pas ^^

r) Performance

Bloque la fréquence du processeur sur la fréquence maxi. Utilisez le pour faire des benchmarks de votre appareil, mais n'oubliez pas de le désactiver juste après, votre processeur pourrait en prendre un coup !

s) Pegasusq

Le Pegasus-q / d est un governor multi-core basé sur le governor Ondemand et vice-gouverneur hotplug.

Les processus en cours sont dans une file d'attente, nous savons que plusieurs processus peuvent s'exécuter simultanément . Ces processus sont actifs dans un tableau, qui est un champ appelé « Lancer Files », attente et poursuite, avec leurs valeurs de priorité arrangés (ces priorité serviront au planificateur de tâches, qui décide alors de quel processus sera lancé la prochaine fois).

Pour s'assurer que chaque processus a sa partie équitable des ressources, chaque processus est lancé pendant un certain temps et s'arrête, puis reprend a nouveau sa place dans la file d'attente jusqu'à ce qu'on le sollicité a nouveau. Si un programme est terminé, et afin que d'autres puissent s'exécuter, le programme avec la plus haute priorité dans la file d'attente actuelle est exécuté

t) Hotplug

Le gouverneur Hotplug a une fonction très similaire au gouvernor OnDemand, avec l'avantage supplémentaire d'être plus précis sur la façon dont il se retire à travers la table de fréquence du noyau, parce que le gouvernor mesure la charge CPU de l'utilisateur. Cependant, le trait caractéristique du gouvernor Hotplug est sa capacité à couper le core du processeur non utilisé durant les périodes de faible utilisation du CPU. Ceci est connu comme «connexion à chaud».

De toute évidence, ce gouverneur n'est disponible que sur des dispositifs multi-cœurs.

u) Wheatley

S'appuyant sur le classique gouverneur «ondemand», est mis en œuvre gouverneur de Wheatley. Le gouverneur a deux paramètres supplémentaires:

target_residency - La résidence minimale moyenne en ms qui est considéré comme acceptable pour un bon usage efficace de l'état C4. Par défaut est 10000 = 10 ms.

allowed_misses - Les intervalles d'échantillonnage numériques, qui suivent la résidence moyenne, sont autorisées à être inférieure à la résidence cible. Permettant au gouverneur de réduire la fréquence.

Cela garantit que le gouverneur n'est pas trop agressif dans la baisse de la fréquence, et la réduit simplement parce que certains processus d'arrière-plan ont temporairement causer un plus grand nombre de réveils. La valeur par défaut est 5.

Wheatley est prévu pour ne pas entraver le bon usage C4 des tâche, où la C4 peut être utilisé correctement.

Pour la navigation sur Internet le temps passé en C4 a augmenté de 10%, les points et la moyenne de séjour a augmenté d'environ 1 ms. Je suppose que ces différences sont principalement dues au différents comportement de navigation (je passe la dernière fois plus multi-tabulation).

Mais au moins, on peut dire que Wheatley n'interfère pas avec l'utilisation correcte de l'état C4 lors de tâches «légères». Pour la lecture de musique avec écran éteint le temps passé en C4 est pratiquement inchangé, mais la résidence moyenne est réduite d'environ 30ms à 18ms , mais cela est encore plus qu'acceptable.

Ainsi, les résultats montrent que Wheatley fonctionne comme prévu et veille à ce que l'état C4 est utilisé chaque fois que la tâche permet une bonne utilisation efficace de l'état C4.

Pour les tâches plus exigeantes qui causent un grand nombre de réveils, et pour prévenir l'utilisation efficace de l'état C4, les stations de gouverneur ont un mécanisme de meilleure gestion de l'énergie, et ainsi diminuer la fréquence des échelles.

Donc, avec le nouveau et très souple gouverneur Wheatley on peut avoir le meilleur des deux mondes.

Ce gouverneur est uniquement disponible sur les appareils multi-core.

Source: http://androguide.fr...nors-schedulers

------------------------------------------------------------------------------------------------------------------------------------------

SCHEDULER

Ce sont les gestionnaires d'entrées/sorties (I/O). Ils gèrent notamment la lecture et l'écriture sur les cartes SD du téléphone.

Leur impact sur la batterie est minime et leurs performances respectives sont souvent sujets à controverse. A vous de voir...

Même source que pour les governors.

Noop

Noop n'est en fait pas si mauvais. C'est un scheduler simple, et quand il s'agit d'Android, le plus simple est le meilleur.

CFQ

Bien, CFQ est aux schedulers ce que Ondemand est aux governors. C'est le plus équilibré, ayant pour but de bien se comporter dans la plupart des scénarios. Toutefois, dans Android comme les choses fonctionnent différemment, ce n'est pas le plus adapté des schedulers. (ndr : L'auteur fait référence au mode de fonctionnement des cartes SD par opposition aux disques durs avec des temps d'accès complètement différents)

Deadline

Deadline est plutôt populaire avec BFQ. Il est utilisé dans certains kernels, par exemple celui de Netarchy pour le Nexus S. Cependant, bien qu'il soit meilleur que CFQ pour les dispositifs Android il est encore en-deça de VR.

VR

VR est un très bon scheduler avec des éléments de Deadline. Probablement le meilleur pour Android. C'est certainement le plus performant dans la plupart des benchmarks mais aussi le plus instable. Ses performances fluctuent, il peut être au dessus de la moyenne comme en dessous. Mais quand ça va bien c'est le meilleur ! (ndr : C'est avec VR que j'ai obtenu les meilleurs taux de transfert SD sur Antutu).

SIO

Comme son nom l'indique, Simple IO est simple. Rappelez-vous de ce que j'ai dit : Le plus simple est le meilleur. C'est le cas, spécialement pour les cartes SD. Il est robuste et bien qu'en deça de VR, c'est un des plus performants.

BFQ

Le voici, celui qui est à tort supposé comme étant le meilleur scheduler et semble être le plus populaire. Il est basé sur CFQ mais ses performances sont inférieures à VR ou SiO, même si c'est BFQv2 (bien qu'il semble n'être pas mauvais en taux de transfert USB).

Source: http://www.galaxys2....nces-t5921.html

Voila, en èspérant que ca répond a vos questions.

Edited by BARBAC
  • Like 10
Link to comment
Share on other sites

J'approuve ce topic, même si c'est juste la traduction du topic de droidphile ça peut-être utile pour certains. ;)

Perso je suis sur InteractiveX + SIO (fidèle à celui là même sur mon S2), c'est pas mal du tout.

Edited by Diaruga
Link to comment
Share on other sites

J'approuve ce topic, même si c'est juste la traduction du topic de droidphile ça peut-être utile pour certains. ;)

Perso je suis sur InteractiveX + SIO (fidèle à celui là même sur mon S2), c'est pas mal du tout.

Oui bien sur, je n'est fait que retranscrire ce que j'ai trouvé sur le net.

Les sources sont citées.

Merci pour l'approbation.....:D

depuis mon Nexus Prime TRINITY

Link to comment
Share on other sites

  • 1 month later...
  • 2 weeks later...

Ah mince, il a planté le tel ce matin alors j'ai pas pousser le test plus longtemps... je vais essayer en augmentant un peu les voltages alors. Merci pour ton retour.

Envoyé depuis mon Galaxy Nexus avec Tapatalk

Link to comment
Share on other sites

Hum, sur trinity, je ne sais quel governor choisir, quelqu'un peut me conseiller ? Les possibilités sont :

-interactive

-conservative

-userspace

-powersave

-ondemand

-performance

Ondemand.

Interactive un peu plus fluide mais plus gourmand.

depuis mon I9000

Link to comment
Share on other sites

Pour le N4 ?

Franchement je sais pas, j'attend quelques retour.

Pour l'instant je penche vers un note 2 , vu que je m'en sert pour le boulot. On m'en a prêter un une journée et je dois dire que c'est hyper pratique.

Et ce qui commence a moins me plaire c'est qu'avec les nexus ça devient commercial. Par contre le note 2 c'est une plus petite diffusion contrairement a ce qu'on pense.

A voir donc, je suis pas fixé...

depuis mon I9000

Link to comment
Share on other sites

OK d'accord. moi aussi je vais bien le mettre en vente :-). il est déjà vendu ?

Galaxy Nexus using Android 4.1.1 :-)

Pour finir sur ce HS, combien pensez vous qu'on puisse revendre nos GN maintenant que le N4 16go va sortir à 350 euros ?

Pas encore vendu, je l'ai mis a 250€.

Et il est neuf.......

depuis mon I9000

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...