In questa guida andremo a scoprire come e con cosa modificare il "motore" (kernel) del nostro terminale.
Requisiti:
Un kernel modificato che supporti overclock - undervolt - overvolt - Governor e scheduler
Un applicazione per modificare i suddetti paramentri (trickster MOD donate - fauxsound)
Busy box on rails.
Incredicontrol.
!Modificando questi parametri è possibile il guasto irreversibile della CPU o della GPU con conseguente rottura permanente del terminale
!Ne lo scrivente ne Androidiani si assumono la responsabilità per eventuali rotture o danni al vostro terminale
Guida introduttiva:
Cos'è un governor?
Il governor, presente nel kernel permette di regolare la frequenza minima e massima della CPU e il tempo necessario ad essa per raggiungere il massimo o il minimo valore di frequenza di clock del processore, modificando le prestazioni e il consumo della batteria .
Cos'è lo scheduler?
Lo scheduler è l'algoritmo che, dato un insieme di richieste di accesso, stabilisce un ordinamento temporale delle richieste, privilegiando quelle che rispettano determinati criteri in modo da ottimizzare l'accesso a tale risorsa.
La scelta di un dato scheduler non produce cambiamenti così visibili come per la scelta dei governor, ma apporta comunque dei miglioramenti.
Cos'è l'overclock?
In informatica la pratica dell'overclocking consiste nel perseguire il miglioramento delle prestazioni di un componente elettronico di un elaboratore (in genere una CPU) mediante l'aumento della frequenza di clock rispetto a quella prevista dal produttore.
Cos'è l'undervolt?
Per spiegare cosa sia effettivamente l’undervolting bisogna spiegare un concetto di elettronica.
Ogni componente elettronico ha un proprio valore di soglia, ovvero quel valore di corrente necessario affinchè esso si attivi. Questo valore è diverso non solo in base al tipo di componente (diodo, processore ecc..) ma in base al singolo elemento, in parole povere se ho 2 diodi uguali della stessa casa produttrice, prodotti lo stesso anno, nella stessa fabbrica, lo stesso giorno uno potrebbe entrare in conduzione con 0,75 V e uno con 0,78 V.
Questa differenza è dovuta alle quantità, qualità e purezza del silicio utlizzato, che è impossibile fare in modo che siano uguali in tutti i componenti
Per ovviare il problema delle tensioni di soglia diverse, la casa produttrice, non potendo testare a uno a uno tutti i terminali e le relative tensioni, ha adottato un valore “standard” in modo che tutti i terminali funzionassero senza alcun tipo di problema.
Ma cosa significa adottare un valore standard? vuol dire che se per accendere il mio diodo bastano 0,75 V la casa madre lo fa funzionare a 0,8 v stressando di più il componente e accorciandone la vita, ma anche ,nel caso di uno smartphone, diminuire la durata della batteria.
Il punto successivo è procedere all’undervolting ovvero abbassare i valori di tensione usati dalla casa madre.
Pro: durata della batteria aumentata, vita dei componenti elettronici più lunga.
Contro: abbassando troppo i valori potreste avere rallentamenti o freeze del dispositivo se non addirittura lo spegnimento dello stesso (niente di irreversibile basta riavviarlo) quindi prima di impostare set on boot stressate il dispositivo il più possibile.
Cos'è l'overvolt?
L'overvolt è la pratica di aumentare i voltaggi della CPU per salire di più in overclock e/o risolvere problemi di instabilità sopraggiunti con l'innalzamento di frequenza.
Governor
> Ondemand
E' il governor di default in quasi tutti i kernel stock. Uno degli obiettivi principali del gover ondemand è quello di passare alla frequenza max non appena vi è una attività della CPU rilevata per garantire la capacità di risposta del sistema.(è il più equilibrato, offre un buon compromesso tra consumi e prestazioni)
> OndemandAX
Lavora allo stesso modo dell'ondemand, ma con in più un profilo screen off integrato che imposta il clock del processore quando lo schermo è spento alla frequenza massima di 500 mhz.
> Interactive
Lavora allo stesso modo dell'Ondemand ma se in maniera più veloce, quindi maggiori prestazioni , ma anche maggiori consumi di batteria.
> Interactivex
E' un Interactive modificato per diminuire il consumo di batteria.
> Powersave
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 l’ uso del vostro device.
> Performance
E' l'opposto di Powersave, e imposta la massima frequenza di clock del processore sia per la minima che per la massima..
.. le prestazioni saranno sempre al massimo, ma la batteria ne risente fortemente.
> Userspace
Userspace consente di impostare manualmente le frequenze. possiamo impostare a nostro piacimento la frequenza minima e massima di lavoro del processore. Consigliato solo a gente esperta.
> Intellidemand
Il nome deriva da "Intelligente Ondemand", questo governor si basa sull'ondemand ma si comporta appunto in maniera intelligente, non salta mai alla massima frequenza quando lo schermo è spento, e si comporta in modo diverso in base all'utilizzo della GPU.
> Conservative
Lavora allo stesso modo dell'Ondemand ma in maniera più lenta e graduale..
quindi Conservative è meno reattivo ma risparmia la batteria. (Non adatto ad un uso quotidiano)
> SmartassV2
E' basato su Interactive. 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
> Minmax
Basato sul Conservative, viene considerato uno dei migliori, prestazioni e la reattività sono molto elevate..
> Lulzactiveq
Anche questo viene considerato uno dei migliori Governor a disposizione..
E' Basato su interactive e smartass, nel dettaglio il comportaemento del processore è il seguente:
Quando il carico di lavoro è maggiore o uguale al 60%, fa salire le frequenze della cpu immediatamente allo step successivo... invece quando il carico di lavoro è inferiore al 60%, abbassa immediatamente le frequenze della cpu allo step precedente... se lo schermo è spento, la frequenza è bloccata alla frequenza minima.
> Lionheart
E’ basato su Conservator molto modificato, grande reattività, prestazioni, scorrevolezza durata delle batteria in crisi.
> Wheatley
In breve 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. Ho
> Pegasusq
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 1200 Mhz mentre l'altro a 350 Mhz, in base naturalmente al carico di lavoro. Vi lascio immaginare i benefici in termini di prestazioni e di durata di batteria.
Scheduler
> Deadline
Ha 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.
> Vr
La richiesta successiva viene eseguita in base alla distanza dall'ultima richiesta.
> Noop
Inserisce tutte le richieste in un’unica coda semplicemente in base al loro ordine di arrivo, raggruppando insieme quelle simili.
>SIO
E' lo scheduler più semplice, non fa alcun tipo di ordinamento, allo 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.
>BFQ
E' 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.
>Zen
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
E’ stato sviluppato con le esigenze leggere oltre scrivere (Read Over Write). In dispositivo privilegia l'esperienza utente su tutto il resto. Di solito si tratta di un singolo, o al massimo due thread simultanei di lavoro per la lettura e scrittura. "Favorire richieste di lettura sulla scrittura".
Buon Lavoro.