Het RAM-raadsel: hoeveel RAM hebben we echt nodig?

Nu Android-apparaten richting 6 GB RAM beginnen te evolueren, moeten we onszelf de volgende vraag stellen: hoeveel RAM hebben we echt nodig? Volg ons terwijl we verkennen!

Onlangs werden we getrakteerd op aankondigingen van een van de eerste smartphones met Android die wordt geleverd met 6 GB RAM.

6 verdomde GB! Dat is veel RAM in een mobiel apparaat.

Het starten van het getallenspel is de Vivo Xplay5 Elite. Vivo is als bedrijf misschien niet zo bekend buiten China, maar het bedrijf heeft in het verleden een aantal hele dunne smartphones gemaakt. Met de Xplay5 Elite probeerden ze veel specificaties in te passen in een apparaat dat tot doel heeft tussen de koningen te staan.

De Vivo Xplay 5 Elite is voorzien van een dubbel gebogen 5,43-inch QHD Super AMOLED-scherm op een metalen frame voor de behuizing. Binnenin bevindt zich de nieuwste Qualcomm Snapdragon 820 SoC geklokt op 2,15 Ghz, Adreno 530 GPU, 6 GB LPDDR4 RAM en 128 GB niet-uitbreidbare opslag. Voor de camera is de achterkant een 16 MP Sony IMX298-sensor met f/2.0 en de voorkant een 8 MP-schieter. Rekening houdend met deze specificaties en de metalen constructie van het apparaat, zou het geen verrassing moeten zijn dat het zelfs voor de Chinese consument behoorlijk wat zou kosten. Met een prijskaartje van 4.288 CNY ($660) is dit zeker een Chinees vlaggenschip in plaats van een betaalbare middenklasser.

De Vivo Xplay5 Elite is niet de enige smartphone op dit moment met 6GB RAM. Een minder bekende en nieuw opgerichte Chinese OEM, Vernee, streeft ernaar om consumenten meer toegang te geven tot gigantische hoeveelheden RAM door een apparaat uit het middensegment te lanceren, de Vernee Apollo.

De Vernee Apollo zal worden geleverd met de hoogwaardige SoC van MediaTek, de Helio X20. Er zal de eerder genoemde 6 GB RAM, 128 GB interne opslag, een 21 MP Sony IMX230 camera aan de achterzijde en een 5,5 "2K-scherm zijn. Met dat alles zou de Apollo $ 399,99 kosten. In de persinformatie die naar ons werd gestuurd, werd geen melding gemaakt van een Chinese prijs of doelmarkten, dus de telefoon is nog steeds een beetje mysterieus.

Beide telefoons smeken ons om de vraag te stellen, nietwaar? echt nodig hebben zoveel RAM nu?

Om deze vraag te beantwoorden, moeten we begrijpen hoe Android omgaat met geheugenbeheer en RAM. Mishaal heeft fantastisch werk geleverd door de fijne kneepjes van het geheugenbeheer van Android uit te leggen een eerder artikel, dat zes maanden later nog steeds relevant is.

"De manier waarop Android omgaat met geheugenbeheer is als volgt: in plaats van elk proces onmiddellijk af te sluiten nadat de activiteit is beëindigd (zoals wanneer u op de startknop drukt om een ​​app af te sluiten), wordt het proces in het geheugen bewaard totdat het systeem het moet beëindigen om meer geheugen vrij te maken. Hoe beslist het systeem welke processen moeten worden behouden en welke moeten worden beëindigd? Het LMK-stuurprogramma (Low Memory Killer). Aan elk proces wordt een oom_adj-waarde toegewezen, variërend van -17 tot 15 door de ActivityManager Service, die de oom_adj-waarde dynamisch aanpast, afhankelijk van het belang van het proces. Hogere oom_adj-waarden betekenen dat de kans groter is dat het proces wordt beëindigd om geheugen vrij te maken, terwijl lagere waarden betekenen dat de kans kleiner is dat het proces wordt beëindigd."

"Android categoriseert elk proces in vijf categorieën (voorgrond, zichtbaar, service, achtergrond en leeg), variërend van meest belangrijk tot minst belangrijk om actief te blijven. Processen die tot elke categorie behoren, worden uitgeschakeld op verschillende niveaus van vrij geheugen dat overblijft (de zogenaamde LMK minfree-waarde). Als de LMK minfree-waarden van uw apparaat bijvoorbeeld zijn ingesteld op "2560,4090,6144,7168,8192" (weergegeven als 4k-pagina's, die kunnen worden gelezen vanuit /sys/module/lowmemorykiller/parameters/minfree), dan is uw apparaat doodt processen die als ‘Leeg’ zijn gedefinieerd als uw vrije geheugen onder de 32 MB komt, processen die als ‘Achtergrond’ zijn gedefinieerd als het vrije geheugen minder dan 28 MB is, en voorgrond-apps als het vrije geheugen onder de 28 MB komt. 10 MB (de hemel verhoede het!) Nu zijn deze minfree-waarden tegenwoordig niet meer gebruikelijk op de meeste apparaten, omdat fabrikanten deze graag naar eigen wens aanpassen, afhankelijk van hoe zij vinden dat dit het beste bij hun apparaat past. Maar wat u uit deze korte uitleg moet halen, is dat hoe meer vrij geheugen u heeft, hoe kleiner de kans is dat kritieke processen worden uitgeschakeld."

Zoals Mishaal vermeldt, variëren de werkelijke waarden van OEM tot OEM, dus je kunt verschillende ervaringen hebben met multitasken op verschillende telefoons met vergelijkbare specificaties. Een andere variabele in de mix is ​​de hoeveelheid bloatware op het apparaat. Sterk gewijzigde Android-UX's zoals TouchWiz hebben de neiging om op basis van voorraad veel functies boven Android te verpakken AOSP vereist als zodanig veel meer middelen die aan het systeem moeten worden toegewezen om te kunnen functioneren op het niveau dat de OEM wilde het aan. Dit laat minder ruimte over voor apps van derden om in de cache te worden opgeslagen, wat op zijn beurt het doden van weinig geheugen verergert.

Grotendeels Zacht

"Het belangrijkste verschil tussen een apparaat met 2 GB RAM en een apparaat met 3 GB RAM is dat het apparaat met 3 GB van RAM zou in staat moeten zijn om meer processen op de achtergrond in de cache op te slaan zonder dat het LMK-stuurprogramma wordt geactiveerd om het af te sluiten."

Theoretisch gezien zou meer RAM-geheugen op hardwareniveau ertoe moeten leiden dat er meer processen in de cache op OS-niveau blijven en dat er een grotere pool ontstaat waar de OEM van kan profiteren. Maar vaker wel dan niet, zelfs op apparaten met 2 GB RAM, zie je veel meer vrije RAM, zelfs nadat het systeem en de apps hebben vastgelegd wat ze nodig hebben. Hier is dezelfde galerij uit het bericht van Mishaal, waarin gratis RAM op verschillende apparaten wordt vergeleken:

Zoals u kunt zien, hebben apparaten met de lichtste gebruikersinterface, zoals de Nexus 5 en de Nexus 6, het grootste deel van het vrije RAM-geheugen dat beschikbaar is op het apparaat. Zelfs de zwaarste van allemaal, de Samsung Galaxy Note 5 met 4 GB RAM en TouchWiz om op te starten, heeft ongeveer 1,7 GB RAM dat beschikbaar is voor app-caching. Zelfs met zo'n grote hoeveelheid vrij RAM-geheugen had de Note 5 last van multitasking-problemen waarbij het apparaat zijn toevlucht nam tot agressieve geheugenverwerking. Dit kwam door de keuze van de OEM voor LMK-waarden: meer RAM-geheugen op hardwareniveau inpompen zal niet helpen! De oplossing voor de Note 5 voor het verbeteren van multitasking bestond feitelijk uit het aanpassen van deze LMK-waarden om meer te zijn multitaskingvriendelijker dan de standaardinstellingen van Samsung, wat ironisch is voor een apparaat dat zich richt op productiviteit. Als zodanig zal het hebben van meer RAM het apparaat niet automatisch multitaskingvriendelijker maken.

Terugkomend op de galerij: een deel van het weergegeven vrije RAM-geheugen wordt al gebruikt voor het cachen van app-processen, maar een deel hiervan blijft feitelijk inactief en doet niets. Hier zijn enkele schermafbeeldingen van mijn OnePlus One die het vrije RAM-geheugen laten zien, en vervolgens het uiteenvallen in cached RAM en inactief RAM:

Zelfs in het kleine geval van ~1 seconde dat het me kostte om een ​​actief spel te verlaten en de optie te selecteren om in de cache opgeslagen processen weer te geven, werkte het systeem om het feitelijk gebruikte RAM-geheugen te verminderen. Dit gebeurde omdat de game, in dit geval NFS No Limits, een verandering in prioriteit had en van een voorgrondproces naar een achtergrondproces ging. Dit werd gedaan om het besturingssysteem te allen tijde soepel te laten werken, aangezien het RAM-geheugen bij actief gebruik veranderde van 2,5 GB naar 1,9 GB, terwijl het NFS No Limits-spelproces in de cache werd opgeslagen. Naarmate de prioriteit van het spel veranderde, kan het nu worden gedood als het besturingssysteem daadwerkelijk meer vrij RAM-geheugen nodig heeft. Er is hier geen gebruikersinteractie vereist.

Het doel van dit voorbeeld was om te benadrukken hoe het geheugenbeheer van Android is geëvolueerd om efficiënter te zijn in het prioriteren van het systeem en al zijn processen. Er zijn maar een beperkt aantal apps die op elk moment in de cache blijven: het besturingssysteem gebruikt idealiter niet het volledige vrije RAM-geheugen bij caching-processen. Een deel van het vrije RAM-geheugen blijft inactief. Dit is inherent aan het ontwerp, voor gevallen waarin een proces het RAM-gebruik zeer snel moet opschalen.

Er is ook een RAM-toewijzingslimiet voor app-processen, zoals opnieuw gedefinieerd door de OEM voor individuele telefoons. Volgens een oude discussiepost door Dianne Hackborn, Android Framework Engineer, is er een limiet aan de Java-hoop waar Java-objecten zich zullen bevinden voordat de garbagecollection wordt gestart, maar zelfs dat kan worden uitgebreid met slim gebruik van de NDK. In eenvoudige bewoordingen betekent dit dat er een maximale limiet is voor het RAM-geheugen dat beschikbaar was voor elke app die op dat apparaat wilde draaien. Voor oudere apparaten was deze hoop ingesteld op 24 MB, maar op recente apparaten is de omvang vergroot dankzij de toename van het RAM-geheugen in apparaten en de toegenomen hardwarevereisten. Android's Compatibiliteitsdefinitiedocument voor Android 6.0 vermeldt (paragraaf 3.7) de minimumwaarden die deze heaps door de OEM moeten worden ingesteld. Ter vergelijking: mijn OnePlus One op CM12.1 beschikt over een limiet van 192 MB voor normale Dalvik VM-heaps en staat maar liefst 512 MB toe voor apps die Android specificeren: largeHeap=true in hun applicatiemanifest. Theoretisch kan een enkele app maximaal 512 MB RAM op mijn apparaat gebruiken. Daarnaast zal er afvalinzameling worden gestart om de andere noodzakelijke systeemprocessen vrij te laten stromen.

Combineer nu de limiet voor de heapgrootte voor apps met LMK-waarden die eraan zijn toegewezen op basis van hun prioriteit en de De drang van het besturingssysteem om een ​​bepaalde hoeveelheid vrije RAM inactief te houden, en je kunt je voorstellen hoe Android multitaskt werken. Het is een complex mechanisme waarbij veel variabelen betrokken zijn tussen de hardware, de software en de app zelf; nauwkeurig afgesteld om zelfs de meest elementaire apparaten te laten functioneren, terwijl de beste vlaggenschepen in theorie nog steeds absoluut voordeel kunnen halen uit hun potentieel. Praktisch gezien is dit geen perfecte wereld, dus geen van beide gebeurt. Dit betekent dat er geen garantie is dat een apparaat met 4 GB RAM even goed zal werken als een ander apparaat met 4 GB RAM. Het betekent ook niet dat een extra GB RAM boven een bepaalde drempel u een direct evenredige toename in multitasking en geheugenverwerking zal opleveren.

Het praktische en de toekomst

Dus om terug te komen op de oorspronkelijke vraag: heb je begin 2016 echt 6 GB RAM op je apparaten nodig? Voor mij is het antwoord nee.

De meeste apparaten die ik bezit, hebben 3 GB LPDDR3 RAM, en één heeft 4 GB RAM. En er is simpelweg geen merkbaar prestatieverschil als het gaat om multitasken. Hier is een multitasking-demo van mijn recente OnePlus X-recensie, een apparaat met 3 GB RAM en een bijna standaard Android-ROM:

Het apparaat had geen problemen met het schakelen tussen 12 apps (13 als je de actieve schermrecorder meetelt) zonder een van deze apps te hoeven sluiten. Er was geen sprake van herladen of opnieuw tekenen, en deze ervaring blijft verrassend consistent tijdens het dagelijks gebruik zonder opnieuw opstarten of het handmatig doden van apps. Een normale consument hoeft tijdens praktisch gebruik simpelweg niet actief te schakelen tussen de vele apps!

Maar wat als de gebruiker in plaats daarvan tussen deze vele games wil wisselen? Akkoord, de hierboven genoemde factoren zouden een rol spelen om op zijn best tussen slechts een paar games te kunnen schakelen. In een dergelijke situatie zou het apparaat, als er meer fysiek RAM-geheugen is, meer games passief in het geheugen kunnen opslaan. Maar een tegenwicht voor dit voordeel is dat veel games zichzelf vaak herladen bij multitasking! Hun bedoeling is om te voorkomen dat cheatmechanismen spelgegevens manipuleren terwijl het spel actief is, dus een herladen/hersynchroniseren/verversen dwingt integriteitscontroles af om opnieuw in het spel te komen. Hun bedoeling is anders, maar dit maakt veel games slechte kandidaten om tussen te multitasken.

Er zijn nog een aantal factoren die u ervan weerhouden te profiteren van al dat glorieuze RAM-geheugen. Als je een taak/meerdere taken gecombineerd tegenkomt die alle 6 GB van het LPDDR4 RAM-geheugen van je apparaat vereisen, heb je een veel groter knelpunt in de vorm van de mobiele SoC. Toegegeven, de Snapdragon 820 en de Helio X20 zijn misschien wel de vlaggenschipprocessors van hun respectievelijke bedrijven, maar het zijn nog steeds mobiele SoC's. Als zodanig hebben ze andere beperkingen, zoals warmteopwekking, warmteafvoer, thermische beperking en batterij leven waardoor ze slechte keuzes zouden maken voor taken die intensief genoeg zijn om gedurende een langere periode zoveel RAM te gebruiken tijd. In dergelijke gevallen kunt u beter een systeem gebruiken dat niet bedoeld is om in uw hand te houden; een die meer liberale grenzen heeft aan de warmte die het kan genereren en de stroom die het kan verbruiken.

Uiteindelijk worden apps, ongeacht hoeveel vrij RAM-geheugen je hebt, nog steeds verwijderd. Dat is precies hoe geheugenbeheer werkt. Er zijn nog steeds voordelen verbonden aan het grootschalig inzetten van RAM, zoals een verdere toename van de heapgrootte bitmap-items aandrijven op schermen met een hogere resolutie, waardoor we verder kunnen gaan dan QHD-resoluties op onze apparaten. Een grotere heap-omvang als trend op de markt zal ertoe leiden dat apps die dat wel kunnen, de ambitie hebben om meer te doen. Tenzij RAM wordt vergrendeld als onaantastbaar, zal er altijd een of ander nut voor zijn. Maar gezien het feit dat schermen op vlaggenschepen schijnbaar tussen 1080p en 1440p zweven, kunnen we 4 GB nog een jaar of twee als een redelijke standaard beschouwen.

Als afsluiting krijgen we antwoord op de vraag: doen we dat ook echt nodig hebben zoveel RAM nu? Nee, dat doen we niet. Voor apparaten waarbij de prijs een van de factoren is die ze laag moeten houden, zou 3 GB of 4 GB RAM hen goed genoeg van pas komen. Voor vlaggenschepen met vraag van gebruikers die niet zoveel om prijzen geven, zou het geen kwaad kunnen om toekomstbestendig te zijn. Houd er als klant rekening mee dat u nog niet al dat RAM-geheugen zult gebruiken.

Wat vindt u van telefoons met 6 GB RAM? Laat ons uw mening weten in de reacties hieronder!