Тъй като устройствата с Android започват да се движат към 6 GB RAM, трябва да си зададем този въпрос: Колко RAM наистина имаме нужда? Следвайте, докато изследваме!
Наскоро бяхме почерпени с съобщения за един от първите смартфони с Android, които идват с 6GB RAM.
6 шибани GB! Това е много RAM в мобилно устройство.
Стартирането на играта с числа е Vivo Xplay5 Elite. Vivo като компания може да не е много известна извън Китай, но компанията, за нейна чест, е направила някои наистина тънки смартфони в миналото. С Xplay5 Elite те се опитаха да вместят много спецификации в устройство, което има за цел да стои сред кралете.
Vivo Xplay 5 Elite разполага с двойно извит 5,43" QHD Super AMOLED дисплей върху метална рамка за тялото. Вътре има най-новият Qualcomm Snapdragon 820 SoC с тактова честота 2,15 Ghz, графичен процесор Adreno 530, 6 GB LPDDR4 RAM и 128 GB памет без възможност за разширение. За камерата задната е 16MP Sony IMX298 сензор с f/2.0, а предната е 8MP шутър. Имайки предвид тези спецификации и металната конструкция на устройството, не трябва да е изненада, че ще струва доста дори за китайския потребител. С цена от 4288 CNY ($660), това със сигурност е китайски флагман, а не достъпен модел от среден клас.
Vivo Xplay5 Elite не е единственият смартфон в момента с 6GB RAM. По-малко известен и новооснован китайски OEM, Vernee, се стреми да осигури по-голяма достъпност на потребителите до огромни количества RAM, като пусне устройство от среден клас, Vernee Apollo.
Vernee Apollo ще дойде с високотехнологичния SoC на MediaTek, Helio X20. Ще има гореспоменатите 6GB RAM, 128GB вътрешна памет, 21MP задна камера Sony IMX230 и 5,5" 2K дисплей. С всичко това Apollo ще струва $399,99. В информацията за пресата, изпратена до нас, не се споменава цена в Китай или целеви пазари, така че телефонът все още е доста мистериозен.
И двата телефона ни молят да зададем въпроса, нали? наистина трябва толкова много RAM в момента?
За да отговорим на този въпрос, трябва да разберем как Android управлява управлението на паметта и RAM. Мишал свърши фантастична работа, като обясни тънкостите на управлението на паметта на Android предишна статия, който продължава да е актуален шест месеца по-късно.
"Начинът, по който Android се справя с управлението на паметта, е следният: вместо незабавно да убива всеки процес след като дейността му приключи (като когато натиснете бутона за начало, за да излезете от приложение), процесът се съхранява в паметта, докато системата трябва да го убие, за да освободи повече памет. Как системата решава кои процеси да запази и кои да убие? Драйверът LMK (Low Memory Killer). На всеки процес се присвоява стойност oom_adj, варираща от -17 до 15 от услугата ActivityManager, която динамично коригира стойността oom_adj в зависимост от важността на процеса. По-високите стойности на oom_adj означават, че е по-вероятно процесът да бъде убит, за да се освободи памет, докато по-ниските стойности означават, че процесът е по-малко вероятно да бъде убит."
"Android категоризира всеки процес в пет категории (преден план, видим, услуга, заден план и празен), вариращи от най-важни до най-малко важни, за да продължат да работят. Процесите, принадлежащи към всяка категория, се унищожават при различни нива на оставаща свободна памет (наречена LMK minfree стойност). Например, ако стойностите на LMK minfree на вашето устройство са зададени на „2560,4090,6144,7168,8192“ (изброени като 4k страници, които могат да бъдат прочетени от /sys/module/lowmemorykiller/parameters/minfree), тогава вашето устройство ще убие процесите, определени като „Празни“, когато свободната ви памет падне под 32 MB, процесите, определени като „Фонов“, когато свободната памет е под 28 MB, и приложенията на преден план, когато свободната памет падне под 10MB (пази небесата!) Сега тези minfree стойности не са типични за повечето устройства в наши дни, тъй като производителите обичат да ги настройват по свой вкус в зависимост от това как смятат, че най-добре подхожда на тяхното устройство. Но това, което трябва да вземете от това кратко обяснение е, че колкото повече свободна памет имате, толкова по-малка е вероятността да видите критични процеси да бъдат унищожени."
Както споменава Mishaal, действителните стойности варират от OEM до OEM, така че можете да имате различен опит с многозадачност на различни телефони с подобни спецификации. Друга променлива в микса е количеството раздут софтуер на устройството. Силно модифицираните потребителски интерфейси на Android като TouchWiz са склонни да пакетират много функции над и над Android, базирани на запасите AOSP и като такива изискват много повече ресурси, които да бъдат разпределени на системата, за да функционира на нивото, което OEM иска то да. Това оставя по-малко място за приложенията на трети страни да бъдат кеширани, което от своя страна влошава ниската памет.
Най-вече Мек
"Основната разлика между устройство с 2GB RAM и устройство с 3GB RAM е, че устройството с 3GB от RAM трябва да може да кешира повече процеси във фонов режим, без да задейства LMK драйвера, за да го убие."
Така че теоретично, повече RAM налична на хардуерно ниво трябва да доведе до повече процеси, които остават кеширани на ниво ОС и по-голям пул, от който OEM да участва. Но по-често дори на устройства с 2 GB RAM виждате много повече свободна RAM дори след като системата и приложенията са заключили това, от което се нуждаят. Ето същата галерия от публикацията на Mishaal, сравняваща свободната RAM на различни устройства:
Както можете да видите, устройствата с най-леките потребителски интерфейси, като Nexus 5 и Nexus 6, имат най-голямата част от свободната RAM налична на устройството. Дори най-тежкият от всички, Samsung Galaxy Note 5 с 4 GB RAM и TouchWiz за зареждане, има около 1,7 GB RAM, която е налична за кеширане на приложения. Дори и с такъв голям набор от свободна RAM памет, Note 5 страдаше от проблеми с многозадачността, при които устройството прибягваше до агресивно боравене с паметта. Това се дължи на избора на OEM на LMK стойности: изпомпването на повече RAM на хардуерно ниво няма да помогне! Корекцията за Note 5 за подобряване на многозадачността всъщност включваше настройване на тези LMK стойности, за да бъдат по- удобни за многозадачност от стандартните настройки на Samsung, което е иронично за устройство, което се фокусира върху производителност. Като такова, просто наличието на повече RAM няма автоматично да направи устройството по-удобно за многозадачност.
Връщайки се отново към галерията, част от показаната безплатна RAM вече се използва за кеширане на процеси на приложения, но част от това остава всъщност неактивна, без да прави нищо. Ето някои екранни снимки от моя OnePlus One, показващи показаната свободна RAM и след това разпадането на кеширана RAM и неактивна RAM:
Дори в малкия случай от ~1 секунда, който ми отне да изляза от активна игра и да избера опцията за показване на кеширани процеси, системата работеше, за да намали реално използваната RAM. Това се случи, защото играта, NFS No Limits в този случай, имаше промяна в приоритета, преминавайки от процес на преден план към процес на заден план. Това беше направено с оглед поддържане на безпроблемното протичане на операционната система през цялото време, тъй като RAM при активно използване се промени от 2,5 GB на 1,9 GB, докато процесът на играта NFS No Limits беше кеширан. Тъй като играта промени приоритета си, тя вече може да бъде убита, ако операционната система действително се нуждае от повече свободна RAM. Тук не се изисква взаимодействие с потребителя.
Целта на този пример беше да подчертае как управлението на паметта на Android се е развило, за да бъде по-ефективно при приоритизирането на системата и всички нейни процеси. Има толкова много приложения, които ще останат кеширани по всяко време: операционната система в идеалния случай не използва цялата свободна RAM в процесите на кеширане. Част от свободната RAM памет се оставя да не работи. Това е предвидено за случаите, когато даден процес може да се наложи да увеличи мащаба на използването на RAM много бързо.
Има ограничение за разпределение на RAM и за процесите на приложения, както е определено от OEM отново за отделни телефони. Според ан стара дискусионна публикация от Даян Хакборн, инженер на Android Framework, има ограничение за Java купчина където java обектите ще се намират преди да започне събирането на боклука, но дори това може да бъде разширено с умно използване на NDK. С прости думи, това означава, че има максимално ограничение на RAM, което е достъпно за всяко приложение, което иска да работи на това устройство. За по-стари устройства тази купчина беше зададена на 24 MB, но на последните устройства размерът беше увеличен благодарение на увеличаването на RAM в устройствата, както и увеличените изисквания към хардуера. на Android Документ за дефиниция на съвместимост за Android 6.0 споменава (раздел 3.7) минималните стойности, които тези купчини трябва да бъдат зададени от OEM. За сравнение, моят OnePlus One на CM12.1 може да се похвали с ограничение от 192MB за нормални Dalvik VM купчини и позволява до 512MB за приложения, които посочват android: largeHeap=true в своя манифест на приложението. Теоретично едно приложение може да използва само до 512 MB RAM на моето устройство. Освен това ще бъде инициирано събиране на боклук, за да се поддържа свободното протичане на другите необходими системни процеси.
Сега комбинирайте ограничението за размер на купчина за приложения със стойности на LMK, присвоени им въз основа на техния приоритет и Настояването на операционната система да поддържа определено количество свободна RAM неактивна и можете да си представите как многозадачността на Android върши работа. Това е сложен механизъм, който включва много променливи между хардуера, софтуера и самото приложение; фино настроен, за да позволи дори на най-основните устройства да функционират, като същевременно позволява на най-добрите флагмани да се възползват от потенциала си, теоретично. На практика това не е идеален свят, така че нито едно от двете не се случва. Това означава, че няма гаранция, че устройство с 4 GB RAM ще работи еднакво с друго с 4 GB RAM. Нито пък означава, че допълнителен GB RAM над определен праг ще ви даде пряко пропорционално увеличение на многозадачността и обработката на паметта.
Практичното и бъдещето
И така, връщайки се към първоначалния въпрос, наистина ли се нуждаете от 6GB RAM във вашите устройства в началото на 2016 г.? За мен отговорът е не.
Повечето устройства, които притежавам, имат 3 GB LPDDR3 RAM, а едно има 4 GB RAM. И просто няма забележима разлика в производителността, когато става въпрос за многозадачност. Ето демонстрация на многозадачност от скорошния ми преглед на OnePlus X, устройство с 3 GB RAM и близък до стандартния Android ROM:
Устройството няма проблеми с превключването между 12 приложения (13, ако броите активния запис на екрана), без да се налага да убивате някое от тези приложения. Нямаше презареждане и преначертаване и това изживяване остава изненадващо последователно при ежедневна употреба без рестартиране или ръчно убиване на приложения. Нормалният потребител просто няма нужда активно да превключва между тези много приложения по време на практическа употреба!
Но какво ще стане, ако вместо това потребителят желае да превключва между тези много игри? Съгласен съм, факторите, споменати по-горе, ще влязат в действие, за да позволят превключване между само няколко игри в най-добрия случай. В такова състояние наличието на повече физическа RAM ще позволи на устройството да държи повече игри пасивно в паметта. Но контрапункт на това предимство е, че много игри често правят принудително презареждане при многозадачност! Тяхното намерение е да избегнат механизмите за измама да манипулират данните на играта, докато играта работи, така че презареждане/ресинхронизиране/опресняване принуждава проверките за цялост да влязат в игра отново. Тяхното намерение е различно, но това прави много игри лоши кандидати за многозадачност.
Има още някои фактори, които биха ви попречили да се възползвате от цялата тази великолепна RAM. Ако намерите задача/няколко задачи, комбинирани, които изискват всичките 6 GB LPDDR4 RAM на вашето устройство, ще имате много по-голямо затруднение под формата на мобилния SoC. Разбира се, Snapdragon 820 и Helio X20 може да са водещите процесори на съответните им компании, но те все още са мобилни SoC. Като такива, те имат други ограничения като генериране на топлина, разсейване на топлина, термично дроселиране и батерия живот, което би ги направило лош избор за задачи, достатъчно интензивни, за да използват толкова много RAM за продължителен период от време. В такива случаи е по-добре да използвате система, която не е предназначена за държане в ръка; такъв, който има по-либерални ограничения за топлината, която може да генерира, и мощността, която може да консумира.
В края на деня, без значение колко свободна RAM памет имате, приложенията пак ще бъдат изхвърлени. Точно така работи управлението на паметта. Все още има предимства за увеличаване на RAM, като по-нататъшното увеличаване на размера на купчината ще помогне захранване на растерни активи на дисплеи с по-висока разделителна способност, което ни позволява да надхвърлим QHD резолюциите на нашите устройства. Увеличеният размер на купчината като тенденция на целия пазар ще доведе до приложения, които могат да се стремят да правят повече. Освен ако RAM паметта не е заключена като недосегаема, винаги ще има някаква или друга употреба за нея. Но като се има предвид, че екраните привидно се движат между 1080p и 1440p на водещите кораби, може да видим 4GB като разумен стандарт за още година или две.
Като заключение трябва да отговорим на въпроса: дали наистина трябва толкова много RAM в момента? Не, не го правим. За устройства, чиято цена е един от факторите, които трябва да поддържат ниски, 3 GB или 4 GB RAM ще им служат достатъчно добре. За флагмани с търсене от потребители, които не се интересуват толкова от цените, няма да навреди на бъдещото доказателство. Като клиент, просто имайте предвид, че все още няма да използвате цялата тази RAM.
Какво мислите за телефоните с 6 GB RAM? Кажете ни вашите мисли в коментарите по-долу!