Home / Android / *GUIDA*: Governor e Scheduler Android spiegati!

*GUIDA*: Governor e Scheduler Android spiegati!

Molti di noi, me compreso, dopo l’inserimento di una piacente ROM Android ed un po’ di sano modding, andiamo a toccare parametri come Scheduler e Governor sulle principali app per fare modifiche sul telefono.

Ma di cosa parliamo in realtà? Ve lo siete mai chiesto? Vorrei spiegarvi nel dettaglio cosa sono Scheduler e Governor e le differenze tra questi. Spero la guida possa tornarvi utile come riferimento futuro quando dovrete impostare tali parametri o semplicemente cambiarli tra loro durante il modding. Ma partiamo dalle basi.

Governor: cos’è e vari tipi!

Il Governor, della CPU si intende qui, è un algoritmo che comanda alla processore come deve comportarsi. Se deve reagire velocemente su un applicazione o un input, aumentando velocemente la frequenza in mHz dei core, o se prendersela comoda.

ONDEMAND: Governor di default. Grazie ai suoi settaggi bilanciati riesce ad offrire un buon compromesso fra batteria e prestazioni. Non ha però un profilo di sospensione e ha qualche mancanza in prestazioni negli smartphones.

ONDEMAND-X: Uguale ad ONDEMAND ma con una gestione dei consumi leggermente migliore.

INTELLIDEMAND: Basato su Ondemand e reso più intelligente , questo governor si comporta in modo diverso in base all’utilizzo della CPU/GPU, quando CPU/GPU è molto occupato (giochi, mappe, ect..) si comporta come ondemand, (schermo spento frequenza minima) quando non esiste richiesta di CPU/GPU scende con una frequenza per secondo sulle scale disponibili, aiutando quindi la batteria.

LAZY: Simile a Ondemand, quello che dovrebbe fare è eliminare l’instabilità  causata dalla veloce salita frequenza della CPU.

CONSERVATIVE: E’ più lento a raggiungere il 100% rispetto a Ondemand. Per esempio quando si accende il telefono Ondemand alza la frequenza fino al massimo ad una velocità X. Conservative lo fa ad una velocità x/2. Più velocemente si raggiunge il 100% più batteria si consuma quindi Conservative è peggiore come prestazioni ma migliore come consumi.

LIONHEART: Lionheart è basato su Conservative ma molto modificato, pregi grande reattività , prestazioni, scorrevolezza. Durata della batteria particolarmente critica..

LIONHEARTX: come Lionheart, però i parametri di sospensione sono quello di Smartass.

USERSPACE: Permette di impostare manualmente le frequenze. Non è molto usato.

Un test di frequenze con diversi governor.

POWERSAVE: Il contrario di Performance, frequenze al minimo sempre. Potrebbe tornare utile magari durante la notte se non lo spegnete.

PERFORMANCE: Il contrario di Powersave. Imposta la frequenza minima come quella massima quindi il telefono è sempre al 100%. Questo Governor è di solito usato con i profili di*SetCPU*quando il telefono è sotto carica o collegato al PC. Ovviamente non può essere usato come Governor di default.

MIN.MAX: Questo governor fa uso di solo frequenza minima e massima in base al carico di lavoro. Non viene quindi utilizzata nessuna frequenza intermedia.

INTERACTIVE: Mentre Conservative è più lento di Ondemand, Interactive è più veloce. Il raggiungimento del 100% sarà più veloce quindi il telefono risulterà più pronto e veloce; la batteria consumerà un pò di più. Questo Governor è stato il più popolare dell’ultimo anno.

INTERACTIVE-X: Invece di usare*SetCPU*per bloccare la frequenza al minimo quando il telefono è in standby, questo Governor lo fà automaticamente in modo più pulito ed efficiente, con una gestione del ramping (aumentare fino al 100%) migliore. Praticamente come l’Interactive ma con una migliore batteria.

SMARTASS: E’ basato su Interactive con alcune modifiche. Anche questo Governor porta la frequenza al minima a telefono in standby. E’ diventato molto popolare nell’ultimo periodo.

SMARTASSV2: E’ l’evoluzione di Smartass, scelto da molti sviluppatori, il suo funzionamento e quello di avere una frequenza ideale. Scala le frequenze alte in modo più aggressivo e scende più dolcemente le frequenze, utilizzando diverse scale tra schermo acceso e spento. Diciamo il favorito per un equilibrio tra prestazioni e batteria.

SMOOTHASS: Come Smartass ma molto più aggressivo.

BRAZILIANWAX: Simile a SmartassV2 e Smoothass. Prestazioni più alte e quindi durata minore della batteria.

SavagedZen: Governor basato su Smartass con modifiche per migliorare sia i consumi che le prestazioni. Molto bilanciato.

MinMax: Un adattamento del Conservative, probabilmente quello con la miglior performance di tutti. L’utilizzo della batteria è maggiore rispetto allo Smartass ma a vantaggio di una maggior velocità del sistema.

SCARY: Basato sul Conservative che ha un Ramping più lento di Ondemand ma prende alcune parti dallo Smartass che ha un ramping molto veloce.

PEGASUS: È un governor multicore basato su ondemand. Cerca di far eseguire più processi “contemporaneamente” che risultano attivi in un array ed ai quali vengono fornite priorità al fine di dare le giuste risorse ad ogni processo.

HOTPLUG e HOTPLUG X: Il governor hotplug è basato su ondemand con la differenza che i core della cpu vanno offline quando non usati producendo risparmio di batteria. L’hotplug x è invece ottimizzato per ridurre i
consumi a schermo spento.

LAGFREE: Lagfree è simile a Ondemand, la differenza è una ottimizzazione più favorevole alla batteria. La salita e discesa delle frequenze è lineare, tuttavia pero se abbiamo necessita di aumento veloce della CPU non ci aiuta a soddisfare le nostre esigenze, tipo giochi, video.

WHEATLEY: Basato su ondemand, regola il tempo per scalare o aumentare la frequenza in maniera intalligente ed in base alla potenza richiesta dalle operazioni connettendo quindi prestazioni ed autonomia. Ovviamente è solo per i dispositivi multicore.

NIGHTMARE E DARKNESS: Il nightmare è un governor disponibile per un particolare tipo di kernel, il Dorimax, quindi non disponibile per tutti i devices. È il risultato di settaggi molto particolari dei processi di sleep/awake e della frequenza della cpu che rendono il device fluido ma allo stesso tempo non pregiudica la durata della batteria, aumentandola. Il darkness è una versione logicamente semplificata del nightmare.

ZZMOVE: Governor ottimizzato per bassi consumi a schermo spento, con particolare attenzione alla limitazione dei consumi delle applicazioni in background a schermo spento come ad esempio ascoltare musica. Possiede tre impostazioni: battery saver, balanced e performance. Inoltre per un boost di prestazioni esiste anche il governor zzmove optimized. Naturalmente non esiste un governor migliore degli altri ma esiste solo quello migliore per se stessi. Tuttavia il più bilanciato e gettonato in questo ultimo periodo risulta l’interactive-x, il quale bilancia perfettamente prestazioni ed autonomia.

Scheduler: cos’è e vari tipi!

Così come il Governor CPU è un algoritmo che dice al processore come comportarsi, lo Scheduler è un algoritmo che dice alla memoria (o memorie, se avete anche una microSD o comunque una memoria esterna) come comportarsi, come mettere in fila o in priorità le operazioni da leggere/scrivere ecc.

Deadline: si prefigge lo scopo di garantire un termine, una scadenza a tutte le richieste in modo da evitare fenomeni indesiderati come lo “starvation” ovvero l’eterna attesa di alcune richieste che si verifica quando uno o più processi di priorità bassa vengono lasciati indefinitamente nella coda dei processi pronti, perchè vi è sempre almeno un processo pronto di priorità più alta.

V(r): la richiesta successiva viene eseguita in base alla distanza dall’ultima richiesta. In rete girano buoni pareri riguardo questo scheduler.

No-op: inserisce tutte le richieste in un’unica coda semplicemente in base al loro ordine di arrivo, raggruppando insieme quelle contigue.

SIO: è lo scheduler più semplice, non fa alcun tipo di ordinamento, si prefigge solo lo scopo di ottenere una bassa latenza, di ridurre cioè il lasso di tempo che intercorre tra l’istante in cui la richiesta è generata e quello in cui la richiesta è soddisfatta.

CFQ: ordina le richieste dei processi in code distinte per tipologia e assegna a ciascuna coda uno specifico intervallo di tempo la cui durata dipende dalla priorità assegnata ai processi. Può essere considerato l’Ondemand degli scheduler, è infatti lo scheduler più equilibrato, svolgendo il suo compito in maniera onesta. Esso risulta lo scheduler di default su cyanogenmod!

Il modding Android nella sua massima espressione artistica.

BFQ: è basato sul CFQ ma, invece degli intervalli di tempo, assegna una parte della larghezza di banda del disco a ogni processo in esecuzione in modo proporzionale.

Anticipatory: come dice il nome, ordina le richieste in base a criteri predittivi, mette cioè in pausa le richieste per un brevissimo periodo di tempo in previsione che arrivino altre richieste simili in modo da aggregarle.

ROW: letteralmente “read over write” ovvero uno scheduler*che fornisce la priorità a tutte le richieste di lettura piuttosto che scrittura. Questo scheduler è stato progettato appositamente per i dispositivi mobili ed è quello che offre una “migliore gestione dei processi” ed influisce molto positivamente sulla durata della batteria. Spesso usato per le microSD (in quanto solitamente contengono dati che non hanno bisogno di essere eseguiti sempre, ad esempio non sempre hanno le app o processi di sistema).

Posso modificare manualmente Governor e Scheduler?

Certo che si, ma fatemi specificare. I TIPI di Governor e Scheduler presenti non possono essere modificati, ovvero se su una ROM avete 5 Governor/Scheduler disponibili, potete cambiare solo tra questi 5 e modificare singoli parametri di questi, ma non potrete aggiungerne altri, in quanto Governor e Scheduler sono inseriti direttamente nel Kernel di Android e quindi, a meno che non modifichiate quello, non potrete certo dire al telefono “guarda, aggiungimi altri 5 algoritmi” al volo.

Per modificare Governor e Scheduler, utilizzate applicazioni come Kernel Auditor, CPU Tuner, No Frills CPU e molte altre che trovate sul Google Play Store.

Li hai elencati tutti?

Purtroppo no. Esistono molti altri governor e scheduler, che troverete nelle varie ROM Android a discrezione degli sviluppatori. Non posso elencarne altri perché, onestamente, non ne conosco altri.

C’è da dire che potete comunque effettuare le vostre personalissime personalizzazioni a governor e scheduler andando appunto a modificare i vari parametri tramite i programmini elencati sopra. Alla prossima!

Riguardo a: Salvo Cirmi (Tux1)

Un pinguino intraprendente che dopo diversi anni di "servizio" online (e soprattutto delle guide) ha acquisito conoscenze non di poco conto sui settori Android, Linux e Windows. Le mie specialità sono il modding e le review. Nel tempo libero (che è raro trovare) suono il piano, mi diverto effettuando modding e provando distribuzioni Linux, BSD ed altre.

Guarda anche..

Ubuntu si spegne lentamente? Ecco come risolvere!

Da diversi mesi ormai ho un problemino che affligge diverse delle mie distribuzioni Linux basate …