RAM Conundrum: Hvor mye RAM trenger vi egentlig?

click fraud protection

Når Android-enheter begynner å bevege seg mot 6 GB RAM, må vi stille oss selv dette spørsmålet: Hvor mye RAM trenger vi egentlig? Følg med mens vi utforsker!

Nylig ble vi behandlet med kunngjøringer om en av de første smarttelefonene som kjører Android som kommer med 6 GB RAM.

6 jævla GB! Det er mye RAM i en mobil enhet.

Å starte nummerspillet er Vivo Xplay5 Elite. Vivo som selskap er kanskje ikke så godt kjent utenfor Kina, men selskapet, til sin ære, har laget noen veldig tynne smarttelefoner tidligere. Med Xplay5 Elite prøvde de å passe inn mange spesifikasjoner i en enhet som har som mål å stå blant konger.

Vivo Xplay 5 Elite har en dobbel buet 5,43" QHD Super AMOLED-skjerm på en metallramme for kroppen. På innsiden er det den nyeste Qualcomm Snapdragon 820 SoC klokket til 2,15 Ghz, Adreno 530 GPU, 6 GB LPDDR4 RAM og 128 GB ikke-utvidbar lagring. For kamera er baksiden en 16 MP Sony IMX298-sensor med f/2.0 og fronten er et 8 MP-skytespill. Med tanke på disse spesifikasjonene og den metalliske konstruksjonen til enheten, bør det ikke være noen overraskelse at det ville koste ganske mye selv for den kinesiske forbrukeren. Med en prislapp på CNY 4288 ($660), er dette absolutt et kinesisk flaggskip i stedet for en rimelig mellomklasse.

Vivo Xplay5 Elite er ikke den eneste smarttelefonen akkurat nå med 6 GB RAM. En mindre kjent og nystiftet kinesisk OEM, Vernee, har som mål å gi større forbrukertilgjengelighet til gigantiske mengder RAM ved å lansere en middels enhet, Vernee Apollo.

Vernee Apollo kommer med MediaTeks avanserte SoC, Helio X20. Det vil være de nevnte 6 GB RAM, 128 GB intern lagring, et 21 MP Sony IMX230 bakkamera og en 5,5" 2K-skjerm. Med alt dette vil Apollo koste 399,99 dollar. Presseinformasjonen som ble sendt til oss hadde ingen omtale av en kinesisk pris eller målmarkeder, så telefonen er fortsatt en del mystikk.

Begge disse telefonene ber oss om å stille spørsmålet, gjør vi det trenger virkelig så mye RAM akkurat nå?

For å svare på dette spørsmålet, må vi forstå hvordan Android håndterer minneadministrasjon og RAM. Mishaal gjorde en fantastisk jobb med å forklare vanskelighetene med Androids minneadministrasjon en tidligere artikkel, som fortsatt opprettholder sin relevans seks måneder senere.

"Måten Android håndterer minneadministrasjon på er slik: i stedet for å umiddelbart drepe hver prosess etter at aktiviteten ble avsluttet (som når du trykker på hjem-knappen for å avslutte en app), beholdes prosessen i minnet til systemet må drepe den for å frigjøre mer minne. Hvordan bestemmer systemet hvilke prosesser som skal beholdes og hva som skal drepes? LMK-driveren (Low Memory Killer). Hver prosess tildeles en oom_adj-verdi fra -17 til 15 av ActivityManager-tjenesten, som dynamisk justerer oom_adj-verdien avhengig av prosessens viktighet. Høyere oom_adj-verdier betyr at prosessen er mer sannsynlig å bli drept for å frigjøre minne, mens lavere verdier betyr at prosessen er mindre sannsynlig å bli drept."

"Android kategoriserer hver prosess i fem kategorier (Forgrunn, Synlig, Tjeneste, Bakgrunn og Tom), alt fra viktigst til minst viktig for å fortsette å kjøre. Prosesser som tilhører hver kategori blir drept ved forskjellige nivåer av ledig minne igjen (kalt LMK minfree-verdi). For eksempel, hvis enhetens LMK minfree-verdier er satt til "2560,4090,6144,7168,8192" (oppført som 4k sider, som kan leses fra /sys/module/lowmemorykiller/parameters/minfree), så er enheten din vil drepe prosesser definert som "Tom" når ledig minne faller under 32MB, prosesser definert som "Bakgrunn" når ledig minne er under 28MB, og forgrunnsapper når ledig minne faller under 10 MB (himmelen forby!) Nå er ikke disse minfree-verdiene typiske på de fleste enheter i disse dager, da produsenter elsker å tilpasse disse etter deres smak, avhengig av hvordan de føler at det passer best til deres enhet. Men det du bør ta bort fra denne korte forklaringen er at jo mer ledig minne du har, desto mindre sannsynlighet vil du se kritiske prosesser bli drept."

Som Mishaal nevner, varierer de faktiske verdiene fra OEM til OEM, så du kan ha varierende erfaringer med multi tasking på forskjellige telefoner med lignende spesifikasjoner. En annen variabel i blandingen er mengden bloatware på enheten. Tungt modifiserte Android UX-er som TouchWiz har en tendens til å pakke inn mange funksjoner utover Android basert på lager AOSP, og som sådan, krever mye mer ressurser som skal allokeres til systemet for å fungere på nivået OEM ønsket det også. Dette gir mindre rom for tredjepartsapper å bli bufret, noe som igjen forverrer drap med lavt minne.

For det meste Myk

"Hovedforskjellen mellom en enhet med 2 GB RAM og en enhet med 3 GB RAM er at enheten med 3 GB RAM skal kunne bufre flere prosesser i bakgrunnen uten å trigge LMK-driveren til å drepe den."

Så teoretisk sett burde mer RAM tilgjengelig på maskinvarenivå føre til at flere prosesser forblir bufrede på OS-nivå og et større basseng for OEM å ta del i. Men oftere enn ikke, selv på enheter med 2 GB RAM, ser du mye mer ledig RAM selv etter at systemet og appene har låst seg til det de trenger. Her er det samme galleriet fra Mishaals innlegg, som sammenligner gratis RAM på tvers av forskjellige enheter:

Som du kan se, har enheter med de letteste brukergrensesnittene, som Nexus 5 og Nexus 6, den største andelen ledig RAM tilgjengelig på enheten. Selv den tyngste av dem alle, Samsung Galaxy Note 5 med 4 GB RAM og TouchWiz for å starte opp, har rundt 1,7 GB RAM som er tilgjengelig for app-caching. Selv med et så stort basseng med ledig RAM, led Note 5 av multitasking-problemer der enheten ville ty til aggressiv minnehåndtering. Dette var på grunn av OEMs valg av LMK-verdier: å pumpe inn mer RAM på maskinvarenivå vil ikke hjelpe! Løsningen for Note 5 for å forbedre multitasking innebar faktisk å justere disse LMK-verdiene til å bli mer multitasking-vennlig enn Samsungs aksjeinnstillinger, noe som er ironisk for en enhet som fokuserte på produktivitet. Som sådan vil bare det å ha mer RAM ikke automatisk gjøre enheten mer multitasking-vennlig.

For å komme tilbake til galleriet igjen, er en del av den ledige RAM-en som vises allerede brukt til appprosessbufring, men en del av dette forblir faktisk inaktiv og gjør ingenting. Her er noen skjermbilder fra min OnePlus One som viser ledig RAM som vises, og deretter oppdelingen i bufret RAM og inaktiv RAM:

Selv i det lille ~1 sekundet det tok meg å bytte ut av et aktivt spill og velge alternativet for å vise hurtigbufrede prosesser, arbeidet systemet for å kutte ned den faktiske RAM-en som ble brukt. Dette skjedde fordi spillet, NFS No Limits i dette tilfellet, hadde en endring i prioritet, og gikk fra en forgrunnsprosess til en bakgrunnsprosess. Dette ble gjort med sikte på å holde OS flytende jevnt til enhver tid, da RAM under aktiv bruk endret seg fra 2,5 GB til 1,9 GB, mens NFS No Limits-spillprosessen ble bufret. Ettersom spillet endret prioritet, kan det nå drepes hvis operativsystemet faktisk trenger mer ledig RAM. Det kreves ingen brukerinteraksjon her.

Poenget med dette eksemplet var å fremheve hvordan Androids minneadministrasjon har utviklet seg til å være mer effektiv i å prioritere systemet og alle dets prosesser. Det er bare så mange apper som vil forbli bufret til enhver tid: OS bruker ideelt sett ikke hele den ledige RAM-en i hurtigbufringsprosesser. En del av den ledige RAM-en blir stående på tomgang. Dette er ved design, for anledninger når en prosess kan trenge å skalere opp RAM-bruken veldig raskt.

Det er også et RAM-allokeringstak for appprosesser, som definert av OEM igjen for individuelle telefoner. I følge en gammelt diskusjonsinnlegg av Dianne Hackborn, Android Framework Engineer, er det en grense for Java-haug der java-objekter vil ligge før søppelinnsamling igangsettes, men selv det kan utvides med smart bruk av NDK. Med enkle ord betyr dette at det er et maksimalt tak på RAM-en som var tilgjengelig for alle apper som ønsket å kjøre på den enheten. For eldre enheter ble denne haugen satt til 24MB, men på nyere enheter har størrelsen blitt økt takket være økningen i RAM i enheter samt økte maskinvarekrav. Android sine Kompatibilitetsdefinisjonsdokument til Android 6.0 nevner (avsnitt 3.7) minimumsverdiene som disse haugene bør settes av OEM. Til sammenligning kan min OnePlus One på CM12.1 skryte av en grense på 192 MB for vanlige Dalvik VM-hauger og tillater så mye som 512 MB for apper som spesifiserer Android: largeHeap=true i applikasjonsmanifestet. Teoretisk sett kan en enkelt app bare bruke opptil 512 MB RAM på enheten min. Utover det vil søppelinnsamling igangsettes for å holde de andre nødvendige systemprosessene frittflytende.

Kombiner nå haugstørrelsesgrensen for apper med LMK-verdier tildelt dem basert på deres prioritet og OSs insistering på å holde en viss mengde ledig RAM inaktiv, og du kan forestille deg hvordan Androids multi-tasing virker. Det er en kompleks mekanisme som involverer mange variabler mellom maskinvaren, programvaren og selve appen; finjustert for å la selv de mest grunnleggende enhetene fungere, samtidig som de beste flaggskipene kan dra absolutt nytte av potensialet deres, teoretisk sett. I praksis er dette ikke en perfekt verden, så ingen av disse skjer. Dette betyr at det ikke er noen garanti for at en enhet med 4 GB RAM vil fungere like godt som en annen med 4 GB RAM. Det betyr heller ikke at en ekstra GB RAM utover en viss terskel vil gi deg en direkte proporsjonal økning i multitasking og minnehåndtering.

Det praktiske og fremtiden

Så, for å komme tilbake til det opprinnelige spørsmålet, trenger du virkelig 6 GB RAM i enhetene dine tidlig i 2016? For meg er svaret nei.

De fleste enhetene jeg eier har 3 GB LPDDR3 RAM, og en har 4 GB RAM. Og det er rett og slett ingen merkbar forskjell i ytelse når det kommer til multitasking. Her er en multitasking-demo fra min nylige OnePlus X-anmeldelse, en enhet med 3 GB RAM og en nesten lager Android ROM:

Enheten hadde ingen problemer med å bytte mellom 12 apper (13 hvis du teller den aktive skjermopptakeren) uten å måtte drepe noen av disse appene. Det var ingen omlasting og ingen omtegning, og denne opplevelsen forblir overraskende konsistent gjennom daglig bruk uten omstarter eller manuell appavlivning. En vanlig forbruker har rett og slett ikke behov for å aktivt bytte mellom disse mange appene under praktisk bruk!

Men hva om brukeren ønsker å bytte mellom disse mange spillene i stedet? Enig, faktorer nevnt ovenfor vil spille inn for å tillate å bytte mellom bare noen få spill i beste fall. I en slik tilstand vil det å ha mer fysisk RAM la enheten holde flere spill passivt i minnet. Men et motpunkt til denne fordelen er at mange spill ofte gjør en kraftpåfylling ved multitasking! Deres intensjon er å unngå juksemekanismer fra å manipulere spilldata mens spillet kjører, så en reload/resync/refresh tvinger integritetssjekker til å komme i spill igjen. Intensjonen deres er annerledes, men dette gjør mange spill til dårlige kandidater å multitaske mellom.

Det er enda flere faktorer også, som vil hindre deg i å dra nytte av all den strålende RAM-en. Hvis du finner en oppgave/flere oppgaver kombinert som krever hele 6 GB av enhetens LPDDR4 RAM, vil du ha en mye større flaskehals i form av mobil SoC. Riktignok kan Snapdragon 820 og Helio X20 være flaggskipprosessorene til deres respektive selskaper, men de er fortsatt mobile SoC-er. Som sådan har de andre begrensninger som varmeutvikling, varmespredning, termisk struping og batteri liv som ville gjøre dem dårlige valg for oppgaver som er intensive nok til å bruke så mye RAM i en lengre periode tid. I slike tilfeller er det bedre å bruke et system som ikke er ment å holdes i hånden; en som har mer liberale grenser for varmen den kan generere og kraften den kan forbruke.

På slutten av dagen, uansett hvor mye ledig RAM du har, vil apper fortsatt bli kastet ut. Det er bare slik minnehåndtering fungerer. Det er fortsatt fordeler med å gå stort på RAM, som en ytterligere økning i haugstørrelse vil hjelpe driver bitmap-ressurser på skjermer med høyere oppløsning, slik at vi kan gå lenger enn QHD-oppløsninger på enhetene våre. En økt haugstørrelse som en trend på tvers av markedet vil føre til apper som kan strebe etter å gjøre mer. Med mindre RAM er låst av som urørbar, vil det alltid være en eller annen bruk for det. Men med tanke på at skjermer tilsynelatende svever mellom 1080p og 1440p på flaggskip, kan vi se 4 GB som en rimelig standard i et år eller to til.

Som en konklusjon får vi svare på spørsmålet: gjør vi det trenger virkelig så mye RAM akkurat nå? Nei, det gjør vi ikke. For enheter som har pris som en av faktorene de trenger for å holde lav, vil 3 GB eller 4 GB RAM tjene dem godt nok. For flaggskip med etterspørsel fra brukere som ikke bryr seg like mye om prisene, ville det ikke skade fremtidssikkerheten. Som kunde, bare gjør oppmerksom på at du ikke kommer til å bruke all den RAM-en ennå.

Hva er dine tanker om telefoner med 6 GB RAM? Gi oss beskjed om dine tanker i kommentarene nedenfor!