in

I segreti del kernel tra Governor e Scheduler, come impostarlo al meglio

Raramente ci soffermiamo ad ammirare le meraviglie compiute dalla tecnologia in appena dieci anni. Eppure quando scattiamo una foto con il nostro smartphone, inviamo una e-mail con il nostro computer o semplicemente accendiamo un dispositivo, si mettono in moto meccanismi a molti sconosciuti. Vi siete mai chiesti ad esempio cosa accade quando, premuto il tasto accensione-spegnimento del dispositivo, compare il logo dell’azienda produttrice e dovete attendere qualche secondo prima di poter usufruire delle sue applicazioni e funzioni?

Se credete che sia un espediente atto a farvi perdere tempo, vi sbagliate. Infatti non appena i circuiti integrati ricevono energia, il processore inizia ad elaborare i dati, ricevendo informazioni dai molteplici sensori del dispositivo per proporvi infine la tanto attesa schermata home, colma di applicazioni e ricca di personalizzazioni.

Ebbene chi è, o per meglio dire cos’è, che gestisce il processore e gli alti componenti hardware? Si tratta del kernel, ovvero il nucleo del sistema operativo. Esso fornisce ai processi in esecuzione un accesso sicuro e controllato all’hardware: poiché ne possono essere eseguiti molteplici simultaneamente, il kernel deve anche assegnare una porzione di tempo-macchina, denominato “scheduling”,  e di accesso all’hardware a ciascun programma e nel caso dei nostri smartphone e tablet, alle applicazioni o ai processi, si tratta del famoso “multitasking”. 

kernel1

Come avete letto, il kernel rappresenta una componente fondamentale dell’OS, senza il quale regnerebbe il caos. Andiamo quindi ad analizzare nel dettaglio le sue peculiarità, e scopriamo insieme come modificarne i parametri per ricercare le migliori combinazioni in di modo da ottenere il meglio dal nostro smartphone.

 

Governor

Il kernel assolve, tra molteplici compiti, anche quello di regolatore della frequenza minima e massima della CPU e il tempo da essa impiegato per raggiungere la frequenza di clock più alta, o più bassa, variando in questo modo le prestazioni e il consumo della batteria.

La modalità con cui il kernel regola questi parametri in base all’utilizzo del dispositivo è definito “scaling delle frequenze“. Si tratta di uno schema chiamato “governor“, poiché per l’appunto “governano” il cambiamento delle frequenze non solo della CPU ma anche della GPU.

Ovviamente non tutti i kernel consentono di selezionare qualsiasi sorta di governor. Il più delle volte ne mettono a disposizione 3-4 nei casi migliori si arriva a 5-6. Tuttavia il loro reale numero è assai più elevato, dunque ho deciso di presentarvi una raccolta dei più comuni con accanto le loro caratteristiche.

  • Ondemand
    si stratta del Governor impostato di default su quasi tutti i kernel stock. Esso presenta un unico obbiettivo: passare alla frequenza massima non appena è rilevata una richiesta “corposa” in termini di prestazioni. Offrendo un buon compromesso tra consumi e prestazioni è senza dubbio quello più equilibrato.
  • OndemandAX
    una variante del precedente che presenta le sue stesse peculiarità ma differisce da esso per la presenza di un profilo screen off, il quale limitata la frequenza del processore a 500 Mhz non appena lo smartphone entra in stand-by.
  • Powersave
    un Governor particolarmente attento ai consumi: se selezionato imposta automaticamente sia la frequenza massima che quella minima al più basso valore possibile. Sebbene risulti perfetto qualora si volesse raggiungere una durata della batteria elevata, è sconsigliato attivarlo per l’uso quotidiano: il processore farà difficoltà a compiere anche i lavori più semplici.
  • Interactive 
    Il suo funzionamento è simile all’ Ondemand ma lavora in maniera più veloce: per questo motivo si avranno maggiori prestazioni in concomitanza con un maggiore consumo di batteria.
  • Interactivex
    un compromesso tra prestazioni e consumi.
  • Performance 
    Si tratta di un Governor opposto a quello Powersave: imposta la frequenza di clock più alta sia per la minima che per la massima in di modo da avere prestazioni elevate a discapito della durata della batteria.
  • Userspace
    Con Userspace sarete liberi di impostare manualmente le frequenze, consiglio però di optare per questo Governor solo se disponete di un livello di conoscenza medio-alto, onde evitare spiacevoli sorprese.

processore

  •  Intellidemand
    Derivante dal Governor Ondemand, si basa su di esso ma agisce in maniera “intelligente”: qualora lo schermo fosse spento ma lo smartphone necessitasse della potenza del processore, ne aumenterà la frequenza senza però passare direttamente a quella massima.
  • Conservative
    Simile all’Ondemand, si differenzia per uno scaling lento e graduale: dunque sarà meno reattivo ma guadagnerete qualche decina di minuti d’autonomia in più. Si raccomanda l’uso di questo Governor solo in fase di test poiché lo smartphone potrebbe risultare troppo lento per l’uso quotidiano.
  • Minmax
    E’ basato su Conservative ed è considerato uno dei migliori,con prestazioni e reattività molto elevate.
  • Lulzactiveq
    Con il precedente, si contende il posto di miglior Governor in circolazione. Esso è più complesso degli altri nel funzionamento: non appena il carico di lavoro sarà uguale o superiore del 60%, esegue il cambiamento della frequenza del processore sino allo step successivo. Quando, contrariamente, il carico di lavoro sarà inferiore alla soglia, le frequenze sono automaticamente settate allo step precedente. Allo spegnimento dello schermo la frequenza sarà impostata al minimo, così da risparmiare “energie preziose”
  • SmartassV2
    Ha un unico obbiettivo: ricercare la frequenza ideale per le svariate operazioni di calcolo compiute dalla CPU. Per questo motivo scalerà in maniera più aggressiva fino al raggiungimento della frequenza settata, più lentamente dopo
  • Lionheart
    Estremamente performante con grande reattività e scorrevolezza inaudita nonché durata della batteria… …minima
  •  Wheatley
    Il miglior compromesso tra prestazioni tipiche dell’Ondemand e un corretto consumo della batteria
  • Hotplug
    Scala le frequenze della CPU in base al carico, ed è per questo simile all’Ondemand. A schermo spento dovrebbe poi disattivare uno dei core del processore, così da garantire prestazioni eccellenti e consumi davvero ridotti.
  • Pegasusq
    Governor estremamente potente in grado di far lavorare ciascun core in modalità asincrona: la CPU è suddivisa in molteplici core (da 2 a 8), che vengono attivati in relazione ai calcoli da eseguire; con questo Governor sarà possibile controllarne la frequenza, così da ottenere il massimo dal SoC.

overclock

 

Il Governor non è però l’unico parametro ad influire pesantemente nelle prestazioni. Gioca un ruolo molto importante anche lo “scheduler”.

Scheduler

Lo scheduler può essere definito come una sorta di algoritmo che a partire da un insieme di richieste di accesso ad una risorsa (ad esempio l’accesso al processore da parte di un’applicazione o processo), stabilisce un ordinamento temporale delle richieste, privilegiando però quelle che rispettano determinati parametri, in modo tale da ottimizzare l’accesso alla data risorsa.

Benché la scelta di un dato scheduler piuttosto che un altro non produca effetti facilmente visibili in termini di durata e prestazioni, apporta comunque miglioramenti, e pertanto non può essere ignorato. Analizziamo quindi nel dettaglio i migliori scheduler in circolazione.

  •  Noop
    Inserisce tutte le richieste incolonnandole semplicemente in base al loro ordine di arrivo, raggruppando insieme quelle simili.
  • Deadline
    Questo scheduler garantisce un termine a tutte le richieste così da evitare fenomeni di attesa dovuti alla bassa priorità assegnata ad alcune di loro: incolonnandosi tutte a fine cosa andrebbero a rallentare eccessivamente la CPU
  • Vr
    La richiesta successiva è eseguita in base alla distanza dall’ultima processata.
  • SIO
    E’ lo scheduler più semplice: non fa alcun tipo di ordinamento, allo scopo di ottenere una bassa latenza. La latenza non rappresenta altro che il lasso di tempo compreso tra l’istante in cui è generata la richiesta e quello in cui tale 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.
  • Zen
    Questo scheduler ordina le richieste di accesso in maniera particolare: le mette in pausa (ovviamente per un brevissimo periodo di tempo) attendendo che ne arrivino altre simili così da eseguirle più velocemente.
  • ROW
    E’ il più comune, sovente attivato di default. Il nome deriva dalle parole inglesi Read Over Write, poiché privilegia le richieste di lettura a discapito di quelle di scrittura.

Comments

Loading…