RAM-ongelma: kuinka paljon RAM-muistia todella tarvitsemme?

Kun Android-laitteet alkavat siirtyä kohti 6 Gt RAM-muistia, meidän on kysyttävä itseltämme seuraava kysymys: Kuinka paljon RAM-muistia todella tarvitsemme? Seuraa, kun tutkimme!

Äskettäin saimme tiedon yhdestä ensimmäisistä Android-älypuhelimista, joissa on 6 Gt RAM-muistia.

6 hemmetin gigatavua! Se on paljon RAM-muistia mobiililaitteessa.

Numeropelin käynnistäminen on Vivo Xplay5 Elite. Vivo yrityksenä ei ehkä ole kovin tunnettu Kiinan ulkopuolella, mutta yritys on ansiokkaasti tehnyt todella ohuita älypuhelimia aiemmin. Xplay5 Eliten avulla he yrittivät sopia moniin teknisiin ominaisuuksiin laitteeseen, joka pyrkii seisomaan kuninkaiden joukossa.

Vivo Xplay 5 Elite sisältää kaksoiskaareva 5,43 tuuman QHD Super AMOLED -näyttö rungon metallikehyksessä. Sisällä on uusin Qualcomm Snapdragon 820 SoC, jonka kellotaajuus on 2,15 GHz, Adreno 530 GPU, 6 Gt LPDDR4 RAM -muistia ja 128 Gt ei-laajennettavaa tallennustilaa. Kameran takaosassa on 16 megapikselin Sony IMX298 -kenno f/2.0:lla ja edessä 8 megapikselin ampuja. Nämä tekniset tiedot ja laitteen metallisen rakenteen huomioon ottaen ei pitäisi olla yllätys, että se maksaisi melko paljon jopa kiinalaiselle kuluttajalle. Hintalappu on 4 288 CNY (660 dollaria), joten tämä on varmasti kiinalainen lippulaiva eikä edullinen keskiluokkainen.

Vivo Xplay5 Elite ei ole tällä hetkellä ainoa älypuhelin, jossa on 6 Gt RAM-muistia. Vähemmän tunnettu ja äskettäin perustettu kiinalainen OEM, Vernee, pyrkii parantamaan kuluttajien saatavuutta valtavaan määrään RAM-muistia tuomalla markkinoille keskihintaisen laitteen, Vernee Apollon.

Vernee Apollossa on MediaTekin huippuluokan SoC, Helio X20. Mukana on edellä mainittu 6 Gt RAM-muistia, 128 Gt sisäistä tallennustilaa, 21 megapikselin Sony IMX230 -takakamera ja 5,5 tuuman 2K-näyttö. Kaiken tämän kanssa Apollo maksaisi 399,99 dollaria. Meille lähetetyissä lehdistötiedoissa ei ollut mainintaa Kiinan hinnasta tai kohdemarkkinoista, joten puhelin on edelleen melkoinen mysteeri.

Molemmat puhelimet pyytävät meitä kysymään, teemmekö todella tarvitsee paljonko RAM-muistia nyt?

Vastataksemme tähän kysymykseen meidän on ymmärrettävä, kuinka Android käsittelee muistin hallintaa ja RAM-muistia. Mishaal teki loistavaa työtä selittääkseen Androidin muistinhallinnan monimutkaisuudet edellinen artikkeli, joka säilyttää edelleen merkityksensä kuuden kuukauden kuluttua.

"Tapa, jolla Android käsittelee muistinhallintaa, on näin: sen sijaan, että lopettaisi jokaisen prosessin välittömästi sen toiminnan päätyttyä (kuten kun painat kotipainiketta poistuaksesi sovelluksesta), prosessi säilyy muistissa, kunnes järjestelmän on lopetettava se vapauttaakseen lisää muistia. Kuinka järjestelmä päättää, mitkä prosessit säilyttää ja mitkä tappaa? LMK (Low Memory Killer) -ohjain. ActivityManager-palvelu määrittää jokaiselle prosessille oom_adj-arvon, joka vaihtelee -17:stä 15:een, joka säätää oom_adj-arvoa dynaamisesti prosessin tärkeyden mukaan. Suuremmat oom_adj-arvot tarkoittavat, että prosessi lopetetaan todennäköisemmin muistin vapauttamiseksi, kun taas pienemmät arvot tarkoittavat, että prosessi lopetetaan todennäköisemmin."

"Android luokittelee jokaisen prosessin viiteen luokkaan (etualalla, näkyvällä, palvelulla, taustalla ja tyhjällä), jotka vaihtelevat tärkeimmistä ja vähiten tärkeistä toiminnan jatkamiseksi. Kuhunkin luokkaan kuuluvat prosessit kuolevat eri tasoilla jäljellä olevaa vapaata muistia (jota kutsutaan LMK minfree -arvoksi). Jos laitteesi LMK minfree -arvot ovat esimerkiksi "2560,4090,6144,7168,8192" (4k-sivuina, jotka voidaan lukea hakemistosta /sys/module/lowmemorykiller/parameters/minfree), laitteesi lopettaa tyhjiksi määritellyt prosessit, kun vapaan muistin määrä laskee alle 32 megatavun, taustalla määritetyt prosessit, kun vapaata muistia on alle 28 megatavua, ja etualan sovellukset, kun vapaan muistin määrä laskee alle 10 Mt (taivas varjelkoon!) Nämä minfree-arvot eivät ole tyypillisiä useimmille laitteille nykyään, koska valmistajat rakastavat muokata niitä mielensä mukaan riippuen siitä, miten se heidän mielestään parhaiten sopii laitteelleen. Mutta mitä sinun pitäisi ottaa pois tästä lyhyestä selityksestä, on se, että mitä enemmän vapaata muistia sinulla on, sitä vähemmän todennäköisesti näet kriittisten prosessien katkeavan."

Kuten Mishaal mainitsee, todelliset arvot vaihtelevat OEM: stä toiseen, joten sinulla voi olla erilaisia ​​kokemuksia useista eri puhelimista, joilla on samanlaiset tekniset tiedot. Toinen muuttuja sekoituksessa on bloatwaren määrä laitteessa. Voimakkaasti muokatut Android-käyttöliittymät, kuten TouchWiz, sisältävät yleensä paljon ominaisuuksia Androidin lisäksi varaston perusteella. AOSP ja sellaisenaan vaativat paljon enemmän resursseja, jotta järjestelmä voi toimia OEM: n haluamalla tasolla sen. Tämä jättää vähemmän tilaa kolmannen osapuolen sovelluksille välimuistiin, mikä puolestaan ​​pahentaa muistin vähenemistä.

Enimmäkseen Pehmeä

"Suurin ero 2 Gt RAM-muistin laitteen ja 3 Gt RAM: n laitteen välillä on, että laite, jossa on 3 Gt RAM-muistia RAM-muistin pitäisi pystyä tallentamaan enemmän prosesseja välimuistiin taustalla ilman, että LMK-ohjain sammuttaa sen."

Joten teoriassa laitteistotasolla käytettävissä olevan RAM-muistin määrän pitäisi johtaa siihen, että käyttöjärjestelmätasolla jää enemmän prosesseja välimuistiin ja OEM-valmistajilla on suurempi pooli. Mutta useimmiten jopa laitteissa, joissa on 2 Gt RAM-muistia, näet paljon enemmän vapaata RAM-muistia, vaikka järjestelmä ja sovellukset ovat lukittuneet tarvitsemaansa. Tässä on sama galleria Mishaalin viestistä, jossa vertaillaan ilmaista RAM-muistia eri laitteissa:

Kuten näet, laitteilla, joissa on kevyin käyttöliittymä, kuten Nexus 5 ja Nexus 6, on suurin osa laitteissa käytettävissä olevasta vapaasta RAM-muistista. Jopa raskaimmassa, Samsung Galaxy Note 5:ssä, jossa on 4 Gt RAM-muistia ja TouchWiz käynnistyy, on noin 1,7 Gt RAM-muistia, joka on käytettävissä sovellusten välimuistiin. Jopa näin suurella vapaalla RAM-muistilla, Note 5 kärsi moniajo-ongelmista, joissa laite turvautui aggressiiviseen muistinkäsittelyyn. Tämä johtui OEM: n LMK-arvojen valinnasta: RAM-muistin lisääminen laitteistotasolla ei auta! Note 5:n korjaus moniajon parantamiseksi sisälsi itse asiassa näiden LMK-arvojen säätämisen enemmän moniajoystävällisempi kuin Samsungin osakeasetukset, mikä on ironista laitteelle, joka keskittyy tuottavuutta. Sellaisenaan pelkkä RAM-muistin lisääminen ei tee laitteesta automaattisesti moniajoystävällisempää.

Palatakseni galleriaan, osa näytetystä ilmaisesta RAM-muistista on jo käytetty sovellusprosessien välimuistiin, mutta osa tästä jää itse asiassa käyttämättömäksi tekemättä mitään. Tässä on joitain kuvakaappauksia OnePlus One -sovelluksestani, joissa näkyy näytetty vapaa RAM-muisti ja sen jälkeen jako välimuistiin ja käyttämättömään RAM-muistiin:

Jopa siinä pienessä noin 1 sekunnissa, jolloin vaihdoin pois aktiivisesta pelistä ja valitsin välimuistissa olevien prosessien näyttämisvaihtoehdon, järjestelmä leikkasi todellisen käytetyn RAM-muistin. Tämä tapahtui, koska pelin, tässä tapauksessa NFS No Limits, prioriteetti muuttui ja siirtyi etualan prosessista taustaprosessiin. Tämä tehtiin, jotta käyttöjärjestelmä toimisi aina sujuvasti, sillä aktiivisessa käytössä oleva RAM-muisti vaihtui 2,5 Gt: sta 1,9 Gt: iin samalla, kun NFS No Limits -peliprosessi oli välimuistissa. Kun pelin prioriteetti muuttui, se on nyt tapettavissa, jos käyttöjärjestelmä todella tarvitsee enemmän vapaata RAM-muistia. Tässä ei tarvita käyttäjän toimia.

Tämän esimerkin tarkoituksena oli korostaa, kuinka Androidin muistinhallinta on kehittynyt tehokkaammaksi priorisoimaan järjestelmää ja kaikkia sen prosesseja. On vain niin paljon sovelluksia, jotka pysyvät välimuistissa milloin tahansa: käyttöjärjestelmä ei ihannetapauksessa käytä koko vapaata RAM-muistia välimuistiprosesseissa. Osa vapaasta RAM-muistista jätetään käyttämättä. Tämä on suunniteltu tilanteisiin, joissa prosessi saattaa joutua lisäämään RAM-käyttöään hyvin nopeasti.

Sovellusprosesseille on myös RAM-varausraja, jonka OEM on jälleen määrittänyt yksittäisille puhelimille. Mukaan an vanha keskusteluviesti Dianne Hackborn, Android Framework Engineer, on raja Java-kasa jossa java-objektit sijaitsevat ennen roskien keräämisen aloittamista, mutta jopa sitä voidaan laajentaa NDK: n älykkäällä käytöllä. Yksinkertaisesti sanottuna tämä tarkoittaa, että RAM-muistilla on enimmäisraja, joka oli kaikkien sovelluksen käytettävissä, joka halusi toimia kyseisellä laitteella. Vanhemmille laitteille tämä kasa asetettiin 24 megatavuun, mutta viimeaikaisissa laitteissa kokoa on kasvatettu laitteiden lisääntyneen RAM-muistin ja lisääntyneiden laitteistovaatimusten ansiosta. Androidin Yhteensopivuusmääritelmäasiakirja varten Android 6.0 mainitsee (kohta 3.7) vähimmäisarvot, jotka OEM: n tulee asettaa näille pinoille. Vertailun vuoksi: OnePlus One CM12.1:ssä on 192 Mt: n rajoitus tavallisille Dalvik VM -kekoille ja sallii jopa 512 Mt sovelluksille, jotka määrittävät Androidin: largeHeap=true sovellusluettelossaan. Teoriassa yksi sovellus voi käyttää vain enintään 512 Mt RAM-muistia laitteeltani. Tämän lisäksi käynnistetään roskien kerääminen, jotta muut tarvittavat järjestelmäprosessit pysyvät vapaana.

Yhdistä nyt sovellusten keon kokorajoitus niille määritettyihin LMK-arvoihin niiden prioriteetin ja Käyttöjärjestelmän vaatimus pitää tietyn määrän ilmaista RAM-muistia käyttämättömänä, ja voit kuvitella kuinka Androidin moniajo toimii. Se on monimutkainen mekanismi, joka sisältää paljon muuttujia laitteiston, ohjelmiston ja itse sovelluksen välillä. hienosäädetty mahdollistamaan peruslaitteiden toiminnan, samalla kun lippulaivoista parhaat voivat hyödyntää potentiaaliaan täysin teoreettisesti. Käytännössä tämä ei ole täydellinen maailma, joten kumpaakaan näistä ei tapahdu. Tämä tarkoittaa, että ei ole takeita siitä, että 4 Gt RAM-muistilla varustettu laite toimii yhtä hyvin kuin toinen 4 Gt RAM-muistilla varustettu laite. Se ei myöskään tarkoita, että ylimääräinen gigatavu RAM-muistia tietyn kynnyksen yli lisää suoraan verrannollisesti moniajoa ja muistin käsittelyä.

Käytännön ja tulevaisuuden

Palatakseni siis alkuperäiseen kysymykseen, Tarvitsetko todella 6 Gt RAM-muistia laitteisiisi vuoden 2016 alussa? Minulle vastaus on ei.

Suurimmassa osassa omistamistani laitteista on 3 Gt LPDDR3 RAM-muistia ja yhdessä 4 Gt RAM-muistia. Eikä yksinkertaisesti ole havaittavaa eroa suorituskyvyssä moniajossa. Tässä on moniajodemo tuoreesta OnePlus X -arvostelustani, laitteesta, jossa on 3 Gt RAM-muistia ja lähes varastossa oleva Android ROM:

Laitteessa ei ollut ongelmia vaihtaa 12 sovelluksen välillä (13, jos lasket aktiivisen näytön tallentimen) ilman, että mitään näistä sovelluksista tarvitsisi tappaa. Uudelleenlatausta tai uudelleenpiirtämistä ei tapahtunut, ja tämä kokemus pysyy yllättävän yhtenäisenä koko päivittäisen käytön ajan ilman uudelleenkäynnistystä tai manuaalista sovellusten tappamista. Tavallisen kuluttajan ei yksinkertaisesti tarvitse vaihtaa aktiivisesti näiden monien sovellusten välillä käytännön käytön aikana!

Mutta entä jos käyttäjä haluaa vaihtaa näiden useiden pelien välillä? Samaa mieltä, yllä mainitut tekijät tulisivat voimaan, mikä mahdollistaisi parhaimmillaankin vaihtamisen vain muutaman pelin välillä. Tällaisessa tilanteessa enemmän fyysistä RAM-muistia antaisi laitteen säilyttää enemmän pelejä passiivisesti muistissa. Mutta vastakohta tälle edulle on se, että monet pelit usein lataavat itsensä uudelleen moniajossa! Heidän tarkoituksenaan on välttää huijausmekanismeja manipuloimasta pelitietoja pelin ollessa käynnissä, joten uudelleenlataus/uudelleensynkronointi/päivitys pakottaa eheystarkistukset ottamaan uudelleen käyttöön. Heidän tarkoituksensa on erilainen, mutta tämä tekee monista peleistä huonoja ehdokkaita moniajoille.

On myös muita tekijöitä, jotka estäisivät sinua hyödyntämästä kaikkea tätä loistavaa RAM-muistia. Jos löydät tehtävän/useita tehtäviä yhdistettynä, jotka vaativat kaikki 6 Gt laitteesi LPDDR4-RAM-muistia, sinulla on paljon suurempi pullonkaula mobiilin SoC: n muodossa. Myönnettäköön, että Snapdragon 820 ja Helio X20 voivat olla vastaavien yritystensä lippulaivaprosessoreja, mutta ne ovat silti mobiilin SoC: n. Sellaisenaan niillä on muita rajoituksia, kuten lämmöntuotto, lämmönpoisto, lämpökuristin ja akku elämä, mikä tekisi heistä huonoja valintoja tehtäviin, jotka ovat tarpeeksi intensiivisiä käyttääkseen niin paljon RAM-muistia pitkään aika. Tällaisissa tapauksissa sinun on parempi käyttää järjestelmää, jota ei ole tarkoitus pitää kädessäsi; sellainen, jolla on vapaammat rajoitukset sen tuottamalle lämmölle ja sen kuluttamalle sähkölle.

Loppujen lopuksi sovellukset poistetaan käytöstä riippumatta siitä, kuinka paljon vapaata RAM-muistia sinulla on. Juuri näin muistinhallinta toimii. RAM-muistin lisäämisessä on edelleen etuja, kuten kasan koon lisääminen edelleen auttaa bittikarttaresurssien tehostamiseen korkeamman resoluution näytöillä, jolloin voimme ylittää laitteidemme QHD-resoluutiot. Kasvava kasan koko trendinä kaikkialla markkinoilla johtaa sovelluksiin, jotka voivat tehdä enemmän. Ellei RAM-muistia ole lukittu koskemattomaksi, sille on aina jotain käyttöä. Mutta kun otetaan huomioon, että näytöt näyttävät leijuvan lippulaivoissa 1080p ja 1440p välillä, saatamme nähdä 4 Gt: n kohtuullisena standardina vielä vuodeksi tai kahdeksi.

Johtopäätöksenä saamme vastata kysymykseen: teemmekö todella tarvitsee paljonko RAM-muistia nyt? Ei, emme. Laitteille, joiden hinta on yksi niistä tekijöistä, jotka niiden täytyy pitää alhaisena, 3 Gt tai 4 Gt RAM-muistia palvelisi niitä tarpeeksi hyvin. Lippulaivoille, joilla on kysyntää käyttäjiltä, ​​jotka eivät välitä hinnoista niin paljoa, ei haittaisi tulevaisuutta. Asiakkaana huomaa vain, että et käytä kaikkea RAM-muistia vielä.

Mitä mieltä olet puhelimista, joissa on 6 Gt RAM-muistia? Kerro meille mielipiteesi alla olevissa kommenteissa!