Головоломка оперативної пам’яті: скільки оперативної пам’яті нам справді потрібно?

Оскільки пристрої Android починають рухатися до 6 ГБ оперативної пам’яті, ми повинні поставити собі запитання: скільки оперативної пам’яті нам справді потрібно? Слідкуйте за нашими дослідженнями!

Нещодавно ми анонсували один із перших смартфонів під управлінням Android із 6 ГБ оперативної пам’яті.

6 чортових ГБ! Це багато оперативної пам'яті в мобільному пристрої.

Розпочати гру чисел Vivo Xplay5 Elite. Vivo як компанія може бути не дуже відома за межами Китаю, але компанія, до її честі, створила кілька справді тонких смартфонів у минулому. З Xplay5 Elite вони намагалися вписати багато специфікацій у пристрій, який прагне стояти серед королів.

Vivo Xplay 5 Elite має подвійний вигнутий 5,43-дюймовий QHD Super AMOLED-дисплей на металевій рамці для корпусу. Усередині — найновіший процесор Qualcomm Snapdragon 820 з тактовою частотою 2,15 ГГц, графічний процесор Adreno 530, 6 ГБ оперативної пам’яті LPDDR4 і 128 ГБ пам’яті без можливості розширення. Що стосується камери, тильна камера Sony IMX298 на 16 МП з діафрагмою / 2.0, а передня камера на 8 МП. Зважаючи на ці характеристики та металеву конструкцію пристрою, не дивно, що він буде коштувати досить дорого навіть для китайського споживача. З ціною 4288 юанів (660 доларів) це, безумовно, китайський флагман, а не доступний смартфон середнього класу.

Vivo Xplay5 Elite – не єдиний на даний момент смартфон із 6 ГБ оперативної пам’яті. Менш відомий і нещодавно заснований китайський OEM, Vernee, прагне забезпечити більший доступ споживачів до гігантських обсягів оперативної пам’яті, випустивши пристрій середнього класу Vernee Apollo.

Vernee Apollo буде оснащено високоякісною SoC від MediaTek Helio X20. Там будуть вищезгадані 6 ГБ оперативної пам’яті, 128 ГБ внутрішньої пам’яті, 21-мегапіксельна задня камера Sony IMX230 і 5,5-дюймовий дисплей 2K. З усім цим Apollo коштував би 399,99 доларів. У прес-інформації, надісланій нам, не було згадок про ціну в Китаї чи цільові ринки, тому телефон все ще залишається таємницею.

Обидва ці телефони просять нас поставити запитання, чи не так? дійсно потрібно так багато оперативної пам'яті прямо зараз?

Щоб відповісти на це запитання, ми маємо зрозуміти, як Android керує пам’яттю та оперативною пам’яттю. Мішал виконав фантастичну роботу, пояснивши тонкощі керування пам’яттю в Android попередня стаття, який і через півроку зберігає свою актуальність.

"Android керує пам’яттю таким чином: замість негайного припинення кожного процесу після завершення його діяльності (наприклад коли ви натискаєте кнопку «Домашня сторінка», щоб вийти з програми), процес зберігається в пам’яті, доки системі не знадобиться припинити його, щоб звільнити більше пам’яті. Як система вирішує, які процеси зберегти, а які припинити? Драйвер LMK (Low Memory Killer). Кожному процесу служба ActivityManager призначає значення oom_adj у діапазоні від -17 до 15, яка динамічно регулює значення oom_adj залежно від важливості процесу. Вищі значення oom_adj означають більшу ймовірність припинення процесу для звільнення пам’яті, тоді як нижчі значення означають меншу ймовірність припинення процесу."

"Android класифікує кожен процес на п’ять категорій (передній план, видимий, службовий, фоновий і порожній), починаючи від найважливішого до найменш важливого, щоб продовжувати працювати. Процеси, що належать до кожної категорії, вимикаються на різних рівнях вільної пам’яті, що залишилася (так зване значення LMK minfree). Наприклад, якщо для мінімальних значень LMK вашого пристрою встановлено значення «2560,4090,6144,7168,8192» (указані як сторінки 4k, які можна читати з /sys/module/lowmemorykiller/parameters/minfree), тоді ваш пристрій вимикає процеси, визначені як «Порожні», коли обсяг вільної пам’яті падає нижче 32 МБ, процеси, визначені як «Фонові», коли вільної пам’яті менше 28 МБ, і активні програми, коли вільної пам’яті падає нижче 10 Мб (боронь небо!) Зараз ці значення minfree не типові для більшості пристроїв, оскільки виробники люблять налаштовувати їх на свій смак залежно від того, як вони вважають, що це найкраще підходить для їх пристрою. Але те, що ви повинні взяти з цього короткого пояснення, це те, що чим більше у вас вільної пам’яті, тим менша ймовірність того, що критичні процеси будуть припинені."

Як зазначає Мішал, фактичні значення відрізняються від OEM до OEM, тому ви можете мати різний досвід роботи з багатозадачністю на різних телефонах зі схожими характеристиками. Іншою змінною в суміші є кількість вірусів на пристрої. Сильно модифіковані Android UX, такі як TouchWiz, як правило, містять багато функцій понад Android на основі стандартних AOSP, і як такі, вимагають набагато більше ресурсів, виділених системі, щоб вона функціонувала на тому рівні, який хотів OEM це до. Це залишає менше місця для кешування додатків сторонніх розробників, що, у свою чергу, погіршує втрату пам’яті.

Переважно М'які

"Основна відмінність між пристроєм із 2 ГБ оперативної пам’яті та пристроєм із 3 ГБ оперативної пам’яті полягає в тому, що пристрій із 3 ГБ оперативної пам’яті має бути в змозі кешувати більше процесів у фоновому режимі, не запускаючи драйвер LMK для його вимкнення."

Таким чином, теоретично, більше оперативної пам’яті, доступної на апаратному рівні, має призвести до того, що більше процесів залишатиметься в кеш-пам’яті на рівні ОС і матиме більший пул для OEM-виробників. Але найчастіше навіть на пристроях із 2 ГБ оперативної пам’яті ви бачите набагато більше вільної оперативної пам’яті навіть після того, як система та програми заблокували те, що їм потрібно. Ось та сама галерея з публікації Мішала, у якій порівнюється вільна оперативна пам’ять на різних пристроях:

Як бачите, пристрої з найлегшим інтерфейсом користувача, такі як Nexus 5 і Nexus 6, мають найбільшу частку вільної оперативної пам’яті, доступної на пристрої. Навіть найважчий із них, Samsung Galaxy Note 5 із 4 ГБ оперативної пам’яті та TouchWiz для завантаження, має близько 1,7 ГБ оперативної пам’яті, яка доступна для кешування програм. Навіть з таким великим об’ємом вільної оперативної пам’яті Note 5 страждав від проблем багатозадачності, коли пристрій вдавався до агресивної обробки пам’яті. Це сталося через вибір значень LMK виробником обладнання: збільшення оперативної пам’яті на апаратному рівні не допоможе! Виправлення для Note 5 для покращення багатозадачності фактично включало налаштування цих значень LMK, щоб бути більшими зручні для багатозадачності, ніж стандартні налаштування Samsung, що дивно для пристрою, який зосереджений на продуктивність. Таким чином, просто наявність більшого обсягу оперативної пам’яті не зробить пристрій автоматично зручнішим для багатозадачності.

Знову повертаючись до галереї, частина відображеної вільної оперативної пам’яті вже використовується для кешування процесів програми, але частина цього залишається фактично неактивною, нічого не роблячи. Ось кілька знімків екрана з мого OnePlus One, на яких показано відображену вільну оперативну пам’ять, а потім поділ на кешовану та неактивну оперативну пам’ять:

Навіть у невеликому приблизно 1 секундному випадку, який знадобився мені, щоб вийти з активної гри та вибрати опцію відображення кешованих процесів, система працювала, щоб скоротити фактично використовувану оперативну пам’ять. Це сталося тому, що у грі, у цьому випадку NFS No Limits, було змінено пріоритет, перейшовши з переднього процесу на фоновий процес. Це було зроблено з метою забезпечення безперебійної роботи ОС, оскільки оперативна пам’ять під час активного використання змінилася з 2,5 ГБ до 1,9 ГБ, а процес гри NFS No Limits кешувався. Оскільки пріоритет гри змінився, її тепер можна вбити, якщо ОС дійсно потребує більше вільної оперативної пам’яті. Тут не потрібна взаємодія користувача.

Суть цього прикладу полягала в тому, щоб висвітлити, як управління пам’яттю в Android стало більш ефективним у визначенні пріоритетів системи та всіх її процесів. Існує дуже багато програм, які залишатимуться в кеш-пам’яті в будь-який час: ОС ідеально не використовує всю вільну оперативну пам’ять у процесах кешування. Частина вільної оперативної пам'яті залишається простоювати. Це розроблено для випадків, коли процесу може знадобитися дуже швидко збільшити використання оперативної пам’яті.

Існує також обмеження розподілу оперативної пам’яті для процесів додатків, як визначено OEM для окремих телефонів. Згідно з ан старе обговорення Дайан Хекборн, інженер Android Framework, існує обмеження на купа Java де розміщуватимуться об’єкти Java до початку збирання сміття, але навіть це можна розширити за допомогою розумного використання NDK. Простими словами, це означає, що існує максимальний обсяг оперативної пам’яті, доступний для будь-якої програми, яка хотіла працювати на цьому пристрої. Для старих пристроїв ця купа була встановлена ​​на 24 МБ, але на останніх пристроях розмір було збільшено завдяки збільшенню оперативної пам’яті в пристроях, а також підвищеним вимогам до обладнання. Android Документ із визначенням сумісності для Android 6.0 згадується (Розділ 3.7) мінімальні значення, які ці купи має встановити OEM. Для порівняння, мій OnePlus One на CM12.1 може похвалитися обмеженням у 192 МБ для звичайної купи віртуальних машин Dalvik і дозволяє до 512 МБ для програм, які вказують android: largeHeap=true у своєму маніфесті програми. Теоретично одна програма може використовувати лише до 512 МБ оперативної пам’яті на моєму пристрої. Крім того, буде розпочато збирання сміття, щоб забезпечити безперебійність інших необхідних системних процесів.

Тепер поєднайте обмеження розміру купи для програм із значеннями LMK, призначеними їм на основі їх пріоритету та Наполягання ОС залишати певну кількість вільної оперативної пам’яті неактивною, і ви можете собі уявити, як багатозадачність Android працює. Це складний механізм, який включає багато змінних між апаратним забезпеченням, програмним забезпеченням і самою програмою; точно налаштований, щоб дозволити навіть найпростішим пристроям функціонувати, водночас дозволяючи найкращим із флагманів використовувати абсолютну перевагу свого потенціалу, теоретично. На практиці це не ідеальний світ, тому нічого з того не відбувається. Це означає, що немає гарантії, що пристрій із 4 ГБ оперативної пам’яті працюватиме однаково з іншим із 4 ГБ оперативної пам’яті. Це також не означає, що додатковий ГБ оперативної пам’яті понад певне порогове значення дасть вам прямо пропорційне збільшення багатозадачності та використання пам’яті.

Практичність і майбутнє

Отже, повертаючись до початкового запитання, вам справді потрібні 6 ГБ оперативної пам’яті у ваших пристроях на початку 2016 року? Для мене відповідь ні.

Більшість моїх пристроїв мають 3 ГБ оперативної пам’яті LPDDR3, а один має 4 ГБ оперативної пам’яті. І просто немає помітної різниці в продуктивності, коли мова йде про багатозадачність. Ось демонстрація багатозадачності з мого нещодавнього огляду OnePlus X, пристрій із 3 ГБ оперативної пам’яті та ПЗУ Android, близьким до стандартного:

Пристрій без проблем перемикався між 12 програмами (13, якщо врахувати активний записувач екрана) без необхідності вимикати жодну з цих програм. Не було жодного перезавантаження та перемальовування, і цей досвід залишається напрочуд постійним протягом щоденного використання без будь-яких перезавантажень або ручного знищення програми. Нормальному споживачеві просто не потрібно активно перемикатися між цими багатьма програмами під час практичного використання!

Але що, якщо користувач замість цього бажає перемикатися між цими багатьма іграми? Погодьтеся, фактори, згадані вище, вступають у дію, щоб дозволити перемикатися лише між кількома іграми в кращому випадку. У таких умовах наявність більшої фізичної оперативної пам’яті дозволить пристрою пасивно зберігати більше ігор у пам’яті. Але контрапунктом цієї переваги є те, що багато ігор часто перезавантажуються при багатозадачності! Їхній намір полягає в тому, щоб уникнути шахрайських механізмів маніпулювання даними гри під час роботи гри, тому перезавантаження/повторна синхронізація/оновлення змушує перевірку цілісності знову ввійти в гру. Їхні наміри інші, але це робить багато ігор поганими кандидатами для багатозадачності.

Є ще кілька факторів, які завадять вам скористатися всією цією чудовою оперативною пам’яттю. Якщо ви все-таки знайдете завдання/декілька завдань разом, для яких потрібні всі 6 ГБ оперативної пам’яті LPDDR4 вашого пристрою, у вас буде набагато більше вузьке місце у вигляді мобільного SoC. Звичайно, Snapdragon 820 і Helio X20 можуть бути флагманськими процесорами відповідних компаній, але вони все ще є мобільними SoC. Таким чином, вони мають інші обмеження, такі як виділення тепла, розсіювання тепла, теплове регулювання та акумулятор життя, що зробило б їх поганим вибором для завдань, достатньо інтенсивних, щоб використовувати стільки оперативної пам’яті протягом тривалого періоду час. У таких випадках вам краще використовувати систему, яка не призначена для тримання в руці; той, який має більш ліберальні обмеження на тепло, яке він може генерувати, і електроенергію, яке він може споживати.

Зрештою, незалежно від того, скільки у вас вільної оперативної пам’яті, програми все одно будуть видалені. Саме так працює керування пам’яттю. Збільшення оперативної пам’яті все ще має переваги, наприклад, цьому допоможе подальше збільшення розміру купи живлення растрових ресурсів на дисплеях з вищою роздільною здатністю, що дозволяє нам вийти за межі роздільної здатності QHD на наших пристроях. Збільшення розміру купи як тенденція на ринку призведе до появи програм, які можуть прагнути зробити більше. Якщо оперативну пам’ять не заблоковано як недоторканну, їй завжди буде те чи інше застосування. Але враховуючи, що на флагманах екрани, здавалося б, коливаються між 1080p і 1440p, ми можемо розглядати 4 ГБ як розумний стандарт ще рік або два.

Як висновок, ми отримуємо відповідь на запитання: чи ми дійсно потрібно так багато оперативної пам'яті прямо зараз? Ні, не маємо. Для пристроїв, для яких низька ціна є одним із факторів, 3 або 4 ГБ оперативної пам’яті цілком підійдуть. Для флагманів, які користуються попитом з боку користувачів, які не надто дбають про ціни, не завадить перевірити їх у майбутньому. Як клієнт, просто зверніть увагу, що ви поки що не будете використовувати всю цю оперативну пам’ять.

Що ви думаєте про телефони з 6 ГБ оперативної пам’яті? Поділіться з нами своїми думками в коментарях нижче!