MegaLab.it
Stampa Articolo
Aperiodico gratuito di informatica
 
20100106150159_1737902635_20100106150126_270729475_android_spotlight.png

Android troppo lento, anche su quad-core? Uno sviluppatore XDA rilascia una patch "miracolosa"

a cura di farbix89
16/01/2013 - news
Telefonia & Palmari - Trovata e risolta la causa che provoca lag e rallentamenti più o meno evidenti su tutti i dispositivi Android rilasciati negli ultimi 6 anni, anche quelli più recenti.Pronti a mettere il turbo al robottino verde?

Le ultime novità sull'argomento sono disponibili qui. Importante: leggetele prima di procedere a quanto scritto in questo articolo.

Ad esclusione dei Nexus targati Google, sugli altri device Android sembra decisamente poco ottimizzato, specie nelle versioni customizzate dalle case produttrici (quasi un contro senso, visto che dovrebbero essere ottimizzate su misura per ogni smartphone).

Finora non era stata trovata la causa di questi perenni "rallentamenti" e "lag" dell'interfaccia utente o delle app, molto evidenti anche su device di fascia alta: vedere rallentare un Samsung Galaxy SIII, dopo la spesa sostenuta per averlo, non è un'esperienza appagante.

CPU mostruose quad-core, tantissima RAM, GPU degne di un PC.... tutto rovinato dalla scarsa ottimizzazione lato software di Android!

Slow-android.jpg

La situazione è ancora più tragica sui device più vecchi o con hardware più limitato, dove solo l'utilizzo di custom ROM e custom kernel riescono a rendere meno frustrante la perdita di performance dei propri device.

Ma qual è la causa di questi rallentamenti improvvisi?

Finora era rimasta ignota, ma un abile programmatore del forum XDA Developers ha "rovistato" tra il codice di Android e le sue componenti, trovando il colpevole: è la Java Virtual Machine (JVM) che gestisce moltissimi elementi grafici (e non) dell'interfaccia e delle app.

Ecco la spiegazione tecnica ufficiale:

"So, I was experiencing significant lag as we all do from time to time, and decided I was going to get to the bottom of it.After tracing and debugging for hours, I discovered the source of 90% of Android's lag. In a word, entropy (or lack thereof).Google's JVM, like Sun's, reads from /dev/random. For all random data. Yes, the /dev/random that uses a very limited entropy pool.Random data is used for all kinds of stuff.. UUID generation, session keys, SSL.. when we run out of entropy, the process blocks. That manifests itself as lag. The process cannot continue until the kernel generates more high quality random data.So, I cross-compiled rngd, and used it to feed /dev/urandom into /dev/random at 1 second intervals.Result? I have never used an Android device this fast."

In parole povere, la Java Virtual Machine presente sui nostri dispositivi utilizza una certa quantità di dati generati casualmente, che vengono immagazzinati nella cartella /dev/random: questi valori prodotti randomicamente (chiamati appunto entropy pool) servono spesso al sistema operativo e vengono usati da quasi tutte le app, widget o qualsiasi altra cosa giri su Android.

Tali dati vengono cancellati dopo un tot periodo di tempo.

Una qualsiasi app o elemento di Android che necessita di tali dati deve obbligatoriamente "ricrearseli" da zero, appunto perché non più disponibili: questo genera un "lag" più o meno visibile.

Tale bug affligge Android dalla nascita, ed è riscontrabile su qualsiasi device prodotto in circolazione, anche sui Nexus (dove però le elevate ottimizzazioni operate da Google mascherano benissimo il problema).

E non conta nulla la RAM o il numero di core disponibili nelle CPU: anche con 20 core e 6GB di RAM, il sistema Android puntualmente rallenterà in maniera vistosa in alcuni frangenti (numerose app che in contemporanea richiedono accesso ai dati in /dev/random e, non trovandoli, intasano il sistema).

Qual è la soluzione trovata dallo sviluppatore?

Ha ricompilato il daemon rngd (random number generator) di Android per fare in modo che ripopoli, attraverso un'elevata entropia, la /dev/random ad intervalli di un secondo, rispetto agli svariati secondi necessari con le impostazioni di default.

In questo modo la cartella è sempre piena di dati, pronti per essere utilizzati (in realtà viene comunque svuotata, ma resta vuota per poche frazioni di secondo).

Le apps (ma anche qualsiasi altro elemento che gira su Android) trovano già tutti i dati di cui necessitato, senza "dover far da sé", migliorando in maniera stupefacente la reattività del sistema.

Lo sviluppatore ha rilasciato l'APK del suo seeder entropy, scaricabile gratuitamente dal suo topic di riferimento. (consiglio di prelevare la versione 1.4.0, l'ultima rilasciata).

L'applicazione deve essere sempre attiva, affinché sia efficace.Consigliata l'attivazione dell'autorun.

NOTA BENE: l'applicazione necessita dei permessi di root per funzionare correttamente.

NOTA BENE 2: alcuni utenti segnalano un aumento (seppur minimo) nel consumo della batteria con l'app in esecuzione permanente.

NOTA BENE 3: alcuni utenti, esperti in sicurezza, segnalano l'intrinseca pericolosità di avere la cartella /dev/random sempre piena di dati. Il rischio di exploit sfruttabili e 0day mirati aumenta in maniera concreta (anche se al momento non esiste nessuna minaccia in grado di sfruttare tale quantità di dati).

Ma funziona davvero? Non è la classica app miracolosa che in realtà genera un "effetto placebo"?

Ecco la mia personale esperienza:

Ero molto scettico su questa ennesima app, avendo provato davvero di tutto per rendere usabile il mio smartphone low-profile, il Motorola Defy+.

Avevo già installato CyanogenMod 7.2 e custom kernel, sperando che la situazione migliorasse.... migliorie ci sono state, ma i lag erano sempre e ovunque presenti, anche nei menu e nell'apertura di rubrica e messaggi.

Ormai ci ho (avevo) fatto l'abitudine.

Sempre con grande scetticismo, decido di provare questa app.

Superati i controlli antivirali (non si sa mai!), decido di installarla, impostandola in autoavvio e avviando il generatore di entropia.

Conscio delle modifiche effettuate decido di riavviare.

Da quel momento il mio vecchio smartphone è rinato!

Fluidità pazzesca nei menu e nello scorrimento, app che si aprono al volo, riempio volontariamente la RAM ma nessun lag evidente, apro anche 6-7 applicazioni alla volta e le lascio in background.... il sistema rimane sempre molto usabile.

Ho visto una fluidità che ho potuto riscontrare solo sui Nexus, con ben altro hardware.

Non ho potuto provare l'app su device di fascia alta, ma quasi sicuramente i risultati saranno spettacolari (sempre con le dovute proporzioni: un device di fascia alta sarà comunque più veloce e fluido dei device low-profile, indipendentemente dall'attivazione della patch o meno).

L'app sembra ottenere i migliori risultati proprio sui device più bisognosi di una "spinta".

Effettuate un prova e inserite i vostri feedback nel campo dei commenti.

MegaLab.it rispetta la tua privacy. Per esercitare i tuoi diritti scrivi a: privacy@megalab.it .

Copyright 2008 MegaLab.it - Tutti i diritti sono riservati