L'enigma della RAM: quanta RAM abbiamo davvero bisogno?

Poiché i dispositivi Android iniziano a spostarsi verso i 6 GB di RAM, dobbiamo porci questa domanda: di quanta RAM abbiamo veramente bisogno? Seguici mentre esploriamo!

Recentemente abbiamo assistito all'annuncio di uno dei primi smartphone con sistema operativo Android dotato di 6 GB di RAM.

6 maledetti GB! Si tratta di molta RAM in un dispositivo mobile.

Avviare il gioco dei numeri è il Vivo Xplay5 Elite. Vivo come azienda potrebbe non essere molto conosciuta al di fuori della Cina, ma l'azienda, a suo merito, in passato ha realizzato alcuni smartphone davvero sottili. Con Xplay5 Elite, hanno cercato di inserire molte specifiche in un dispositivo che mira a stare tra i re.

Il Vivo Xplay 5 Elite è dotato di un display QHD Super AMOLED da 5,43" a doppia curvatura su una cornice metallica per il corpo. All'interno c'è l'ultimo SoC Qualcomm Snapdragon 820 con clock a 2,15 Ghz, GPU Adreno 530, 6 GB di RAM LPDDR4 e 128 GB di memoria non espandibile. Per quanto riguarda la fotocamera, la parte posteriore è un sensore Sony IMX298 da 16 MP con f/2.0 e la parte anteriore è un sensore da 8 MP. Tenendo presente queste specifiche e la struttura metallica del dispositivo, non dovrebbe sorprendere che costerebbe parecchio anche per il consumatore cinese. Con un prezzo di 4.288 CNY (660 dollari), questo è certamente un fiore all'occhiello cinese piuttosto che un modello di fascia media conveniente.

Il Vivo Xplay5 Elite non è l'unico smartphone in questo momento con 6GB di RAM. Un OEM cinese meno conosciuto e di recente fondazione, Vernee, mira a portare una maggiore accessibilità da parte dei consumatori a quantità gigantesche di RAM lanciando un dispositivo di fascia media, il Vernee Apollo.

Il Vernee Apollo verrà fornito con il SoC di fascia alta di MediaTek, l'Helio X20. Ci saranno i già citati 6 GB di RAM, 128 GB di memoria interna, una fotocamera posteriore Sony IMX230 da 21 MP e un display 2K da 5,5 pollici. Con tutto ciò, l’Apollo costerebbe $ 399,99. Le informazioni stampa che ci sono state inviate non menzionavano il prezzo cinese o i mercati target, quindi il telefono è ancora un po' misterioso.

Entrambi questi telefoni ci implorano di porre la domanda, vero? davvero bisogno così tanta RAM in questo momento?

Per rispondere a questa domanda dobbiamo capire come Android gestisce la gestione della memoria e della RAM. Mishaal ha fatto un lavoro fantastico spiegando le complessità della gestione della memoria di Android un articolo precedente, che mantiene ancora la sua rilevanza sei mesi dopo.

"Il modo in cui Android gestisce la gestione della memoria è questo: invece di interrompere immediatamente ogni processo al termine della sua attività (come quando si preme il pulsante Home per uscire da un'app), il processo viene mantenuto in memoria finché il sistema non deve terminarlo per liberare più memoria. In che modo il sistema decide quali processi mantenere e cosa eliminare? Il driver LMK (Low Memory Killer). A ogni processo viene assegnato un valore oom_adj compreso tra -17 e 15 dal servizio ActivityManager, che regola dinamicamente il valore oom_adj in base all'importanza del processo. Valori oom_adj più alti indicano che è più probabile che il processo venga ucciso per liberare memoria, mentre valori più bassi indicano che è meno probabile che il processo venga ucciso."

"Android classifica ciascun processo in cinque categorie (Primo piano, Visibile, Servizio, Sfondo e Vuoto) che vanno dal più importante al meno importante per continuare a funzionare. I processi appartenenti a ciascuna categoria vengono terminati a diversi livelli di memoria libera rimanente (chiamato valore minfree LMK). Ad esempio, se i valori minfree LMK del tuo dispositivo sono impostati su "2560,4090,6144,7168,8192" (elencati come pagine 4k, che possono essere lette da /sys/module/lowmemorykiller/parameters/minfree), allora il tuo dispositivo eliminerà i processi definiti come "Vuoto" quando la memoria libera scende al di sotto di 32 MB, i processi definiti come "In background" quando la memoria libera è inferiore a 28 MB e le app in primo piano quando la memoria libera scende al di sotto 10 MB (il cielo non voglia!) Ora, questi valori minfree non sono tipici della maggior parte dei dispositivi al giorno d'oggi poiché i produttori amano modificarli a proprio piacimento a seconda di come ritengono che si adatti meglio al loro dispositivo. Ma quello che dovresti capire da questa breve spiegazione è che più memoria libera hai, meno è probabile che i processi critici vengano uccisi."

Come menzionato da Mishaal, i valori effettivi variano da OEM a OEM, quindi potresti avere esperienze diverse con il multitasking su telefoni diversi con specifiche simili. Un'altra variabile nel mix è la quantità di bloatware sul dispositivo. Le UX Android pesantemente modificate come TouchWiz tendono a racchiudere molte funzionalità oltre ad Android in base allo stock AOSP, e come tale, richiede che molte più risorse siano allocate al sistema per funzionare al livello desiderato dall'OEM a. Ciò lascia meno spazio per la memorizzazione nella cache delle app di terze parti, il che a sua volta aggrava l'uccisione di memoria insufficiente.

Soprattutto Morbido

"La differenza principale tra un dispositivo con 2 GB di RAM e un dispositivo con 3 GB di RAM è che il dispositivo con 3 GB di RAM dovrebbe essere in grado di memorizzare nella cache più processi in background senza che il driver LMK lo interrompa."

Quindi, in teoria, più RAM disponibile a livello hardware dovrebbe portare a più processi che rimangono memorizzati nella cache a livello di sistema operativo e a un pool più ampio a cui l'OEM può prendere parte. Ma il più delle volte, anche sui dispositivi con 2 GB di RAM, vedi molta più RAM libera anche dopo che il sistema e le app si sono bloccati su ciò di cui hanno bisogno. Ecco la stessa galleria dal post di Mishaal, che confronta la RAM libera su vari dispositivi:

Come puoi vedere, i dispositivi con l'interfaccia utente più leggera, come il Nexus 5 e il Nexus 6, hanno la percentuale maggiore di RAM libera disponibile sul dispositivo. Anche il più pesante di tutti, il Samsung Galaxy Note 5 con 4 GB di RAM e TouchWiz per l'avvio, ha circa 1,7 GB di RAM disponibili per la memorizzazione nella cache delle app. Anche con una quantità così ampia di RAM libera, il Note 5 soffriva di problemi di multitasking in cui il dispositivo ricorreva ad una gestione aggressiva della memoria. Ciò è dovuto alla scelta dei valori LMK da parte dell'OEM: inserire più RAM a livello hardware non aiuta! La correzione per il Note 5 per migliorare il multitasking in realtà prevedeva la modifica di questi valori LMK per renderli maggiori multitasking amichevole rispetto alle impostazioni stock di Samsung, il che è ironico per un dispositivo su cui si è concentrato produttività. Pertanto, il solo fatto di avere più RAM non renderà automaticamente il dispositivo più adatto al multitasking.

Tornando nuovamente alla gallery, parte della RAM libera visualizzata è già utilizzata per il caching dei processi dell'app, ma parte di questa rimane effettivamente inattiva senza fare nulla. Ecco alcuni screenshot del mio OnePlus One che mostrano la RAM libera visualizzata, quindi la suddivisione in RAM memorizzata nella cache e RAM inattiva:

Anche nel breve istante in cui ho impiegato circa 1 secondo per uscire da un gioco attivo e selezionare l'opzione per visualizzare i processi memorizzati nella cache, il sistema ha funzionato per ridurre la RAM effettiva utilizzata. Ciò è accaduto perché il gioco, in questo caso NFS No Limits, ha subito un cambio di priorità, passando da un processo di Foreground a un processo di Background. Ciò è stato fatto con l'obiettivo di mantenere il sistema operativo sempre fluido e fluido, poiché la RAM sotto utilizzo attivo è cambiata da 2,5 GB a 1,9 GB, mentre il processo di gioco NFS No Limits veniva memorizzato nella cache. Poiché la priorità del gioco è cambiata, ora è possibile ucciderlo se il sistema operativo necessita effettivamente di più RAM libera. Non è richiesta alcuna interazione da parte dell'utente.

Lo scopo di questo esempio era evidenziare come la gestione della memoria di Android si sia evoluta per essere più efficiente nel dare priorità al sistema e a tutti i suoi processi. Ci sono solo un certo numero di app che rimarranno memorizzate nella cache in qualsiasi momento: il sistema operativo idealmente non utilizza l'intera RAM libera nei processi di memorizzazione nella cache. Una parte della RAM libera viene lasciata inattiva. Questo è previsto dalla progettazione, per le occasioni in cui un processo potrebbe dover aumentare l'utilizzo della RAM molto rapidamente.

Esiste anche un limite di allocazione della RAM per i processi delle app, come definito nuovamente dall'OEM per i singoli telefoni. Secondo un vecchio post di discussione di Dianne Hackborn, Android Framework Engineer, esiste un limite al Mucchio Java dove risiederanno gli oggetti Java prima che venga avviata la garbage collection, ma anche questo può essere esteso con un uso intelligente dell'NDK. In parole semplici, ciò significa che esiste un limite massimo di RAM disponibile per qualsiasi app che volesse essere eseguita su quel dispositivo. Per i dispositivi più vecchi, questo heap era impostato su 24 MB, ma sui dispositivi più recenti la dimensione è stata aumentata grazie all'aumento della RAM nei dispositivi e alle maggiori richieste hardware. Android Documento di definizione della compatibilità per Android 6.0 menziona (Sezione 3.7) i valori minimi che questi heap dovrebbero essere impostati dall'OEM. Per fare un confronto, il mio OnePlus One su CM12.1 vanta un limite di 192 MB per i normali heap di VM Dalvik e consente fino a 512 MB per le app che specificano Android: largeHeap=true nel manifest dell'applicazione. In teoria, una singola app può utilizzare solo fino a 512 MB di RAM sul mio dispositivo. Oltre a ciò, verrà avviata la raccolta dei rifiuti per mantenere il libero flusso degli altri processi di sistema necessari.

Ora combina il limite della dimensione heap per le app con i valori LMK assegnati loro in base alla loro priorità e L'insistenza del sistema operativo nel mantenere una certa quantità di RAM libera inattiva e puoi immaginare come sia il multitasking di Android lavori. È un meccanismo complesso che coinvolge molte variabili tra l'hardware, il software e l'app stessa; messo a punto per consentire il funzionamento anche dei dispositivi più elementari, consentendo comunque alle migliori ammiraglie di sfruttare in teoria il massimo vantaggio del loro potenziale. In pratica, questo non è un mondo perfetto, quindi non accade nessuna delle due cose. Ciò significa che non vi è alcuna garanzia che un dispositivo con 4 GB di RAM funzioni allo stesso modo di un altro con 4 GB di RAM. Né significa che un GB in più di RAM oltre una certa soglia ti darà un aumento direttamente proporzionale del multitasking e della gestione della memoria.

La pratica e il futuro

Quindi, tornando alla domanda iniziale, hai davvero bisogno di 6 GB di RAM nei tuoi dispositivi all'inizio del 2016? Per me la risposta è no.

La maggior parte dei dispositivi che possiedo ha 3 GB di RAM LPDDR3 e uno ha 4 GB di RAM. E semplicemente non c'è alcuna differenza evidente nelle prestazioni quando si tratta di multitasking. Ecco una demo multitasking dalla mia recente recensione di OnePlus X, un dispositivo con 3 GB di RAM e una ROM Android quasi stock:

Il dispositivo non ha avuto problemi nel passaggio tra 12 app (13 se si conta lo screen Recorder attivo) senza dover terminare nessuna di queste app. Non è stato effettuato alcun ricaricamento né ridisegno e questa esperienza rimane sorprendentemente coerente durante l'utilizzo quotidiano senza riavvii o uccisioni manuali delle app. Un consumatore normale semplicemente non ha bisogno di passare attivamente tra queste numerose app durante l'utilizzo pratico!

Ma cosa succede se l'utente desidera invece passare da un gioco all'altro? D'accordo, i fattori sopra menzionati entrerebbero in gioco per consentire il passaggio tra pochi giochi nella migliore delle ipotesi. In tali condizioni, avere più RAM fisica consentirebbe al dispositivo di contenere più giochi passivamente in memoria. Ma un contrappunto a questo vantaggio è che molti giochi spesso si ricaricano forzatamente durante il multitasking! La loro intenzione è quella di evitare che i meccanismi di imbroglio manipolino i dati di gioco mentre il gioco è in esecuzione, quindi un ricaricamento/risincronizzazione/aggiornamento forza i controlli di integrità a entrare nuovamente in gioco. La loro intenzione è diversa, ma questo rende molti giochi scarsi candidati per il multitasking.

Ci sono anche altri fattori che ti impedirebbero di trarre vantaggio da tutta quella gloriosa RAM. Se trovi un'attività/diverse attività combinate che richiedono tutti i 6 GB di RAM LPDDR4 del tuo dispositivo, avresti un collo di bottiglia molto più grande sotto forma di SoC mobile. Certo, lo Snapdragon 820 e l'Helio X20 potrebbero essere i processori di punta delle rispettive società, ma sono pur sempre SoC mobili. Pertanto, presentano altre limitazioni come la generazione di calore, la dissipazione del calore, la limitazione termica e la batteria vita che li renderebbe scelte sbagliate per attività abbastanza intense da utilizzare così tanta RAM per un periodo prolungato di tempo. In questi casi, è meglio utilizzare un sistema che non è pensato per essere tenuto in mano; uno che ha limiti più liberali sul calore che può generare e sull’energia che può consumare.

Alla fine, non importa quanta RAM libera hai, le app verranno comunque espulse. È proprio così che funziona la gestione della memoria. Ci sono ancora vantaggi nel sfruttare al massimo la RAM, come un ulteriore aumento della dimensione dell'heap che aiuterà potenziare le risorse bitmap su display a risoluzione più elevata, permettendoci di andare oltre le risoluzioni QHD sui nostri dispositivi. Una maggiore dimensione dell'heap come tendenza nel mercato porterà ad app che possono aspirare a fare di più. A meno che la RAM non sia bloccata come intoccabile, ci sarà sempre un uso o l'altro. Ma considerando che gli schermi sembrano oscillare tra 1080p e 1440p sui flagship, potremmo vedere 4 GB come uno standard ragionevole per un altro anno o due.

In conclusione, dobbiamo rispondere alla domanda: lo facciamo davvero bisogno così tanta RAM in questo momento? No, non lo facciamo. Per i dispositivi che hanno il prezzo come uno dei fattori da mantenere basso, 3 GB o 4 GB di RAM sarebbero abbastanza utili. Per i flagship con una domanda da parte di utenti che non si preoccupano tanto dei prezzi, non sarebbe male provarli in futuro. Come cliente, tieni presente che non utilizzerai ancora tutta quella RAM.

Cosa ne pensi dei telefoni con 6 GB di RAM? Fateci sapere i vostri pensieri nei commenti qui sotto!