RAM galvosūkis: kiek RAM mums iš tikrųjų reikia?

Kai „Android“ įrenginiai pradeda judėti link 6 GB RAM, turime užduoti sau šį klausimą: kiek RAM mums iš tikrųjų reikia? Sekite kartu, kai tyrinėjame!

Neseniai sulaukėme pranešimų apie vieną iš pirmųjų išmaniųjų telefonų, kuriuose veikia „Android“, su 6 GB RAM.

6 beprotiški GB! Tai yra daug RAM mobiliajame įrenginyje.

Skaičių žaidimo pradžia yra Vivo Xplay5 Elite. „Vivo“ kaip įmonė gali būti ne itin gerai žinoma už Kinijos ribų, tačiau, turint omenyje savo nuopelną, bendrovė praeityje yra pagaminusi tikrai plonų išmaniųjų telefonų. Naudodami „Xplay5 Elite“ jie bandė pritaikyti daugybę specifikacijų įrenginyje, kurio tikslas – būti tarp karalių.

„Vivo Xplay 5 Elite“ turi dvigubai išlenktą 5,43 colio QHD Super AMOLED ekraną ant metalinio korpuso rėmo. Viduje yra naujausias Qualcomm Snapdragon 820 SoC, kurio taktinis dažnis yra 2,15 GHz, Adreno 530 GPU, 6 GB LPDDR4 RAM ir 128 GB neišplečiamos atminties. Fotoaparato gale yra 16 MP Sony IMX298 jutiklis su f/2.0, o priekyje yra 8 MP šaudyklė. Turint omenyje šias specifikacijas ir metalinę įrenginio konstrukciją, nenuostabu, kad net Kinijos vartotojui tai kainuotų nemažai. Kaina 4288 CNY (660 USD), tai tikrai yra Kinijos flagmanas, o ne prieinamas vidutinės klasės gamintojas.

„Vivo Xplay5 Elite“ šiuo metu nėra vienintelis išmanusis telefonas, turintis 6 GB RAM. Mažiau žinomas ir naujai įkurtas Kinijos originalios įrangos gamintojas „Vernee“ siekia, kad vartotojams būtų lengviau pasiekti milžinišką RAM kiekį, pristatydama vidutinės klasės įrenginį „Vernee Apollo“.

„Vernee Apollo“ bus su aukščiausios klasės „MediaTek“ SoC „Helio X20“. Bus jau minėta 6 GB RAM, 128 GB vidinės atminties, 21 MP „Sony IMX230“ galinė kamera ir 5,5 colių 2K ekranas. Su visa tai „Apollo“ kainuotų 399,99 USD. Mums atsiųstoje spaudos informacijoje nebuvo paminėta Kinijos kaina ar tikslinės rinkos, todėl telefonas vis dar yra gana paslaptingas.

Abu šie telefonai verčia mus užduoti klausimą, ar mes tikrai reikia tiek RAM dabar?

Norėdami atsakyti į šį klausimą, turime suprasti, kaip „Android“ valdo atminties ir RAM. Mishaalas atliko fantastišką darbą paaiškindamas „Android“ atminties valdymo sudėtingumą ankstesnis straipsnis, kuris ir po šešių mėnesių išlieka aktualus.

"„Android“ tvarko atminties valdymą taip: o ne iš karto nutraukia kiekvieną procesą pasibaigus jo veiklai (pvz., kai paspausite pradžios mygtuką, kad išeitumėte iš programos), procesas išsaugomas atmintyje, kol sistemai reikia jį užmušti, kad atlaisvintų daugiau atminties. Kaip sistema nusprendžia, kokius procesus išlaikyti, o kokius naikinti? LMK (Low Memory Killer) vairuotojas. Kiekvienam procesui „ActivityManager“ paslauga priskiria oom_adj reikšmę nuo -17 iki 15, kuri dinamiškai koreguoja oom_adj reikšmę, atsižvelgdama į proceso svarbą. Didesnės oom_adj reikšmės reiškia, kad labiau tikėtina, kad procesas bus sustabdytas, kad būtų atlaisvinta atmintis, o mažesnės reikšmės reiškia, kad mažiau tikėtina, kad procesas bus sustabdytas."

"„Android“ kiekvieną procesą suskirsto į penkias kategorijas (pirmasis planas, matomas, paslauga, fonas ir tuščias), pradedant nuo svarbiausio iki mažiausiai svarbaus, kad jis veiktų. Kiekvienai kategorijai priklausantys procesai išjungiami esant skirtingam laisvos atminties lygiui (vadinama LMK minfree reikšme). Pavyzdžiui, jei jūsų įrenginio LMK minfree reikšmės nustatytos į „2560,4090,6144,7168,8192“ (nurodytos kaip 4k puslapiai, kuriuos galima nuskaityti iš /sys/module/lowmemorykiller/parameters/minfree), jūsų įrenginys sunaikins procesus, apibrėžtus kaip „Tuščias“, kai laisvos atminties kiekis sumažėja žemiau 32 MB, procesus, apibrėžtus kaip „Fonas“, kai laisvos atminties yra mažiau nei 28 MB, ir priekinio plano programas, kai laisvos atminties sumažėja žemiau 10 MB (neduok dangus!) Dabar šios „minfree“ vertės nėra būdingos daugeliui įrenginių šiais laikais, nes gamintojai mėgsta jas koreguoti pagal savo skonį, atsižvelgdami į tai, kaip jie geriausiai tinka jų įrenginiui. Tačiau iš šio trumpo paaiškinimo turėtumėte atimti tai, kad kuo daugiau laisvos atminties turite, tuo mažesnė tikimybė, kad kritiniai procesai bus sustabdyti."

Kaip minėjo Mishaalas, tikrosios vertės skiriasi nuo OĮG iki OĮG, todėl galite turėti skirtingą patirtį atlikdami kelias užduotis skirtinguose telefonuose su panašiomis specifikacijomis. Kitas derinio kintamasis yra įrenginyje esančios bloatware kiekis. Labai modifikuoti Android UX, tokie kaip TouchWiz, paprastai turi daug funkcijų, ne tik Android, bet ir pagal atsargas. AOSP, todėl reikia daug daugiau išteklių, kad sistema veiktų tokiu lygiu, kokio nori OĮG tai prie. Taip trečiųjų šalių programoms lieka mažiau vietos talpykloje, o tai savo ruožtu apsunkina atminties praradimą.

Daugiausia Minkštas

"Pagrindinis skirtumas tarp įrenginio su 2 GB RAM ir įrenginio su 3 GB RAM yra tas, kad įrenginys su 3 GB RAM turėtų turėti galimybę talpykloje išsaugoti daugiau procesų fone, nesuaktyvinant LMK tvarkyklės, kad ji išjungtų."

Taigi teoriškai daugiau RAM turimos aparatinės įrangos lygmenyje turėtų lemti daugiau procesų talpykloje OS lygiu ir didesnį OĮG išteklių fondą. Tačiau dažniausiai net įrenginiuose, kuriuose yra 2 GB RAM, matote daug daugiau laisvos RAM, net kai sistema ir programos užrakina tai, ko joms reikia. Čia yra ta pati Mishaalo įrašo galerija, kurioje lyginama nemokama RAM įvairiuose įrenginiuose:

Kaip matote, įrenginiuose su lengviausia vartotojo sąsaja, pvz., „Nexus 5“ ir „Nexus 6“, įrenginyje yra didžiausia laisvos RAM dalis. Net ir sunkiausias iš jų – „Samsung Galaxy Note 5“ su 4 GB RAM ir paleidžiama „TouchWiz“ turi maždaug 1,7 GB RAM, kurią galima talpinti programoms. Net ir turėdamas tokį didelį laisvos RAM telkinį, „Note 5“ kentėjo nuo kelių užduočių atlikimo problemų, kai įrenginys griebdavosi agresyvaus atminties tvarkymo. Taip buvo dėl to, kad originalios įrangos gamintojas pasirinko LMK reikšmes: daugiau RAM aparatūros lygiu nepadės! „Note 5“ pataisa, skirta pagerinti kelių užduočių atlikimą, iš tikrųjų apėmė šių LMK reikšmių pakeitimą, kad jos būtų didesnės Patogesnis atlikti daugybę užduočių nei „Samsung“ akcijų nustatymai, o tai ironiška įrenginiui, kuris sutelktas į produktyvumas. Taigi, turėdami daugiau RAM, įrenginys automatiškai nepadarys draugiškesnis kelių užduočių atlikimui.

Grįžtant prie galerijos, dalis rodomos nemokamos RAM jau naudojama programų procesų talpykloje kaupti, tačiau dalis iš tikrųjų lieka nenaudojama ir nieko nedaro. Štai keletas mano „OnePlus One“ ekrano kopijų, kuriose rodoma rodoma nemokama RAM, o tada suskirstymas į talpykloje saugomą ir neaktyvią RAM:

Net ir tada, kai man prireikė maždaug 1 sekundės, kad iškeisčiau iš aktyvaus žaidimo ir pasirinkčiau talpyklos procesų rodymo parinktį, sistema stengėsi sumažinti faktiškai naudojamą RAM. Taip atsitiko, nes žaidimo, šiuo atveju NFS No Limits, prioritetas pasikeitė, pereinant nuo priekinio plano proceso prie foninio proceso. Tai buvo daroma siekiant, kad OS nuolat veiktų sklandžiai, nes aktyviai naudojama RAM pasikeitė iš 2,5 GB į 1,9 GB, o NFS No Limits žaidimo procesas buvo talpinamas. Kadangi žaidimo prioritetas pasikeitė, dabar jį galima nužudyti, jei OS iš tikrųjų reikia daugiau laisvos RAM. Čia nereikia vartotojo sąveikos.

Šio pavyzdžio tikslas buvo pabrėžti, kaip „Android“ atminties valdymas tapo efektyvesnis nustatant sistemos ir visų jos procesų prioritetus. Yra tik tiek daug programų, kurios bet kuriuo metu liks talpykloje: idealiu atveju OS talpyklos procesuose nenaudoja visos nemokamos RAM. Dalis laisvos RAM paliekama tuščiąja eiga. Tai yra sukurta tais atvejais, kai procesui gali prireikti labai greitai padidinti RAM naudojimą.

Programų procesams taip pat yra nustatyta RAM paskirstymo riba, kurią OĮG vėlgi nustatė atskiriems telefonams. Pasak an senas diskusijos įrašas Dianne Hackborn, Android Framework Engineer, yra apribojimas Java krūva kur bus java objektai prieš pradedant šiukšlių surinkimą, tačiau net ir tai gali būti pratęsta sumaniai naudojant NDK. Paprastais žodžiais tariant, tai reiškia, kad yra didžiausia RAM riba, kurią galėjo pasiekti bet kuri programa, kuri norėjo paleisti tame įrenginyje. Senesniuose įrenginiuose ši krūva buvo nustatyta į 24 MB, tačiau naujausiuose įrenginiuose dydis buvo padidintas dėl įrenginių RAM padidėjimo ir aparatinės įrangos poreikių. Android Suderinamumo apibrėžimo dokumentas dėl Android 6.0 mini (3.7 skirsnis) minimalias vertes, kurias turėtų nustatyti OĮG. Palyginimui, mano OnePlus One CM12.1 gali pasigirti 192 MB apribojimu įprastoms Dalvik VM krūvoms ir leidžia iki 512 MB programoms, kurios programos apraše nurodo Android: largeHeap=true. Teoriškai viena programa mano įrenginyje gali naudoti tik iki 512 MB RAM. Be to, bus pradėtas šiukšlių surinkimas, kad kiti būtini sistemos procesai vyktų laisvai.

Dabar derinkite programų krūvos dydžio apribojimą su joms priskirtomis LMK reikšmėmis, atsižvelgiant į jų prioritetą ir OS primygtinai reikalauja, kad tam tikras laisvos RAM kiekis būtų neaktyvus, ir jūs galite įsivaizduoti, kaip „Android“ atlieka kelias užduotis darbai. Tai sudėtingas mechanizmas, apimantis daug kintamųjų tarp aparatinės įrangos, programinės įrangos ir pačios programos; tiksliai sureguliuoti, kad net patys paprasčiausi įrenginiai veiktų, o geriausiems flagmanams teoriškai būtų galima visiškai išnaudoti savo potencialą. Praktiškai tai nėra tobulas pasaulis, todėl nė vienas iš jų neįvyksta. Tai reiškia, kad nėra garantijos, kad įrenginys su 4 GB RAM veiks taip pat, kaip ir kitas su 4 GB RAM. Taip pat tai nereiškia, kad papildomas GB RAM viršijantis tam tikrą ribą tiesiogiai proporcingai padidins kelių užduočių atlikimą ir atminties valdymą.

Praktika ir ateitis

Taigi, grįžtant prie pradinio klausimo, ar jums tikrai reikia 6 GB RAM jūsų įrenginiuose 2016 m. pradžioje? Man atsakymas yra ne.

Dauguma mano turimų įrenginių turi 3 GB LPDDR3 RAM, o vienas turi 4 GB RAM. Ir tiesiog nėra jokio pastebimo našumo skirtumo, kai kalbama apie kelių užduočių atlikimą. Štai kelių užduočių demonstracinė versija iš mano naujausios „OnePlus X“ apžvalgos, įrenginio su 3 GB RAM ir beveik „Android“ ROM:

Įrenginyje nekilo problemų perjungiant 12 programų (13, jei skaičiuojate aktyvų ekrano įrašymo įrenginį), nereikėjo užmušti nė vienos iš šių programų. Nebuvo nei perkraunama, nei perbraižyta, o ši patirtis išlieka stebėtinai nuosekli kasdieninio naudojimo metu be jokių paleidimo iš naujo ar neautomatinio programų žudymo. Paprastam vartotojui praktiškai nereikia aktyviai perjungti šių daugybės programų!

Bet ką daryti, jei vartotojas nori perjungti šiuos daugybę žaidimų? Sutinku, kad atsirastų pirmiau minėti veiksniai, leidžiantys geriausiu atveju perjungti tik kelis žaidimus. Esant tokiai būklei, turėdamas daugiau fizinės RAM, įrenginys atmintyje galėtų pasyviai laikyti daugiau žaidimų. Tačiau šio pranašumo priešprieša yra tai, kad daugelis žaidimų dažnai persikrauna, kai atliekamos kelios užduotys! Jų tikslas yra išvengti sukčiavimo mechanizmų, kai žaidimas žaidžiamas manipuliuojant žaidimo duomenimis, todėl pakartotinis įkėlimas / sinchronizavimas / atnaujinimas verčia vėl pradėti veikti vientisumo patikrinimai. Jų ketinimai yra skirtingi, tačiau dėl to daugelis žaidimų yra prasti kandidatai, kad galėtų atlikti kelias užduotis.

Taip pat yra dar keletas veiksnių, kurie neleistų jums pasinaudoti visa ta šlovinga RAM. Jei kartu rasite užduotį / kelias užduotis, kurioms reikia visų 6 GB jūsų įrenginio LPDDR4 RAM, turėsite daug didesnę kliūtį mobiliojo SoC pavidalu. Žinoma, „Snapdragon 820“ ir „Helio X20“ gali būti pavyzdiniai atitinkamų įmonių procesoriai, tačiau jie vis tiek yra mobilieji SoC. Jie turi kitus apribojimus, tokius kaip šilumos generavimas, šilumos išsklaijimas, terminis droselis ir akumuliatorius. gyvenimą, dėl kurio jie netinkamai pasirinktų užduotis, kurios yra pakankamai intensyvios, kad galėtų naudoti tiek daug RAM ilgą laiką laikas. Tokiais atvejais geriau naudoti sistemą, kuri nėra skirta laikyti rankoje; kuri turi liberalesnius šilumos, kurią jis gali gaminti, ir energijos, kurią gali suvartoti, apribojimus.

Dienos pabaigoje, nesvarbu, kiek laisvos RAM turite, programos vis tiek bus pašalintos. Būtent taip veikia atminties valdymas. Didėjant RAM vis dar yra privalumų, pavyzdžiui, tolesnis krūvos dydžio padidinimas padės maitina bitmap išteklius didesnės raiškos ekranuose, todėl galime pasiekti daugiau nei QHD raiškos mūsų įrenginiuose. Padidėjęs krūvos dydis, kaip tendencija visoje rinkoje, paskatins programas, kurios gali siekti daugiau. Jei RAM nebus užrakinta kaip neliečiama, ji visada bus naudojama kaip nors kitaip. Tačiau atsižvelgiant į tai, kad flagmanuose ekranai svyruoja tarp 1080p ir 1440p, 4 GB galime laikyti pagrįstu standartu dar metams ar dvejiems.

Apibendrinant, turime atsakyti į klausimą: ar mes tikrai reikia tiek RAM dabar? Ne, mes ne. Įrenginiams, kurių kaina yra vienas iš mažų veiksnių, 3 GB arba 4 GB RAM būtų pakankamai geras. Flagmanams, kurių paklausa iš vartotojų, kuriems kainos nerūpi, nepakenktų ir ateityje. Kaip klientas, tiesiog atkreipkite dėmesį, kad dar nenaudosite visos tos RAM.

Ką manote apie telefonus su 6 GB RAM? Praneškite mums savo mintis toliau pateiktuose komentaruose!