Apprendre à paramétrer facilement son Kernel Android
Introduction
je précise au préalable que le but de ce sujet est de comprendre les réglages de base du Kernel.
Les principaux Gouvernors ( gouverneurs ) et I/O Scheduler ( ordonnanceurs )
pour les Tweaks veuillez consulter les sujets correspondants.
Après l'installation d'un Kernel Custom, chacun se demande comment régler au mieux son Kernel.
La bonne question à se poser est : quels sont mes besoins ( ou désirs )?
Batterie Batterie/Performance Performance
Pour répondre a cette question, nous avons besoin de connaitre un peu mieux qui fait quoi.
Il est primordial d'intégrer que la vie de la batterie et/ou la performance du système a un rapport direct avec le choix du Gouverneur.
Le Kernel ( Noyau ) est un peu comme un Coeur Humain, voir même comme tout notre système Cardio-Vasculaire.
En effet ! Le Kernel gère le Flux d'information de chaque cycle ( artères ) et sa Fréquence ( battement, oscilliation )
Voici donc une description, succincte, des particularités de chaque Gouverneur, dans une première partie.
Images & Vidéos
Gouverneurs
à savoir :
Le gouverneur définit le mode de gestion du processeur et de ses 4 coeurs.
Il crée des règles prédéfinies permettant de gérer la Fréquence du CPU.
zzmoove
Spoiler :
il s'agit de la version portée SGS1 du célèbre gouverneur "Smoove" du vieux noyau de " midnight " avec la pirise en compte de la fonction hotplug modifiée du gouverneur ktoonservative .
Ce gouverneur utilise plus souvent un seul processeur qui tourne au ralenti et en conséquence de cela, il a besoin de moins d'énergie. Selon la charge du système et les réglages du régulateur les 4 coeurs seront instantanément à nouveau disponible si cela est nécessaire.
Attention : l'ayant testé moi même je peux vous dire qu'il s'adresse a un utilisateur averti .
En effet, le CPU tourne littéralement au ralenti ! Cela nécessite une modification via Tweaks des réglages du réveil du CPU.
Sinon la sortie de veille est aléatoire voir Chaotique d'origine ( ça peut faire peur ... )
Ce gouverneur utilise plus souvent un seul processeur qui tourne au ralenti et en conséquence de cela, il a besoin de moins d'énergie. Selon la charge du système et les réglages du régulateur les 4 coeurs seront instantanément à nouveau disponible si cela est nécessaire.
Attention : l'ayant testé moi même je peux vous dire qu'il s'adresse a un utilisateur averti .
En effet, le CPU tourne littéralement au ralenti ! Cela nécessite une modification via Tweaks des réglages du réveil du CPU.
Sinon la sortie de veille est aléatoire voir Chaotique d'origine ( ça peut faire peur ... )
Ondemand
Spoiler :
Gouverneur d'origine dans presque tous les noyaux . L'objectif principal du gouverneur ondemand est de passer à la fréquence max dès qu'il solicité pour assurer la réactivité du système. Le Gouverneur Ondemand n'est pas très économe en énergie. Le gouverneur décide de la fréquence cible ( suivante ) par l'exigence instantanée pendant l'intervalle d'échantillonnage.
Conservative
Spoiler :
Il fonctionne comme gouverneur Ondemand en ajustant dynamiquement les fréquences en fonction de l'utilisation du processeur. Cependant, les augmentations de gouverneur conservative diminue la vitesse du CPU plus progressivement. Autrement dit, ce gouverneur augmente la fréquence pas à pas sur la charge CPU et des sauts à plus basse fréquence quand leCPU ralenti.
Il est donc recommandé pour une bonne vie de la batterie
Il est donc recommandé pour une bonne vie de la batterie
Interactive
Spoiler :
Il peut être considéré comme un Ondemand rapide.
Au lieu déchantillonner à chaque intervalle comme OnDemand, il détermine comment le CPU sort de veille.
Une priorité plus élevée pour l'augmentation de la fréquence CPU, donnant ainsi les tâches restantes au profit de la performance du processeur.
Interactive C'est un Ondemand intelligent Pourquoi?
L'échantillonnage de la charge CPU (comme Ondemand) peut conduire à une sous-alimentation du CPU, ce qui conduit à des pertes d'images, le bégaiement UI, etc ... Au lieu que l'échantillonnage du CPU soit à une vitesse donnée, le gouverneur Interactive vérifie s'il ya lieu d'augmenter la fréquence du processeur en place dès après la sortie de veille
Au lieu déchantillonner à chaque intervalle comme OnDemand, il détermine comment le CPU sort de veille.
Une priorité plus élevée pour l'augmentation de la fréquence CPU, donnant ainsi les tâches restantes au profit de la performance du processeur.
Interactive C'est un Ondemand intelligent Pourquoi?
L'échantillonnage de la charge CPU (comme Ondemand) peut conduire à une sous-alimentation du CPU, ce qui conduit à des pertes d'images, le bégaiement UI, etc ... Au lieu que l'échantillonnage du CPU soit à une vitesse donnée, le gouverneur Interactive vérifie s'il ya lieu d'augmenter la fréquence du processeur en place dès après la sortie de veille
Lulzactive
Spoiler :
Le gouverneur Lulzactive est conçu par l'équipe de Tegrak (Thor), basé sur les gouverneurs Interactive et de Smartass, il est l'un des favoris.
Nouvelle Version: Trois autres paramètres configurables par l'utilisateur: inc_cpu_load, pump_up_step, pump_down_step.
Contrairement a l'ancienne version, celle-ci donne plus de contrôle pour l'utilisateur.
Nous pouvons définir le seuil à partir duquel le gouverneur décide d'escalader le haut / bas. Nous pouvons également définir le nombre de pas de fréquence à sauter lors de l'interrogation de haut en bas.
Lorsque la charge de travail supérieure ou égale à inc_cpu_load, gouverneur échelles CPU pump_up_step intensifie. Lorsque la charge de travail est inférieure à inc_cpu_load, le gouverneur échellonne le CPU vers le bas pump_down_step étapes vers le bas.
Exemple:
Considérons
inc_cpu_load = 70
pump_up_step = 2
pump_down_step = 1
Si la fréquence actuelle = 200, chaque up_sampling_time-nous si la charge cpu> = 70%, cpu est agrandie 2 étapes - à 800.
Si la fréquence actuelle = 1200, chaque down_sampling_time-nous dit si la charge CPU <70%, cpu est réduite 1 étape - à 1000.
Nouvelle Version: Trois autres paramètres configurables par l'utilisateur: inc_cpu_load, pump_up_step, pump_down_step.
Contrairement a l'ancienne version, celle-ci donne plus de contrôle pour l'utilisateur.
Nous pouvons définir le seuil à partir duquel le gouverneur décide d'escalader le haut / bas. Nous pouvons également définir le nombre de pas de fréquence à sauter lors de l'interrogation de haut en bas.
Lorsque la charge de travail supérieure ou égale à inc_cpu_load, gouverneur échelles CPU pump_up_step intensifie. Lorsque la charge de travail est inférieure à inc_cpu_load, le gouverneur échellonne le CPU vers le bas pump_down_step étapes vers le bas.
Exemple:
Considérons
inc_cpu_load = 70
pump_up_step = 2
pump_down_step = 1
Si la fréquence actuelle = 200, chaque up_sampling_time-nous si la charge cpu> = 70%, cpu est agrandie 2 étapes - à 800.
Si la fréquence actuelle = 1200, chaque down_sampling_time-nous dit si la charge CPU <70%, cpu est réduite 1 étape - à 1000.
Lulzactiveq
Spoiler :
Lulzactiveq vise à optimiser le gouverneur luzactive de Tegrak par la fourniture d'un paramètre supplémentaire (dec_cpu_load) Scalling Down plus sensible, et Incorporation logique hotplug au gouverneur. Luzactiveq est le premier gouverneur basé sur Interactive avec hotplugging intégré (du moins la première de son genre pour la plate-forme Exynos). Quand CPU sort d'une boucle d'inactivité ( idle loop ) et il prend une décision de mise à l'échelle ( Scalling ), si la charge> = inc_cpu_load CPU est augmentee (comme luzactiveq originale) et si la charge Donc un Gouverneur parfaitement adapté aux multi-cœurs.
Smartass
Spoiler :
l s'agit d'un Interactive avec une vie de la batterie améliorée
Smartass V2
Spoiler :
Son but est de chercher la fréquence parfaite, ainsi il est très agressif si il a besoin et va chercher ensuite a redescendre sur une fréquence plus adapté a la batterie
Pegasusq
Spoiler :
Le Pegasusq est un multi-core basé sur le gouverneur Ondemand avec intégré le Hotplugging
Processus en cours dans la file d'attente, plusieurs processus peuvent s'exécuter simultanément . Ces processus sont actifs dans un tableau, qui est un champ appelé "Run Queue" ( file d'attente ) avec leurs valeurs prioritaires organisées (la priorité sera utilisée par le planificateur de tâches, qui décide alors quel processus suivant il fera fonctionner ).
Afin de s'assurer que chaque processus a sa juste part des ressources pendant un certain temps et finira par arrêter, puis de nouveau placé dans la file d'attente jusqu'à ce qu'il soit à nouveau son tour. Si un programme est terminé, alors que d'autres peuvent s'exécuter, le programme avec la plus haute priorité dans la file d'attente actuelle est exécuté.
Processus en cours dans la file d'attente, plusieurs processus peuvent s'exécuter simultanément . Ces processus sont actifs dans un tableau, qui est un champ appelé "Run Queue" ( file d'attente ) avec leurs valeurs prioritaires organisées (la priorité sera utilisée par le planificateur de tâches, qui décide alors quel processus suivant il fera fonctionner ).
Afin de s'assurer que chaque processus a sa juste part des ressources pendant un certain temps et finira par arrêter, puis de nouveau placé dans la file d'attente jusqu'à ce qu'il soit à nouveau son tour. Si un programme est terminé, alors que d'autres peuvent s'exécuter, le programme avec la plus haute priorité dans la file d'attente actuelle est exécuté.
Userspace
Spoiler :
Ce gouverneur permet à tout programme exécuté par l'utilisateur de régler la fréquence de fonctionnement du processeur. Ce gouverneur est plus fréquente chez les serveurs ou les ordinateurs de bureau où une application (comme une application du profil de puissance) doit disposer de privilèges pour régler le CPU clockspeed.
Donc parfaitement adapté aux tweaks
Donc parfaitement adapté aux tweaks
Performance
Spoiler :
Le gouverneur performance bloque le processeur à la fréquence maximale. Même si cela peut sembler être une drôle d'idée, certains suggérent que l'exécution d'un processeur à sa fréquence maximale en tout temps permettrait un retour rapiude au ralenti. " Race to idle " est le processus par lequel un processeur effectue une tâche donnée, comme la synchronisation des e-mail, et renvoie le cpu à l'état de faible puissance extrêmement efficacement. Cela nécessite encore des tests approfondis, et un noyau qui implémente une donnée CPU C-Unis (bas états d'alimentation) correctement.
Powersave
Spoiler :
Le contraire du gouverneur Performance, le gouverneur Powersave verrouille la fréquence du CPU à l'ensemble de la fréquence la plus basse par l'utilisateur.
Hotplug
Spoiler :
Le gouverneur Hotplug est très similaire au gouverneur 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 comme de mesurer la charge CPU de l'utilisateur. Cependant, la caractéristique déterminante de Hotplug est sa capacité à tourner en OFF le nombre de coeurs non utilisés pendant les périodes de faible utilisation du CPU. Ceci est connu comme "hotplugging."
Ordonnanceurs
A savoir:
L'ordonnanceur sert à :
- Réduire les temps de latence du disque dur ( temps écoulé entre le moment où le disque trouve la piste et le moment où il trouve les données. )
- Définir les priorités des processus
- garanti de faire passer avant la " deadline " certaines requêtes
Noop
Spoiler :
Noop insert toutes les demandes comme première en file d'attente du gouverneur.
Super avec les mémoires tampon, non physique ( lecteur flash ).
Avantage ici est que les lecteurs flash ne nécessite pas de réorganisation de plusieurs demandes I/O contrairement aux disques durs normaux.
avantages
Insert requêtes I/O avec moins de cycles CPU. (Positif pour la Batterie ?)
Idéal pour les lecteurs flash car il n'y a pas de pénalité recherche.
Bon débit des réseaux dB.
inconvénients
La réduction du nombre de cycles CPU utilisée proportionnelle à sa performance.
Super avec les mémoires tampon, non physique ( lecteur flash ).
Avantage ici est que les lecteurs flash ne nécessite pas de réorganisation de plusieurs demandes I/O contrairement aux disques durs normaux.
avantages
Insert requêtes I/O avec moins de cycles CPU. (Positif pour la Batterie ?)
Idéal pour les lecteurs flash car il n'y a pas de pénalité recherche.
Bon débit des réseaux dB.
inconvénients
La réduction du nombre de cycles CPU utilisée proportionnelle à sa performance.
Deadline
Spoiler :
L'objectif est de minimiser la latence ou les " Starvation " ( problème de processus en " multi-tasking " avec accès refusé perpétuellement ) . Cinq files d'attente sont activement utilisées pour réorganiser les requêtes entrantes.
Ces files d'attentes fonctionnent sur un principe de " table tournante.
avantages:
un ordonnanceur temps réel.
Excellent dans la réduction de la latence de toute donnée I / O.
Meilleur ordonnanceur pour l'accès de base de données et les requêtes.
exigence de la bande passante d'un processus - calcule le pourcentage de CPU dont il a besoin
Comme noop, lecteurs flash solides.
inconvenients
Lorsque le système est surchargé, un ensemble de processus qui peut manquer la " Deadline " d'une façon imprévisible.
Ces files d'attentes fonctionnent sur un principe de " table tournante.
avantages:
un ordonnanceur temps réel.
Excellent dans la réduction de la latence de toute donnée I / O.
Meilleur ordonnanceur pour l'accès de base de données et les requêtes.
exigence de la bande passante d'un processus - calcule le pourcentage de CPU dont il a besoin
Comme noop, lecteurs flash solides.
inconvenients
Lorsque le système est surchargé, un ensemble de processus qui peut manquer la " Deadline " d'une façon imprévisible.
Cfq
Spoiler :
CFQ = Completly Fair Queuing ( équitable pour toutes les demandes )
une tranche de temps allouée à chaque file d'attente et dépend de la priorité du processus "mère".
avantages
délivre une performance équilibrée
Le plus facile à accorder.
Excelle sur les systèmes multiprocesseurs.
Meilleure performance du système de base de données après la " dead line "
inconvénients
La numérisation prendrait plus de temps.
Pendant le démarrage, la numérisation des médias ne bénéficie d'aucune priorité spéciale.
Le problème de " rater " la " deadline" peut être a cause des processus en attente
une tranche de temps allouée à chaque file d'attente et dépend de la priorité du processus "mère".
avantages
délivre une performance équilibrée
Le plus facile à accorder.
Excelle sur les systèmes multiprocesseurs.
Meilleure performance du système de base de données après la " dead line "
inconvénients
La numérisation prendrait plus de temps.
Pendant le démarrage, la numérisation des médias ne bénéficie d'aucune priorité spéciale.
Le problème de " rater " la " deadline" peut être a cause des processus en attente
Bfq
Spoiler :
Au lieu des tranches de temps répartition comme CFQ, BFQ offre un budgets de la bande passante.
Il accorde à un processus actif jusqu'à ce la limite du budget (nombre de secteurs) soit atteinte.
BFQ assigne un budget élevé aux tâches non-lus. Le budget affecté à un processus est variable dans le temps en fonction de son comportement.
avantages
Est très bon pour les transferts de données via USB
Super Ordonnanceurs pour l'enregistrement vidéo HD et vidéo en streaming
Considéré comme un Ordonnanceur précis.
environ 30% plus rapide que le CFQ sur la plupart des charges de travail.
inconvénients
Pas le meilleur pour benchmarking.
Augmentation du budget affecté à un processus peut influer sur l'interactivité et la latence accrue.
Il accorde à un processus actif jusqu'à ce la limite du budget (nombre de secteurs) soit atteinte.
BFQ assigne un budget élevé aux tâches non-lus. Le budget affecté à un processus est variable dans le temps en fonction de son comportement.
avantages
Est très bon pour les transferts de données via USB
Super Ordonnanceurs pour l'enregistrement vidéo HD et vidéo en streaming
Considéré comme un Ordonnanceur précis.
environ 30% plus rapide que le CFQ sur la plupart des charges de travail.
inconvénients
Pas le meilleur pour benchmarking.
Augmentation du budget affecté à un processus peut influer sur l'interactivité et la latence accrue.
Sio
Spoiler :
Simple Ordonnanceur, il vise à maintenir les frais généraux minimum pour atteindre une faible latence pour répondre aux requêtes I/0. Aucune priorité, seulement les marges basiques.
Sio est un mélange entre Noop & Deadline. Aucune modification sur les demandes.
avantages
Simple, très fiable.
" Starvation " minimisé
inconvénients
Vitesse de lecture aléatoire, lent sur les lecteurs flash, par rapport à d'autres ordonnanceurs.
Vitesses séquentielle de lecture sur les lecteurs flash pas très bonne.
Sio est un mélange entre Noop & Deadline. Aucune modification sur les demandes.
avantages
Simple, très fiable.
" Starvation " minimisé
inconvénients
Vitesse de lecture aléatoire, lent sur les lecteurs flash, par rapport à d'autres ordonnanceurs.
Vitesses séquentielle de lecture sur les lecteurs flash pas très bonne.
Vr
Spoiler :
Contrairement aux autres ordonnanceurs, les demandes synchrones et asynchrones ne sont pas traités séparément, au lieu qu'une " deadline " ne soit imposée pour l'équité.
Le traitement de la demande dépend de la dernière requête
avantages
Peut être le meilleur pour le Benchmarking.
Schedulers I / O
inconvénients
fluctuation des performances inférieures à la moyenne ( bizarrement )
Moins fiable / plus instable
Le traitement de la demande dépend de la dernière requête
avantages
Peut être le meilleur pour le Benchmarking.
Schedulers I / O
inconvénients
fluctuation des performances inférieures à la moyenne ( bizarrement )
Moins fiable / plus instable
Zen
Spoiler :
Il s'agit d'une base Vr où a été rajouté les fonctionnalités de Sio.
C'est un FIFO First In, first Out (premier arrivé, premier servi).
Il utilise des délais pour l'équité, et traite des demandes synchrones avec priorité sur ceux asynchrones. En dehors de cela, à peu près le même que Noop
avantages
Très Performant ( Vr ), stable ( sio )
inconvénients
Je suis en train de chercher ...
C'est un FIFO First In, first Out (premier arrivé, premier servi).
Il utilise des délais pour l'équité, et traite des demandes synchrones avec priorité sur ceux asynchrones. En dehors de cela, à peu près le même que Noop
avantages
Très Performant ( Vr ), stable ( sio )
inconvénients
Je suis en train de chercher ...
Row
Spoiler :
Row = Read Over Writable.
Il s'agit de l'ordonnanceur monté généralement d'origine sur les mobiles qui " Réclament " comme le GN2.
Il y a 6 listes d'attentes
avantages
Très réactif,
super avec 4 cœurs
inconvénients
6 listes d'attentes = consommation d'énergie
Il s'agit de l'ordonnanceur monté généralement d'origine sur les mobiles qui " Réclament " comme le GN2.
Il y a 6 listes d'attentes
avantages
Très réactif,
super avec 4 cœurs
inconvénients
6 listes d'attentes = consommation d'énergie
Paramétrages
Essayons maintenant de faire une sorte de tableau, il est évident qu'il est à corriger !
Mais pour cela il faut un Maximum de retours.
Prenons, dans un premier temps les données d'une manière théorique.
Voici comment je classerais les Gouverneurs et Ordonnanceurs :
D'un Kernel axé sur la Batterie ( Haut - Gauche ) à un Kernel axé sur la Performance ( Bas - Droite )
Attention : Notez bien que ce tableau n'est pas Statique !
Vous pouvez avoir une bonne vie de batterie avec Pegasusq . Sio, tout Comme vous pouvez avoir d'excellentes Performances avec Conservative - Row.
Cela dépend de Vous ! De la combinaison qui vous semble la mieux adaptée a votre Utilisation !
Sources
Schedulers
Governors
[ Architect_Edition ] - [ Paramétrer son Kernel sans application ]
Dernière édition par NorthLight le Lun 29 Juil 2013 - 3:48, édité 4 fois