Applicazioni AndroidGuideModding

[GUIDA parte 1] Impostazioni del Kernel – Governor

Buona Giornata amici lettori,

è da tanti anni ora mai che mi dedico al modding per android ed ho notato che molti utenti ignorano la potenza che possa avere un kernel modificato. Così mi è venuto in mente di creare questa guida per iniziare a spiegare cosa sia un governor e quali siano quelli esistenti. Il kernel (ovvero nucleo) è il vero motore del sistema operativo come lo è il bios per il computer. Esso, infatti, è responsabile  della gestione della CPU e dei processi. Ovvero il kernel impartisce degli schemi che poi il sistema deve rispettare. Tra questi ordini o schemi abbiamo anche il funzionamento della CPU con il così detto scaling delle frequenze. Per scaling delle frequenze si intende il modo in cui il kernel ( basato su architettura Linux) regola dinamicamente la frequenza della CPU in base all’utilizzo del nostro dispositivo. Questi schemi in questo caso vengono chiamati appunto governor, proprio perchè  “governano” il variare delle frequenze della CPU e GPU. Ecco qui un elenco che può esservi utile per scegliere il miglior governor per il vostro dispositivo e per il vostro stile di “vita”. Ovviamente c’è bisogno di avere un kernel non stock con varie opzioni riguardanti gli schemi da scegliere. Fateci sapere il vostro utilizzo;

Potrebbe interessanti anche: Risparmiare batteria – wakelock detector & Greenify

Ondemand

E’ il governor di default in quasi tutti i kernel stock. Uno dei suoi principali obiettivi è, passando rapidamente alla frequenza massima non appena la CPU rileva un attività, quello di garantire una buona reattività del sistema. Il suo funzionamento non prevede una valutazione del carico di lavoro quindi, appena sollecitato, tende a far salire la CPU in modo immediato alla massima frequenza per poi diminuire gradualmente in stato di inattività. Anche se viene considerato un governor equilibrato, non è particolarmente indicato per l’autonomia nel suo settaggio predefinito.
Uno dei motivi principali per cui il governor ondemand non è parsimonioso di batteria, è il fatto che, decide il prossimo step di frequenza nell’istante di richiesta dell’ intervallo di campionamento (detto sampling rate). Nell’istante di richiesta, può rispondere velocemente al cambiamento di carico di lavoro, senza calcolare la richiesta reale di utilizzo della CPU e quindi provocare frequenti passaggi dalla frequenza min-max e viceversa.

Conservative

è un ondemand rallentato, poichè scala le frequenze più lentamente risparmiando batteria. Si differenziadal precedente perchè, incrementa la frequenza in base al carico della CPU senza saltare direttamente alla frequenza massima, per poi decrementarla velocemente in caso di inattività.

Interactive

Può essere considerato un ondemand molto veloce, quindi più reattivo e di conseguenza meno parsimonioso di batteria. Questo governor è stato realizzato per avere maggiore reattività e prestazioni con i vari carichi di lavoro interattivi. A differenza dell’ondemand non varia le frequenze in base ad un intervallo di campionamento, ma le determina in modo continuativo fino a quando la CPU non smaltisce il suo carico di lavoro.
I vantaggi di questo governor sono i seguenti: 1) Scala le frequenze in un modo più lineare. In genere, gli altri governor, gestiscono il carico della CPU in base al lavoro, interactive invece lo gestisce in base al tempo di richiesta, facendo lavorare la CPU in un modo più uniforme. 2) Ottima fluidità del sistema e dei contenuti multimediali. A differenza di un governor tipo l’ondemand, che potrebbe risentirne sul fatto di cercare continuamente (in base al intervallo di campionamento) di adeguarsi al carico di lavoro, l’interactive mantiene costantemente la frequenza necessaria fino alla fine del carico di lavoro, guadagnando un frame rate più lineare.

Interactivex

Si tratta di un interactive con l’aggiunta del profilo screen off, naturalmente l’obbiettivo è quello di ridurre i consumi della batteria durante i momenti di inutilizzo a schermo spento.

Interactivex V2

E’ l’Interactivex e con lo schermo spento disattiva automaticamente la cpu1

Smartass

si basa su Interactive, ma con alcune modifiche che gli permettono di mantenere frequenze minime quando il telefono è inattivo.

SmartassV2

E’ uno smartass modificato ed è uno dei governor più usati. Questo governor scala verso il basso la cpu molto velocemente mentre lo schermo è spento, e scala rapidamente verso l’alto fino a 500 mhz quando lo schermo si accende. Non c’è un limite superiore per la frequenza mentre lo schermo è spento. Questo governor mira a una “frequenza ideale”, per cui scala in maniera più aggressiva nei confronti di questa frequenza e in maniera meno aggressiva dopo. Esso utilizza diverse frequenze ideali per lo schermo acceso e per lo schermo spento, che sono awake_ideal_freq e sleep_ideal_freq, garantendo così un equilibrio tra prestazioni e durata batteria.

BrazilianWax

funzionalmente simile allo Smartass ma ha un cambio di frequenza più rapido.

SavagedZen

è come lo Smartass ma con alcune modifiche apportate che gli consentono di ottenere sia buone prestazioni sia un consumo non eccessivo della batteria.

Userspace

consente di impostare manualmente le frequenze, di solito poco usato.

Powersave

Con Powersave viene impostata sia la frequenza massima che quella minima al minimo valore possibile, anche se è ottimo per i consumi, non è consigliato per l’uso quotidiano, in quanto il processore non riuscirà a raggiungere le frequenze richieste e necessarie per un giusto e godibile uso del vostro device.

Performance

è l’opposto di Powersave. Imposta la frequenza minima uguale a quella massima in modo che il telefono risulti sempre alla massima potenza. Per ovvie ragioni non può essere utilizzato nell’uso quotidiano, la batteria ne risentirebbe troppo, di solito è usato quando il telefono è in carica o è collegato al pc.

Lulzactive

Basato sui governor interactive e smartass, tende ad essere il governor preferito da molti.
Quando il carico di lavoro è maggiore o uguale al 60%, fa salire le frequenze della cpu immediatamente allo step successivo. Quando il carico di lavoro è inferiore al 60%, abbassa immediatamente le frequenze della cpu allo step precedente. Quando lo schermo è spento, la frequenza è bloccata alla frequenza minima. Nella nuova versione sono stati aggiunti dei paramentri modificabili ma il funzionamento è lo stesso

Lazy

Fondamentalmente un ondemand con il parametro aggiuntivo min_time_state che stabilisce un tempo minimo in cui la cpu permane su una determinata frequenza prima di passare a frequenze più basse o più alte. L’idea è quella di eliminare le instabilità causate dalla rapida commutazione di frequenza di ondemand. Ha anche un parametro screenoff_maxfreq che può essere configurato per specificare la max frequenza mentre lo schermo è spento.

Lagfree

Simile a ondemand. La differenza è l’ottimizzazione che lo rende maggiormente battery friendly. La frequenza diminuisce o aumenta gradatamente, a differenza di ondemand che salta al 100% troppo spesso. Lagfree non salta le frequenze durante lo scaling verso l’alto o verso il basso.

Ondemandx

Sostanzialmente è un ondemand con l’aggiunta del profilo screen off. Questo governor nasce con l’obbiettivo di avere le caratteristiche dell’ ondemand ma con un occhio di riguardo per la batteria, grazie alla limitazione della frequenza massima di 500mhz che viene applicata a schermo spento.

Intellidemand

(alias intelligente Ondemand) e un governor che si basa su ondemand e che non salta mai alla massima frequenza quando lo schermo è spento. L’intellidemand originale si comporta in modo diverso in base all’utilizzo della GPU. Quando la GPU è veramente occupata (giochi, mappe, benchmarking, ecc) intellidemand si comporta come ondemand per offrire buone prestazioni. Quando la GPU è a riposo o moderatamente occupata, intellidemand entra in “browsing mode” (modalità di navigazione) e limita la frequenza massima per risparmiare la batteria.

Lionheart

E’ un Conservative pesantemente modificato: ha un’up-threshold bassa (circa 60) e una sampling_rate (frequenza di campionamento) più bassa possibile . Il motto di Lionheart è la reattività estrema, le prestazioni e la scorrevolezza, anche a costo di un maggiore dispendio della batteria.

Smoothass

Si basa sullo Smartass ma con alcune modifiche, infatti presenta una rampa di salita e discesa più pendente (alta), quindi più prestazioni subito ma un minore cosumo di batteria.

Scary

Basato sul Conservative (il quale ha rampa più lenta di Ondemand), ma ha poi in sè alcuno elementi di Smartass che gli permettono di avere una rampa molto veloce.
E’ in pratica un misto tra Conservative e Smartass.

Minmax

Basato sul Conservative, viene considerato uno dei migliori, prestazioni e la reattività sono molto elevate.

Wheatley

Questo governor non è altro che un Ondemand modificato, per avere buone prestazioni ma senza un consumo eccessivo della batteria.

 

Hotplug

E’ simile all’ondemand, ma scala le frequenze della CPU in base al carico. A schermo spento dovrebbe disattivare un processore. Prestazioni eccellenti e consumo di batteria davvero basso.

 

Hotplugx

E’ un Hotplug modificato e ottimizzato per la sospensione in screen-off.

 

AbyssPlug

E’ un Governor derivato dall’Hotplug, funziona alla stessa stregua, ma con all’interno delle modifiche per un miglior risparmio della batteria.

 

Pegasusq/Pegasusd

Questo governor è stato creato appositamente da samsung per il suo Galaxy S3, poi adattato e modificato anche per funzionare su altri smartphone grazie ad alcuni utenti di XDA. Questo governor è adatto solo per i terminali multi-core (dual-core, quad-core, octa-core…) e permette di far lavorare ogni core in modalità asincrona. Ad esempio, un processore può lavorare ad una frequenza di 1300 Mhz mentre l’altro a 600 Mhz,tutto in base ovviamente al carico di lavoro che deve supportare il telefono. Immaginate i benefici in termini di prestazioni e di durata di batteria.

 

SLP

è una versione ottimizzata di PegasusQ che, quando sono attivi entrambi i core, lavora con frequenze sincrone.

NeoX

è un’altra versione ottimizzata di PegasusQ, proveniente dal Note 2.

BadAss

limita l’uso delle alte frequenze, più si alza la frequenza più aumentano i tempi e l’assorbimento necessari per passare al gradino successivo, in questo modo è difficile avere la CPU che lavora a pieno regime. Questo gevernor tiene anche in considerazione l’utilizzo della GPU per decidere se aumentare o meno la frequenza.

 

MSM DCVS

governor estremamente avanzato e disponibile per processori con architettura Krait, infatti MSM è il prefisso del nome del processore e DCVS è l’acronimi dell’orologio dinamico e del voltage scaling che lo caratterizzano, consente un’ottimizzazione delle pretazioni e dei tempi di risposta sfruttando le caratteristiche specifiche di questa architettura

 

IntelliActive

si basa sul modello dell’interctive di Google ma con alcune migliorie come un auto-boost in caso di necessità (senza l’intervento del PowerHAL), due fasi di scheduling a seconda della situazione, controlli multipli su CPU e processi per migliorare l’esecuzione del codice

Adaptive
questo governor aggiunge una funzione dinamica alla gestione del processore atta a diminuire sensibilmente la latenza per i processi che lo richiedono ma limita anche il pieno utilizzo della CPU per ridurre i consumi.

Hyper

L’Hyper (precedentemente noto come Kenobi) è un aggressivo intelligente e fluido governor ed è basato sull’ Ondemand ed è stato dotato di diverse caratteristiche dell’ Ondemandx. ha il comportamento del Ondemand. Ha però anche un veloce deep_sleep. Inoltre, la frequenza massima è in modalità di sospensione 500Mhz.

 

Nightmare

Un PegasusQ modificato ,ma meno aggressivo (cio significa che non ha buone performance ) e di solito non ha l’hotplug. questo governor è molto buono per un elevato equilibrio tra performance e consumi. Potrebbe prevenire molto bene “lo schermo della morte” ( ahaahah )anche se non ha l’hotplug.

 

Sakuractive

Un governor basato solamente su hotplug e ondemand. Il telefono con la pacth hotplug, quando può, quando lo schermo è attivo si comporta come un ibrido tra hotplug e ondemand.

 

OnDemandPlus

Un governor basato solo su ondemand e interactive. Esso provvede ad un buon bilanciamento tra performance e consumi.

 

DynInteractive

Un dinamico interactive governor. Questo schema informatico dinamicamente si adatta alla frequanza di cpu con la quale il sistema è stato settato.

Governor dedicati ai kernel

ho notato che molti kernel hanno governor che hanno il nome del kernel. ho notato girando nel web che sono dei particolari governor che sono stati modificati in qualche modo dal creatore del kernel. esempi di questi governor sono:
elementalx: non sono ancora riuscito a trovare informazioni sulla base del kernel
uberdemand: penso che questo si basi su ondemand

Smartmax

L’idea base e come quella dello smartass(V2). La spiegherò in vari step:

1) Se il carico è al di sopra della soglia massima e la frequenza corrente è inferiore alla freq ideale allora il gov. va alla frequenza ideale in un solo passaggio
2) Se il carico è al di sopra della soglia massima e la frequenza corrente è pari o superiore alla freq ideale allora il gov. farà salire tutti i gradini alla cpu passando tutte le frequenze per una specifica
quantità di tempo – così rispetto al OnDemand non salterà alla frequenza max
3) se il carico è al di sotto della soglia minima e la frequenza corrente è inferiore alla freq ideale allora abbassa la frequanza
4) se il carico è al di sotto della soglia minima e la frequenza corrente è al di sopra freq ideale allora Salta giù alla frequenza ideale in un solo passaggio.

Il sottoscritto Fabrizio Varelli, editore di www.TuttoApp-Android.com, è l’unico autore della presente guida, scritta in passato su altri blog (si veda LINK ALLA DISCUSSIONE SU ANDROIDIANI)

 

Leggi anche:  [GUIDA parte 2] Impostazioni del Kernel – Scheduler

Fabrizio Varelli

La mia passione per il mondo del modding nasce in tempi lontanissimi con l'aquisto di un vecchio ma caro samsung star avente ancora OS proprietario; ma poi, con l'avvento del mondo android, questa passione si è trasformata in una vera e propria "droga". Con l'esperienza accumulata non riesco a staccarmi dalla tecnologia rendendo essa l'unica (ma non sola) ragion di vita portandomi ad iscrivere alla facoltà d'ingegneria elettronica cercando di inseguire il sogno della mia vita: Google.

Articoli correlati

4 Commenti

  1. Pingback: Guida al flash di ak kernel su Oneplus One
  2. Pingback: Guida Kernel Boeffla S3 per prestazioni o consumi ottimali!
  3. Pingback: [GUIDA parte 2] Impostazioni del Kernel – Scheduler

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Pulsante per tornare all'inizio