Fonte: Kernel Governors and I/O schedulers
1. Kernel Governors
- Ondemand
- Conservative
- InteractiveX
- Smartass
- SmartassV2
- Lagfree
- Brazilianwax
- SavagedZen
- Userspace
- Poversave
- Performance
- Minmax
- Scary
- Lulzactive
- Intellidemand
- Lionheart
- Lionheartx
- Virtuous
1. Ondemand:
Disponibile e di default in molti kernel. Quando il carico della CPU raggiungo un certo valore (vedi "up threshold" in Advanced Settings),il governor alza la frequenza della CPU,e scala la frequenza della CPU quando essa è a riposo.
2. Conservative:
Più lento di Ondemand,alza la frequenza della CPU più lentamente per risparmiare batteria. Simile a Ondemand,ma alza la frequenza più gradualmente. Questo governor risparmia la batteria.
3. InteractiveX:
Basato sull'Interactive,molto più "battery-friendly"
4. Smartass:
Basato anch'esso sull'Interactive.Completamente riscritto,lavora sulle basse frequenze.
5. SmartassV2:
Evoluzione dello Smartass,implementa altri cambiamenti e uno "sleep profile".
6. Lagfree:
Simile a Ondemand,ottimizzato per essere più "battery-friendly". Le frequenze vengono scalate più gradualmente.
7. Brazilianwax:
Simile a SmartassV2: Molto più perfomante,ma meno batteria.
8. SavagedZen:
Basato anche lui su SmartassV2. Molto più bilanciato rispetto al Brazilianwax.
9. Userspace:
Invece di determinare automaticamente le frequenze, consente frequenze impostate dall'utente.
10. Powersave:
Utilizza la frequenza minore per tutti il tempo per conservare la batteria.
11. Performance:
Massima frequenza tutti il tempo per migliori prestazioni.
12. Minmax:
Rimane sulle basse frequenza e aumenta alla massima appena ce n'è bisogno.
13. Scary:
Basato sul Conservative con alcune features dello Smartass. Utilizza basse frequenze per avere un buon consumo di batteria e perfomance decenti.
14. Lulzactive:
Basato su Interactive e Smartass.
15. Intellidemand:
Basato su Ondemand. Quando la GPU è molto occupata,il governor si "trasforma" in Ondemand,quando la GPU non è molto occupata,la frequenza viene abbassata per risparmiare batteria.
16. Lionheart:
Basato sul Conservative,cambiato per essere simile al Perfomance con un maggiore scalo delle frequenze molto aggressivo.
17. LionheartX:
Basato sul Lionheart con piccoli cambiamenti.
18. Virtuous:
Quando il telefono è a riposo imposta la minima frequenza,mentre quando il telefono è "a lavoro" imposta la massima frequenza.
Il miglior governor per performance e battery-life è lo SmartassV2.
2. I/O Schedulers
A cosa servono?
Servono al kernel per controllare l'accesso alla memoria.
1. Noop:
Da usare con i dispositivi di archiviazione che non dipendono da movimento meccanico di accesso ai dati (come i nostri telefoni). Il vantaggio è che le unità flash non richiedono il riordino di più richieste I/O, diversamente dai normali hard disk.
2. Deadline:
L'obiettivo è di ridurre al minimo la latenza di I/O.
3. CFQ:
"Completely Fair Queuing",migliora le capacità di risposta.
4. BFQ:
Invece di suddividere i processi per tempo, BFQ assegna dei "budget". La memoria è concessa ad un processo attivo fino a quando il "budget" (numero di settori) scade. BFQ assegna alto budget, ai compiti in non-lettura. Il budget assegnato ad un processo varia nel tempo in funzione del suo comportamento.
5. SIO:
Semplice I/O scheduler mira a mantenere alto il minimo per ottenere una bassa latenza per soddisfare le richieste di I/O. SIO è un mix tra noop e deadline. Nessun riordino o smistamento delle richieste.
6. V(R):
A differenza degli altri schedulers,le richieste sincrone e asincrone non sono trattate separatamente. La prossima richiesta da servire si basa sulla distanza dall'ultima richiesta.
In sintesi:SIO > Noop > Deadline > V(R) > BFQ > CFQ
Spero di essere stato d'aiuto