sabato 14 settembre 2013

Android e il Kernel: perchè usarne uno custom?

Scopriamo insieme i vantaggi di un kernel custom per il nostro dispositivo Android preferito!
Come ben sappiamo, il sistema operativo Android è basato su Kernel Linux, ovvero il cuore pulsante che gestisce l’hardware e l’interazione di esso con il software installato è condiviso con i sistemi Linux, e quindi di natura Open Source. Generalmente il kernel sviluppato da ogni casa produttrice permette di sfruttare in modo equilibrato le risorse disponibili nel proprio device, ma non sempre questo binomio originale/ottimizzato funziona a dovere (generalmente quasi mai), quindi i vari sviluppatori indipendenti (me compreso) si sono dovuti applicare a studiare il funzionamento di ogni device, alla ricerca delle migliori combinazioni per ottimizzare il rapporto consumo/prestazioni. Questa serie di modifiche applicate al Kernel Android/Linux ha favorito la nascita di una serie sterminata di Kernel Custom, personalizzati per ogni device esistente, volti spesso a semplificare la vita dell’utente medio, fornendo un sistema stabile, veloce, ed ottimizzato, senza ulteriori problemi nella gestione di esso. Questi sistemi personalizzati sono nati e cresciuti sui forum di sviluppo, in primis XDA Developers (probabilmente il forum più grande al mondo come utenti iscritti), che si occupa di riunire e diffondere tutte le creazioni degli sviluppatori indipendenti, anche cross-platform (include iOS, Windows Phone e altri sistemi minori).
 Ma cosa distingue un Kernel Custom da uno originale, e cosa dobbiamo individuare per sceglierne il migliore?
I CONSUMI
Per iniziare, sfatiamo il mito che ogni Kernel custom esistente possa migliorare la nostra esperienza utente: molti “pseudo-sviluppatori” si limitano solamente a mettere insieme patch e modifiche varie prese da altri kernel o da altri sviluppatori, credendo (nella loro ignoranza) di portare grandi miglioramenti, quando il risultante è solo effetto placebo. Molto spesso ci troviamo di fronte a software ben presentato a livello grafico, con una descrizione accattivante che invita ovviamente a provarlo; ebbene generalmente questi software risultano essere uguali se non peggiori della versione originale, perdendo così il concetto di ottimizzazione custom.
In un sistema mobile, i componenti che richiedono generalmente più energia e quindi maggior consumo di batteria sono la gestione telefonica, la scheda di rete Wi-Fi e (se presente) il modulo LTE/4G. Se siete alla ricerca di un Kernel che migliori solamente la durata della batteria durante l’uso intenso, puntate alla ricerca di ottimizzazioni su questi fronti. I vantaggi sono molteplici, in particolare alcune ottimizzazioni permettono unanavigazione più veloce senza intasare la rete che stiamo utilizzando (vedi TCP Congestion Control), altre garantiscono una velocità media maggiore (vedi Network Scheduler), altre ancora filtrano i pacchetti in entrata per evitare di consumare batteria con richiami continui alla scheda di rete (vedi Packet Filtering).uneak-smartresponse
Sempre sul fronte batteria, troviamo spesso pratiche comuni di Undervolt(abbreviato UV, abbassare la tensione di funzionamento della CPU per consumare e riscaldare meno) e di Underclock (abbreviato UC, abbassare la frequenza di lavoro della CPU, senza limitare troppo le prestazioni), volte più all’utenza medio-alta (essendo comunque parametri di sistema che possono compromettere la CPU). Entrambe le pratiche sono disponibili su tutti i device, e richiedono una attenzione maggiore, specialmente nella modifica dei voltaggi che può portare ad una instabilità ed un crash del sistema. Dobbiamo però precisare che questi due metodi di “risparmio” energetico non sempre portano i frutti voluti, e spesso lasciano invariato il consumogenerale.
Caso comune:
Abbassando la frequenza della CPU, il sistema impiegherà più tempo per effettuare determinate operazioni che richiedevano un carico elevato, colmando il gap energetico rispetto a prima allungando i tempi delle operazioni eseguite.
Ultimo fattore che agisce sul consumo energetico, presente sui device con CPU multi-core (dual-quad-octa core), è la gestione dell’hotplug, ovverol’accensione e lo spegnimento dinamico dei core della CPU, con conseguente risparmio energetico a core spenti. Una ottima gestione della logica di hotplug permette dirisparmiare una consistente quantità di energia, senza penalizzare le prestazioni del device in modo evidente. I device con SoC (System on Chip, piattaforma hardware) Qualcomm Snapdragon permettono ad esempio di tenere attivi quanti core sono necessari ai processi attivi sul sistema, e diminuire le frequenze di ogni singolo core in base alle esigenze (in modo asimmetrico), ottimizzando così consumi e calore prodotto (ancora da migliorare riguardo al calore). Altri SoC permettono solamente di accendere e spegnere i core in base al carico, oppure di distribuire i processi su tutti i core disponibili in modo da alleggerire il carico di ogni singolo core (vedi Scheduler Multi-Core). I sistemi con architettura ARM big.LITTLE (Exynos Octa), permettono di sfruttare 2 CPU con diversi consumi energetici, e dividere il carico in base alle esigenze, migliorando ancora di più la gestione energetica.
 LE PRESTAZIONI
Se siete esigenti in fatto di prestazioni del vostro device, un custom kernel è di sicuro la scelta migliore su cui puntare, anche se possedete l’ultimo device disponibile sul mercato. E’ un dato di fatto che i produttori non sfruttano mai al massimo la piattaforma SoC dei loro device, un po’ per scelta di marketing (non avrebbero motivo di farne uscire di nuovi ogni 6 mesi), un po’ per compensare sul fronte consumi. Sono molti i fattori su cui un kernel può agire, in primis la gestione della CPU e secondariamente sulla GPU (chip grafico).
overclocking-androidPratica comune per migliorare le prestazioni èl’aumentare la frequenza massima della CPU(essendo a step progressivi in base al carico), permettendo di svolgere operazioni pesanti in minor tempo, ovviamente a discapito dei consumi, del calore prodotto e della stabilità di sistema. Spesso infatti l’Overclock (abbreviato OC) è accompagnato all’Overvolt (abbreviato OV), per mantenere stabile la frequenza prescelta per la CPU (non sempre si riesce a raggiungere la stabilità, ed il sistema crasha e si riavvia). Come l’UV e l’UC sopra citati, praticare l’OC e l’OV necessita un minimo di conoscenza informatica per evitare di arrecare danni permanenti al proprio dispositivo, ma soprattutto per riuscire a tornare indietro dopo aver applicato queste modifiche.
Stessa pratica viene applicata anche alla GPU, tentando di migliorare le prestazioni grafiche 3D in ambito gaming. Generalmente l’OC sulle GPU è decisamente più praticabile e facile da gestire, essendo progettate per sopportare frequenze più elevate di quelle impostate di fabbrica. Per individuare eventuali instabilità nell’OC delle GPU, semplicemente si ricercano artefatti grafici nell’uso di giochi con grafica avanzata, oppure si utilizzano app appositamente create per testare la stabilità del sistema (vedi Stability Test).
Come sempre però, i parametri sono molteplici su cui agire per migliorare le prestazioni, e generalmente un kernel ben ottimizzato punta soprattutto a migliorare lo scaling della CPU (capacità di adattare la frequenza al carico, e rispondere in tempi sufficientemente veloci) agendo sul governor (driver che gestisce lo scaling della CPU). Anche l’hotplug (vedi sopra) fa la sua parte nelle prestazioni del device, quindi una logica hotplug più aggressiva (attiva i core più velocemente e facilmente) migliorerà anche la reattività del sistema.
CONCLUSIONI
Se eravate prima scettici nello scegliere di modificare il vostro device, spero che alla fine della lettura siate riusciti a cogliere tutti i vantaggi che porta un kernel custom su un device Android. Che cerchiate un miglioramento sul fronte consumi e batteria, oppure un aumento prestazionale per giocare in modo fluido i vostri giochi preferiti, modificare il vostro terminale solo con un kernel custom vi permetterà di raggiungere l’obiettivo voluto in modo semplice ed efficace.
Non posso purtroppo dare consigli diretti su quale kernel utilizzare in base al vostro device, ma questo articolo dovrebbe avervi fornito una base dal quale partire per ulteriori approfondimenti, e per una scelta accurata del kernel che più vi interessa. Per la ricerca vi rimando al forum di XDA Developers dove potrete cercare il vostro dispositivo e sfogliare le modifiche disponibili.


Nessun commento:

Posta un commento