RAM Conundrum: Hvor meget RAM har vi egentlig brug for?

Når Android-enheder begynder at bevæge sig mod 6 GB RAM, er vi nødt til at stille os selv dette spørgsmål: Hvor meget RAM har vi egentlig brug for? Følg med, når vi udforsker!

For nylig blev vi behandlet med meddelelser om en af ​​de første smartphones, der kører Android, der kommer med 6 GB RAM.

6 vilde GB! Det er meget RAM i en mobil enhed.

Opstart af nummerspillet er Vivo Xplay5 Elite. Vivo som virksomhed er måske ikke særlig kendt uden for Kina, men virksomheden har, til sin kredit, lavet nogle virkelig tynde smartphones tidligere. Med Xplay5 Elite forsøgte de at passe ind i en masse specifikationer i en enhed, der sigter mod at stå blandt konger.

Vivo Xplay 5 Elite har en dobbeltbuet 5,43" QHD Super AMOLED-skærm på en metallisk ramme til kroppen. Indeni er der den seneste Qualcomm Snapdragon 820 SoC med klokkeslæt på 2,15 Ghz, Adreno 530 GPU, 6 GB LPDDR4 RAM og 128 GB ikke-udvidelig lagerplads. Til kamera er bagsiden en 16MP Sony IMX298-sensor med f/2.0, og fronten er en 8MP-shooter. Når man husker på disse specifikationer og enhedens metalliske opbygning, burde det ikke være nogen overraskelse, at det ville koste en del selv for den kinesiske forbruger. Med et prisskilt på CNY 4.288 ($660) er dette bestemt et kinesisk flagskib snarere end en overkommelig mellemklasse.

Vivo Xplay5 Elite er ikke den eneste smartphone lige nu med 6 GB RAM. En mindre kendt og nystiftet kinesisk OEM, Vernee, sigter mod at bringe større forbrugertilgængelighed til gigantiske mængder RAM ved at lancere en enhed i mellemklassen, Vernee Apollo.

Vernee Apollo kommer med MediaTeks high-end SoC, Helio X20. Der vil være de førnævnte 6 GB RAM, 128 GB internt lager, et 21 MP Sony IMX230-bagkamera og en 5,5" 2K-skærm. Med alt dette ville Apollo koste $399,99. De presseoplysninger, der blev sendt til os, havde ingen omtale af en kinesisk pris eller om målmarkeder, så telefonen er stadig en del mystik.

Begge disse telefoner beder os om at stille spørgsmålet, gør vi virkelig brug for så meget RAM lige nu?

For at besvare dette spørgsmål er vi nødt til at forstå, hvordan Android håndterer hukommelsesstyring og RAM. Mishaal gjorde et fantastisk stykke arbejde med at forklare forviklingerne ved Androids hukommelsesstyring en tidligere artikel, som stadig bevarer sin relevans seks måneder senere.

"Den måde, Android håndterer hukommelsesstyring på, er sådan: snarere end straks at dræbe enhver proces, efter dens aktivitet sluttede (som når du trykker på startknappen for at afslutte en app), opbevares processen i hukommelsen, indtil systemet skal dræbe den for at frigøre mere hukommelse. Hvordan beslutter systemet, hvilke processer der skal beholdes, og hvad der skal dræbes? LMK (Low Memory Killer) driveren. Hver proces tildeles en oom_adj-værdi fra -17 til 15 af ActivityManager Service, som dynamisk justerer oom_adj-værdien afhængigt af processens vigtighed. Højere oom_adj-værdier betyder, at processen er mere tilbøjelig til at blive dræbt for at frigøre hukommelse, mens lavere værdier betyder, at processen er mindre tilbøjelig til at blive dræbt."

"Android kategoriserer hver proces i fem kategorier (Forgrund, Synlig, Service, Baggrund og Tom), lige fra vigtigst til mindst vigtig for at blive ved med at køre. Processer, der tilhører hver kategori, afbrydes ved forskellige niveauer af ledig hukommelse tilbage (kaldet LMK minfree-værdien). For eksempel, hvis din enheds LMK minfree-værdier er indstillet til "2560,4090,6144,7168,8192" (opført som 4k sider, som kan læses fra /sys/module/lowmemorykiller/parameters/minfree), så er din enhed vil dræbe processer defineret som 'Tom', når din ledige hukommelse falder til under 32MB, processer defineret som 'Baggrund', når ledig hukommelse er under 28MB, og forgrundsapps, når ledig hukommelse falder under 10 MB (himlen forbyde det!) Nu er disse minfree-værdier ikke typiske på de fleste enheder i disse dage, da producenter elsker at tilpasse disse til deres smag, afhængigt af hvordan de føler, at det passer bedst til deres enhed. Men hvad du bør tage væk fra denne korte forklaring er, at jo mere ledig hukommelse du har, jo mindre sandsynligt vil du se kritiske processer blive dræbt."

Som Mishaal nævner, varierer de faktiske værdier fra OEM til OEM, så du kan have forskellige erfaringer med multi tasking på forskellige telefoner med lignende specifikationer. En anden variabel i blandingen er mængden af ​​bloatware på enheden. Stærkt modificerede Android UX'er som TouchWiz har en tendens til at indeholde en masse funktioner ud over Android baseret på lager AOSP, og som sådan kræver, at der allokeres mange flere ressourcer til systemet for at fungere på det niveau, OEM ønskede det til. Dette giver mindre plads til, at tredjepartsapps kan blive cachelagret, hvilket igen forværrer drab med lav hukommelse.

For det meste Blød

"Den største forskel mellem en enhed med 2 GB RAM versus en enhed med 3 GB RAM er, at enheden med 3 GB RAM skulle være i stand til at cache flere processer i baggrunden uden at udløse LMK-driveren til at dræbe den."

Så teoretisk set burde mere tilgængelig RAM på hardwareniveau føre til, at flere processer forbliver cachelagret på OS-niveau og en større pulje for OEM at tage del i. Men oftere end ikke, selv på enheder med 2 GB RAM, ser du meget mere ledig RAM, selv efter at systemet og apps har låst sig til det, de har brug for. Her er det samme galleri fra Mishaals indlæg, der sammenligner gratis RAM på tværs af forskellige enheder:

Som du kan se, har enheder med de letteste brugergrænseflader, som Nexus 5 og Nexus 6, den største andel af ledig RAM tilgængelig på enheden. Selv den tungeste af dem alle, Samsung Galaxy Note 5 med 4 GB RAM og TouchWiz til at starte, har omkring 1,7 GB RAM, der er tilgængelig til app-cache. Selv med så stor en pulje af fri RAM, led Note 5 af multitasking-problemer, hvor enheden ville ty til aggressiv hukommelseshåndtering. Dette var på grund af OEM's valg af LMK-værdier: at pumpe mere RAM ind på hardwareniveau vil ikke hjælpe! Rettelsen til Note 5 til forbedring af multitasking involverede faktisk at justere disse LMK-værdier til at være mere multitasking venlig end Samsungs aktieindstillinger, hvilket er ironisk for en enhed, der fokuserede på produktivitet. Som sådan vil bare det at have mere RAM ikke automatisk gøre enheden mere multitasking-venlig.

Når vi vender tilbage til galleriet igen, bruges en del af den viste ledige RAM allerede til cachelagring af app-processer, men en del af dette forbliver faktisk inaktiv og gør ingenting. Her er nogle skærmbilleder fra min OnePlus One, der viser den viste ledige RAM og derefter opdelingen i cachelagret RAM og ledig RAM:

Selv i det lille ~1 sekund, hvor det tog mig at skifte ud af et aktivt spil og vælge muligheden for at vise cachelagrede processer, arbejdede systemet på at trimme den faktiske anvendte RAM ned. Dette skete, fordi spillet, NFS No Limits i dette tilfælde, havde en ændring i prioritet og flyttede fra en forgrundsproces til en baggrundsproces. Dette blev gjort med henblik på at holde OS flydende til enhver tid, da RAM under aktiv brug ændrede sig fra 2,5 GB til 1,9 GB, mens NFS No Limits-spilprocessen blev cachelagret. Efterhånden som spillet skiftede i dets prioritet, kan det nu dræbes, hvis OS faktisk har brug for mere fri RAM. Der er ingen brugerinteraktion påkrævet her.

Pointen med dette eksempel var at fremhæve, hvordan Androids hukommelsesstyring har udviklet sig til at være mere effektiv til at prioritere systemet og alle dets processer. Der er kun så mange apps, der vil forblive cachelagret til enhver tid: OS bruger ideelt set ikke hele den frie RAM i cacheprocesser. En del af den frie RAM efterlades til inaktiv. Dette er ved design, til lejligheder, hvor en proces muligvis skal opskalere deres RAM-forbrug meget hurtigt.

Der er også et RAM-allokeringsloft for app-processer, som defineret af OEM igen for individuelle telefoner. Ifølge en gammelt debatindlæg af Dianne Hackborn, Android Framework Engineer, er der en grænse for Java bunke hvor java-objekter vil opholde sig før affaldsindsamling påbegyndes, men selv det kan udvides med smart brug af NDK. Med enkle ord betyder det, at der er et maksimalt loft på RAM, der var tilgængeligt for enhver app, der ønskede at køre på den pågældende enhed. For ældre enheder var denne bunke sat til 24MB, men på nyere enheder er størrelsen blevet øget takket være stigningen i RAM i enheder samt øgede hardwarekrav. Androids Kompatibilitetsdefinitionsdokument til Android 6.0 nævner (afsnit 3.7) de minimumsværdier, som disse dynger skal indstilles af OEM. Til sammenligning kan min OnePlus One på CM12.1 prale af en 192MB-grænse for normale Dalvik VM-dynger og giver mulighed for så meget som 512MB for apps, der specificerer Android: largeHeap=true i deres applikationsmanifest. Teoretisk set kan en enkelt app kun bruge op til 512 MB RAM på min enhed. Derudover vil der blive iværksat affaldsindsamling for at holde de øvrige nødvendige systemprocesser fritflydende.

Kombiner nu heap-størrelsesgrænsen for apps med LMK-værdier tildelt dem baseret på deres prioritet og OS's insisteren på at holde en vis mængde ledig RAM inaktiv, og du kan forestille dig, hvordan Androids multi-tasing arbejder. Det er en kompleks mekanisme, der involverer en masse variabler mellem hardwaren, softwaren og selve appen; finjusteret til at tillade selv de mest basale enheder at fungere, samtidig med at de bedste flagskibe rent teoretisk kan drage absolut fordel af deres potentiale. Praktisk set er dette ikke en perfekt verden, så ingen af ​​disse sker. Det betyder, at der ikke er nogen garanti for, at en enhed med 4 GB RAM vil fungere på samme måde som en anden med 4 GB RAM. Det betyder heller ikke, at en ekstra GB RAM ud over en vis tærskel vil give dig en direkte proportional stigning i multitasking og hukommelseshåndtering.

Det praktiske og fremtiden

Så for at komme tilbage til det oprindelige spørgsmål, har du virkelig brug for 6 GB RAM i dine enheder i begyndelsen af ​​2016? For mig er svaret nej.

De fleste enheder, jeg ejer, har 3 GB LPDDR3 RAM, og en har 4 GB RAM. Og der er simpelthen ingen mærkbar forskel i ydeevnen, når det kommer til multitasking. Her er en multitasking-demo fra min seneste OnePlus X-anmeldelse, en enhed med 3 GB RAM og en tæt på lager Android ROM:

Enheden havde ingen problemer med at skifte mellem 12 apps (13, hvis du tæller den aktive skærmoptager) uden at skulle dræbe nogen af ​​disse apps. Der var ingen genindlæsning og ingen gentegning, og denne oplevelse forbliver overraskende konsistent gennem daglig brug uden nogen genstart eller manuel app-aflivning. En normal forbruger har simpelthen ikke behov for aktivt at skifte mellem disse mange apps under praktisk brug!

Men hvad nu hvis brugeren ønsker at skifte mellem disse mange spil i stedet for? Aftalt, faktorer nævnt ovenfor ville spille ind for at tillade skift mellem kun et par spil i bedste fald. I en sådan tilstand ville have mere fysisk RAM lade enheden holde flere spil passivt i hukommelsen. Men et modspil til denne fordel er, at mange spil ofte gør en kraftgenopladning ved multitasking! Deres hensigt er at undgå snydemekanismer fra at manipulere spildata, mens spillet kører, så en genindlæsning/gensynkronisering/opdatering tvinger integritetstjek til at komme i spil igen. Deres hensigt er anderledes, men det gør mange spil til dårlige kandidater til at multitaske imellem.

Der er også nogle flere faktorer, der ville forhindre dig i at drage fordel af al den herlige RAM. Hvis du finder en opgave/flere opgaver kombineret, der kræver alle 6 GB af din enheds LPDDR4 RAM, ville du have en meget større flaskehals i form af den mobile SoC. Indrømmet, Snapdragon 820 og Helio X20 kan være flagskibsprocessorerne for deres respektive virksomheder, men de er stadig mobile SoC'er. Som sådan har de andre begrænsninger såsom varmeudvikling, varmeafledning, termisk drosling og batteri liv, hvilket ville gøre dem til dårlige valg til opgaver, der er intensive nok til at bruge så meget RAM i en længere periode tid. I sådanne tilfælde er det bedre at bruge et system, der ikke er beregnet til at blive holdt i hånden; en, der har mere liberale grænser for den varme, den kan generere, og den strøm, den kan forbruge.

I slutningen af ​​dagen, uanset hvor meget ledig RAM du har, bliver apps stadig smidt ud. Det er bare sådan hukommelseshåndtering fungerer. Der er stadig fordele ved at gå stort på RAM, som en yderligere stigning i heap-størrelse vil hjælpe driver bitmapaktiver på skærme med højere opløsning, hvilket giver os mulighed for at gå ud over QHD-opløsninger på vores enheder. En øget bunkestørrelse som en tendens på tværs af markedet vil føre til apps, der kan stræbe efter at gøre mere. Medmindre RAM er låst af som urørlig, vil der altid være en eller anden brug for det. Men i betragtning af, at skærme tilsyneladende svæver mellem 1080p og 1440p på flagskibe, ser vi måske 4GB som en rimelig standard i endnu et år eller to.

Som konklusion får vi besvaret spørgsmålet: gør vi virkelig brug for så meget RAM lige nu? Nej, det gør vi ikke. For enheder, der har prisen som en af ​​de faktorer, som de skal holde lav, ville 3 GB eller 4 GB RAM tjene dem godt nok. For flagskibe med efterspørgsel fra brugere, der ikke bekymrer sig så meget om priserne, ville det ikke skade at fremtidssikre. Som kunde skal du blot gøre opmærksom på, at du ikke vil bruge al den RAM endnu.

Hvad er dine tanker om telefoner med 6 GB RAM? Fortæl os dine tanker i kommentarerne nedenfor!