RAM-i probleem: kui palju RAM-i me tegelikult vajame?

Kuna Android-seadmed hakkavad liikuma 6 GB muutmälu suunas, peame endalt esitama selle küsimuse: kui palju RAM-i me tegelikult vajame? Jälgige uudistamist!

Hiljuti kostitati meid teadetega ühest esimestest Androidi kasutavatest nutitelefonidest, millel on 6 GB muutmälu.

6 hullumeelset GB! See on mobiilseadmes palju RAM-i.

Numbrimängu käivitamine on Vivo Xplay5 Elite. Vivo kui ettevõte ei pruugi olla väljaspool Hiinat väga tuntud, kuid ettevõte on oma kiituseks öelnud, et on varem valmistanud väga õhukesi nutitelefone. Xplay5 Elite'iga üritasid nad mahutada paljusid tehnilisi seadmeid, mille eesmärk on olla kuningate seas.

Vivo Xplay 5 Elite'il on korpuse metallraamil kahe kumerusega 5,43-tolline QHD Super AMOLED ekraan. Sees on uusim Qualcomm Snapdragon 820 SoC, mille taktsagedus on 2,15 GHz, Adreno 530 GPU, 6 GB LPDDR4 muutmälu ja 128 GB mittelaiendatavat salvestusruumi. Kaamera jaoks on taga 16 MP Sony IMX298 andur koos f/2.0-ga ja ees on 8 MP shooter. Neid tehnilisi andmeid ja seadme metallist ehitust silmas pidades ei tohiks olla üllatav, et see maksab isegi Hiina tarbijale üsna palju. Hinnasildiga 4288 CNY (660 dollarit) on see kindlasti pigem Hiina lipulaev kui taskukohane keskklass.

Vivo Xplay5 Elite pole praegu ainus 6 GB muutmäluga nutitelefon. Vähemtuntud ja äsja asutatud Hiina originaalseadmete tootja Vernee püüab pakkuda tarbijatele suuremat juurdepääsu tohutule hulgale RAM-ile, lansseerides keskmise tasemega seadme Vernee Apollo.

Vernee Apollo kannab MediaTeki tipptasemel SoC-d, Helio X20. Seal on eelmainitud 6 GB muutmälu, 128 GB sisemälu, 21 MP Sony IMX230 tagakaamera ja 5,5-tolline 2K ekraan. Kõige selle juures maksaks Apollo 399,99 dollarit. Meile saadetud pressiinfos ei mainita Hiina hinda ega sihtturge, nii et telefon on endiselt üsna salapärane.

Mõlemad telefonid paluvad meil küsida, kas me teeme tõesti vaja nii palju RAM-i praegu?

Sellele küsimusele vastamiseks peame mõistma, kuidas Android töötleb mäluhaldust ja RAM-i. Mishaal tegi suurepärast tööd Androidi mäluhalduse keerukuse selgitamisel eelmine artikkel, mis säilitab oma asjakohasuse ka kuus kuud hiljem.

"See, kuidas Android mäluhaldust käsitleb, on selline: selle asemel, et pärast selle tegevuse lõppu iga protsessi kohe maha lüüa (nt kui vajutate rakendusest väljumiseks kodunuppu), hoitakse protsessi mällu seni, kuni süsteem peab selle rohkem mälu vabastamiseks kustutama. Kuidas süsteem otsustab, milliseid protsesse säilitada ja mida tappa? LMK (Low Memory Killer) draiver. ActivityManageri teenus määrab igale protsessile oom_adj väärtuse vahemikus -17 kuni 15, mis kohandab oom_adj väärtust dünaamiliselt sõltuvalt protsessi tähtsusest. Kõrgemad oom_adj väärtused tähendavad, et protsess suretatakse suurema tõenäosusega mälu vabastamiseks, samas kui madalamad väärtused tähendavad, et protsess sureb väiksema tõenäosusega."

"Android liigitab iga protsessi viide kategooriasse (esiplaan, nähtav, teenus, taust ja tühi), mis ulatuvad kõige olulisemast kuni kõige vähem oluliseni. Igasse kategooriasse kuuluvad protsessid suretatakse erinevatel vaba mälu tasemetel (nimetatakse LMK minfree väärtuseks). Näiteks kui teie seadme LMK minfree väärtused on seatud väärtusele "2560,4090,6144,7168,8192" (loetletud 4k lehtedena, mida saab lugeda failist /sys/module/lowmemorykiller/parameters/minfree), siis teie seade lõpetab protsessid, mis on määratletud kui "Tühi", kui teie vaba mälumaht langeb alla 32 MB, protsessid, mis on määratletud kui "taust", kui vaba mälu on alla 28 MB, ja esiplaani rakendused, kui vaba mälu on alla 32 MB 10 MB (taevas hoidku!) Need minfree väärtused ei ole tänapäeval enamiku seadmete puhul tüüpilised, kuna tootjad armastavad neid oma maitse järgi kohandada olenevalt sellest, kuidas see nende seadmele kõige paremini sobib. Kuid peaksite sellest lühikesest selgitusest välja võtma, et mida rohkem vaba mälu teil on, seda vähem on tõenäoline, et kriitilised protsessid katkevad."

Nagu Mishaal mainib, varieeruvad tegelikud väärtused OEM-i lõikes, nii et teil võib olla erinevatel sarnaste tehniliste omadustega telefonidel mitme ülesandega töötamise kogemus erinev. Teine muutuja segus on seadmes oleva bloatware kogus. Tugevalt muudetud Android UX-id, nagu TouchWiz, pakuvad laoseisu alusel lisaks Androidile palju funktsioone AOSP ja sellisena nõuab süsteemile palju rohkem ressursside eraldamist, et see toimiks OEM-i soovitud tasemel selle juurde. See jätab kolmanda osapoole rakendustele vähem ruumi vahemällu salvestamiseks, mis omakorda süvendab mälumahtu.

Enamasti Pehme

"Peamine erinevus 2 GB muutmäluga seadme ja 3 GB muutmäluga seadme vahel on see, et 3 GB muutmäluga seade RAM peaks suutma taustal rohkem protsesse vahemällu salvestada, ilma et see käivitaks LMK draiveri, et see välja lülitada."

Nii et teoreetiliselt peaks riistvara tasemel rohkem RAM-i jätma rohkem protsesse vahemällu OS-i tasemel ja suuremat kogumit originaalseadmete valmistajale. Kuid sagedamini näete isegi 2 GB RAM-iga seadmetes palju rohkem vaba RAM-i isegi pärast seda, kui süsteem ja rakendused on lukustanud vajaliku. Siin on sama galerii Mishaali postitusest, kus võrreldakse erinevate seadmete vaba RAM-i:

Nagu näete, on kõige kergema kasutajaliidesega seadmetes, nagu Nexus 5 ja Nexus 6, suurim osa vaba RAM-i seadmes. Isegi kõige raskemal, Samsung Galaxy Note 5-l, millel on 4 GB muutmälu ja käivitatav TouchWiz, on umbes 1,7 GB muutmälu, mis on saadaval rakenduste vahemällu salvestamiseks. Isegi nii suure vaba RAM-i kogumi korral kannatas Note 5 multitegumtöötlusprobleemide all, kus seade kasutas agressiivset mälukäsitlust. Selle põhjuseks oli OEM-i LMK väärtuste valik: riistvara tasemel rohkem RAM-i pumpamine ei aita! Note 5 parandus multitegumtöö parandamiseks hõlmas tegelikult nende LMK väärtuste muutmist rohkemaks multitegumtöö sõbralik kui Samsungi aktsiaseaded, mis on irooniline seadme puhul, mis keskendus sellele tootlikkus. Sellisena ei muuda lihtsalt rohkem RAM-i seadet automaatselt multitegumtöösõbralikumaks.

Tulles uuesti galerii juurde, siis osa kuvatavast vabast RAM-ist kasutatakse juba rakenduste protsesside vahemällu salvestamiseks, kuid osa sellest jääb tegelikult jõude tegemata. Siin on mõned minu OnePlus One'i ekraanipildid, mis näitavad kuvatavat vaba RAM-i ja seejärel vahemällu salvestatud RAM-i ja jõudeoleku RAM-i jagamist:

Isegi väikesel umbes 1 sekundil, mil mul kulus aktiivsest mängust välja vahetamiseks ja vahemällu salvestatud protsesside kuvamise suvandi valimiseks, töötas süsteem tegeliku kasutatava RAM-i kärpimiseks. See juhtus seetõttu, et mängu, antud juhul NFS No Limits, prioriteet muutus, liikudes esiplaani protsessilt taustaprotsessile. Seda tehti eesmärgiga, et OS töötaks kogu aeg sujuvalt, kuna aktiivses kasutuses olev RAM muutus 2,5 GB-lt 1,9 GB-le, samal ajal kui NFS No Limits mänguprotsess jäeti vahemällu. Kuna mängu prioriteet muutus, on see nüüd tapetav, kui OS vajab tegelikult rohkem vaba RAM-i. Siin pole kasutaja sekkumist vaja.

Selle näite eesmärk oli rõhutada, kuidas Androidi mäluhaldus on süsteemi ja kõigi selle protsesside prioriteetide seadmisel tõhusamaks muutunud. Vahemällu jääb ainult nii palju rakendusi: ideaaljuhul ei kasuta OS vahemällu salvestamiseks kogu vaba RAM-i. Osa vabast RAM-ist jäetakse jõude. See on kavandatud juhtudel, kui protsess võib vajada oma RAM-i kasutust väga kiiresti suurendama.

Rakenduste protsesside jaoks on ka RAM-i eraldamise piirang, nagu originaalseadmete tootja on määranud üksikute telefonide jaoks. Vastavalt an vana arutelupostitus Androidi raamistiku insener Dianne Hackborn, on piirang Java hunnik kus Java-objektid asuvad enne prügikoristust, kuid isegi seda saab NDK nutika kasutamisega laiendada. Lihtsamalt öeldes tähendab see, et RAM-il on maksimaalne ülempiir, mis oli saadaval igale rakendusele, mis soovis selles seadmes töötada. Vanemate seadmete puhul määrati selle hunniku väärtuseks 24 MB, kuid viimastel seadmetel on suurust suurendatud tänu seadmete RAM-i suurenemisele ja suurenenud riistvaranõudlusele. Androidi omad Ühilduvuse definitsiooni dokument jaoks Android 6.0 mainib (jaotis 3.7) minimaalseid väärtusi, mille originaalseadmete tootja peaks nende hunnikute määrama. Võrdluseks: minu OnePlus One CM12.1-s on tavaliste Dalvik VM-i hunnikute jaoks 192 MB limiit ja lubab kuni 512 MB rakenduste jaoks, mis määravad oma rakenduse manifestis androidi: largeHeap=true. Teoreetiliselt saab üks rakendus minu seadmes kasutada ainult kuni 512 MB RAM-i. Peale selle algatatakse prügivedu, et muud vajalikud süsteemiprotsessid vabalt kulgeksid.

Nüüd ühendage rakenduste kuhja suuruse limiit neile määratud LMK väärtustega, mis põhinevad nende prioriteedil ja OS-i nõudmine hoida teatud kogus vaba RAM-i jõude ja võite ette kujutada, kuidas Androidi multitegumtöö töötab. See on keeruline mehhanism, mis hõlmab paljusid muutujaid riistvara, tarkvara ja rakenduse enda vahel; peenhäälestatud, et võimaldada isegi kõige elementaarsematel seadmetel töötada, võimaldades samal ajal parimatel lipulaevadel oma potentsiaali teoreetiliselt täielikult ära kasutada. Praktiliselt pole see täiuslik maailm, nii et kumbki neist ei juhtu. See tähendab, et puudub garantii, et 4 GB muutmäluga seade töötab samaväärselt teise 4 GB muutmäluga seadmega. Samuti ei tähenda see, et lisa-GB RAM, mis ületab teatud künnise, suurendab multitegumtöötlust ja mälukäsitlust otseselt proportsionaalselt.

Praktika ja tulevik

Niisiis, tulles tagasi algse küsimuse juurde, kas tõesti vajate 2016. aasta alguses oma seadmetesse 6 GB muutmälu? Minu jaoks on vastus eitav.

Enamikul minu omanduses olevatest seadmetest on 3 GB LPDDR3 muutmälu ja ühel on 4 GB muutmälu. Ja multitegumtöö puhul pole jõudluses lihtsalt märgatavat erinevust. Siin on multitegumtöö demo minu hiljutisest OnePlus X ülevaatest, seadmest, millel on 3 GB muutmälu ja peaaegu Android ROM:

Seadmel ei olnud probleeme 12 rakenduse vahel vahetamisega (13, kui arvestada aktiivse ekraanisalvestiga), ilma et oleks vaja ühtegi neist rakendustest tappa. Ümberlaadimist ega ümberjoonistamist ei toimunud ning see kogemus püsib üllatavalt ühtlane kogu igapäevase kasutuse jooksul ilma taaskäivitamise või rakenduste käsitsi tapmiseta. Tavatarbijal pole praktilise kasutamise ajal lihtsalt vajadust nende paljude rakenduste vahel aktiivselt liikuda!

Aga mis siis, kui kasutaja soovib selle asemel nende paljude mängude vahel vahetada? Nõus, et ülalmainitud tegurid võivad parimal juhul vaid mõne mängu vahel vahetada. Sellises olukorras võimaldaks rohkem füüsilist RAM-i seadmel rohkem mänge mälus passiivselt hoida. Kuid selle eelise kontrapunktiks on see, et paljud mängud laadivad end multitegumtöö käigus sageli uuesti tööle! Nende eesmärk on vältida petmismehhanisme mänguandmetega manipuleerimisel mängu ajal, nii et uuesti laadimine/resünkroonimine/värskendamine sunnib terviklikkuse kontrolli uuesti mängima. Nende kavatsused on erinevad, kuid see muudab paljude mängude jaoks kehvad kandidaadid, kelle vahel mitut ülesannet täita.

On veel mõned tegurid, mis takistavad teil kogu seda kuulsusrikast RAM-i ära kasutamast. Kui leiate ülesande / mitu ülesannet kombineerituna, mis nõuavad teie seadme kogu 6 GB LPDDR4 RAM-i, on teil mobiilse SoC-i näol palju suurem kitsaskoht. Tõsi, Snapdragon 820 ja Helio X20 võivad olla nende vastavate ettevõtete lipulaevad, kuid need on siiski mobiilsed SoC-d. Sellisena on neil muid piiranguid, nagu soojuse teke, soojuse hajumine, termiline drossel ja aku eluiga, mis muudaks nad kehvad valikud ülesannete jaoks, mis on piisavalt intensiivsed, et kasutada nii palju RAM-i pikema aja jooksul aega. Sellistel juhtudel on parem kasutada süsteemi, mis pole mõeldud käes hoidmiseks; selline, millel on vabamad piirangud soojuse ja tarbitava energia osas.

Olenemata sellest, kui palju vaba RAM-i teil on, visatakse rakendused lõpuks siiski välja. Just nii töötab mäluhaldus. RAM-i suurendamisel on endiselt eeliseid, näiteks aitab kaasa kuhja suuruse edasine suurendamine bitmap varade toiteks kõrgema eraldusvõimega kuvaritel, mis võimaldab meil oma seadmetes QHD eraldusvõimest kaugemale minna. Suurenenud kuhja suurus kogu turu trendina toob kaasa rakendusi, mis suudavad teha rohkem. Kui RAM pole puutumatuna lukustatud, kasutatakse seda alati. Kuid arvestades, et ekraanid näivad lipulaevadel 1080p ja 1440p vahel, võime näha 4 GB mõistlikku standardit veel aasta või paar.

Kokkuvõtteks saame vastata küsimusele: kas me tõesti vaja nii palju RAM-i praegu? Ei, me ei tee seda. Seadmete puhul, mille hind on üks madalana hoidmise tegureid, teeniks 3 GB või 4 GB muutmälu piisavalt hästi. Lipulaevade puhul, mille nõudlus on kasutajatelt, kes hindadest nii palju ei hooli, ei teeks kahju tulevikus. Kliendina pange tähele, et te ei kasuta veel kogu seda RAM-i.

Mida arvate 6 GB muutmäluga telefonidest? Andke meile oma mõtted allolevates kommentaarides teada!