Не так давно, когда трава еще была зеленной, а по земле ходили динозавры, возможность приостановить воспроизведение музыки и принять звонок, а после возвратиться к прослушиванию и продолжить с того же места вызывала у нас восторг. А про такие вещи, как количество ОЗУ или вообще ее наличие, задумывались единицы. Но раньше и электричества не было, а строительство железных дорог вовсе приводило людей (а особенно кучеров) в недоумение. С развитием технологий возрастали потребности человека, и наш карманный помощник не стал исключением.
Несколькими неделями ранее появилась информация о двух смартфонах от китайских компаний-производителей, LeEco и Oppo, с восемью гигабайтами оперативной памяти на борту. В прошлый раз мы рассмотрели вопрос надобности многоядерности, а Сергей написал статью-размышление, тему которой я разберу более подробно.
Быстродействие и плавность работы смартфона зависят от нескольких составляющих, наиболее важные из которых – это процессор, видеоускоритель, ОС и ее оптимизация, а также оперативная память. Именно о последней сегодня и пойдет речь.
Оперативная память в смартфоне, как и в компьютере, буферная, иначе говоря, используется для непродолжительного хранения данных, обеспечивая функционирование программного обеспечения. В отличие от постоянной – энергозависима и более быстрая. Является важной составляющей аппаратной экосистемы, работая в паре с другими компонентами, расположенными на SoC. Оперативную память можно по праву считать следующим после процессора залогом быстродействия. Именно этот фактор и является основной причиной их тесного взаимодействия.
Обычно обмен данными между ЦП и ОЗУ происходит при участии кэш-памяти. Кэш-память является неким посредником между этими компонентами. Подкачивая из оперативки в процессор данные и выстраивая приоритетность, она возвращает их обратно ОЗУ, но уже в модифицированном виде. В действительности все не так уж сложно.
Оперативную память можно разбить на несколько секций: системная, пользовательская и доступная.
Если взглянуть на историю развития ОЗУ, можно предположить, что главным девизом производителей было, есть и будет:
Больше, лучше, быстрее.
Перефразируя: “количество, качество, скорость”. И такая тенденция не может не радовать. Впрочем, и здесь есть свои особенности.
Увеличение количества ОЗУ взаимосвязано с автономностью устройства. К сожалению, в конкретном примере это является проблемой. И связано с тем, что приложениям доступно больше памяти, соответветственно увеличивается количество фоновых процессов. Каждое действие приводит к последствию. В нашем случае увеличение этих процессов пагубно сказывается не только на продолжительности работы аккумулятора, но и скорости работы.
Android. Начнем с того, что сама по себе ОС – урезанная и модифицированная версия Linux. Если представить систему в виде архитектурных строений, то над уровнем Linux стоит уровень инфраструктуры приложений, который содержит виртуальную машину, программное API, расширения и тому подобного. Здесь используется метод компиляции программного в байт-код, после – преобразование результата в DEX-файл, содержащийся в APK-архиве приложения. Эти файлы в свою очередь использует Dalvik (виртуальная Java машина). Позже заменен на ART.
Ключевым отличием ART от Dalvik является способ компиляции приложений. Dalvik делает это во время их запуска, то есть в режиме реального времени, что в свою очередь сильно нагружает процессор. С приходом ART разработчики поставили цель исправить эту и ещё некоторые веские проблемы, изменив концепцию реализации. ART преобразовывает код единожды, при установке приложения. Следовательно, последующий запуск приложений осуществляется значительно быстрее. По крайней мере, таковым был замысел обновления, но реальные тесты демонстрируют иную картину. А вот с увеличением размера приложения, за счет чего концептуально и должна ускориться загрузка и воспроизведение, они справились на “отлично”.
Также ART имеет непосредственное отношение и к ОЗУ. Учитывая вышеописанные изменения, преобразованный ранее код ускоряет процесс загрузки в первую очередь из-за незначительного потребления ОЗУ. И в тот же момент производители продолжают наращивать ее количество.
Золотое правило “не количеством, а качеством” применимо и здесь. Более новый тип ОЗУ, например LPDDR4 с 2 ГБ памяти проявит себя гораздо лучше (в плане быстродействия), нежели LPDDR3 с 4 ГБ. Все дело в использовании более новых технологий, включая отличную частоту шины, уменьшение техпроцесса и тому подобного, что и позволяет достигать увеличения скорости и плавности работы по сравнению с более емкими, но старыми аналогами. Однако главным фактором продолжения гонки ОЗУ можно считать переход на 64-bit версию, что позволило переступить ограничение в 4 ГБ. Сейчас в зависимости от системы этот показатель множится на двузначные, а то и гораздо большие цифры.
Достаточно нескольких слов: “Много оперативки не бывает”. По крайней мере, так считает большинство. С ними тяжело не согласиться, если не учитывать несколько важных факторов. Первый и самый главный – автономность. Второй – безответственность разработчиков. Теперь появилась ещё одна причина — “взападло” оптимизации. “А зачем?” – спрашивают они. Ведь со временем количество оперативной памяти только множится, соответственно, совершенствуется режим многозадачности и увеличивается объем фоновых процессов. Сейчас можно и не утруждать себя подобными вещами. Однако пользователи думают иначе. И проблема несовместимости – это проблема оптимизации. Но кроме пользователя это не интересно никому. Ни производителю, ни разработчикам. Утрирую, конечно, всегда есть исключение. Впрочем “правило большинства” также повсеместно. Их тоже можно понять. Фишка с флагманскими устройствами со временем нашла отклик в душе даже самых ярых хейтеров. Так зачем останавливать конвейер? Всё, что нужно теперь, – время от времени подкидывать дрова и собирать плоды.
А что же насчет ОЗУ? Ответ на главный, количественный, вопрос – архитектура системы и оптимизация приложений. Это определяющие факторы надобности. На сегодняшний день оптимальным вариантом является 3-4 ГБ четвертого класса.
Хоч я не програміст але скажу таку річ:
Сучасна ОС це надбудова над браузером.
А сучасний браузер … це ХРОМ.
Хром як монополіст вводить нові стандарти і при відсутності конкуренції ці стандарти не досить … якісні і продумані.
Ось наприклад опера 12 вимагала з 20 відкритими вікнами 600-800 мгбайт. а хром з цим ж набором вимагатиме 2 і більше гб.
Також прошу звернути увагу на те що колись було достатньо пентіум 3 і 512 мб озу. для того щоб сидіти в інтернеті.
Зараз ж на цій конфігурації … сидіти нереально. Та навіть на пентіум4ому нереально сидіти з 1 гігом озп.
Сучасні вебстандарти навязані нам гуглом і є причиною ненаситності наших компютерів ноутбуків і … мобілок.
Бред, ОС это не надстройка над браузером.
Може я й дурницю скажу, бо я не програміст, але мені здається що справа в різному “Залізі” Манюсінькі процесори смартів ніби й 8-ядерні, але чомусь не дотягують до 2-ядерних компівських. 12-мегапіксельна камера смарта не малює так як 8-мегапіксельна в цифровику з нормальною оптикою…
2 ГБ в компе давно мало, неверно.
Так почему же смартфону нужно больше оперативки чем компу?
В смартфона 3 ГБ, в компе 8.
Спасибо, работаем над этим)
Как-то не до конца работаете, Денис )) Вот наугад взял фразу про память и проверил – ведь так и осталось все в тексте. Видимо, вы меня не совсем поняли, да? А ведь она звучать должна примерно так:
Более новый тип ОЗУ: например, устройство, оснащенное 2 ГБ LPDDR4 памяти проявит себя гораздо лучше (в плане быстродействия), нежели имеющее 4 ГБ, но LPDDR3.
Не так давно – это во времена Siemens C25? Потому что в моей Nokia 6233 (а это 2007-й год) это уже было нормой и никакого восторга не вызывало.
Вообще, тема не раскрыта. Я думал, будут какие-то тесты. А тут по теме только последнее предложение, и то со взятыми “с потолка” цифрами.
Вот и я часто думаю об этом: почему на моем стареньком ноутбуке 2 Гб ОЗУ и на нем отлично работает полноценный настольный Debian, а на новом смартфоне жены 4 Гб и Android, где в лучшем случае одновременно можно “нормально” работать в пару приложениях, но зато красивая и плавная анимация? И мое мнение: во всем виноваты пользователи, не желающие разбираться в устройстве ОС (это нормально для мобильных устройств, но не десктопов), и студенты-разработчики, прочитавшие две книги по Java, решившие что теперь они могут создать свое приложение (лишь бы работало) и зарабатывать на на нем миллионы. Кроме того, самим разработчикам ОС для “домохозяек” приходится подставлять различные костыли, жрущие ресурсы, дабы система была как можно проще и дружелюбнее к ним. Так, тот же настроенный Debian XFCE потребляет в простое 360 Мб, Ubuntu – “самый простой в освоении Linux” ест уже под 500 Мб, Win 10 и того больше (точно не скажу, нет под рукой). Вот и получается – красивая анимация в ущерб оптимизации. А что, всегда ведь можно впихнуть еще больше ОЗУ. А правильно ли это?
З приводу студентів… Ось цікаво як часто ви чи ваша дружина запускає проги no-name написані студентами-початківцями? Давайте будемо чесними – ні месенджери ні браузері ні твітер-клієнти, які більшість використовує не пишуться початківцями. Програми початківців просто не пробиваються в топ на play market. А винні у всьому початківці чомусь а не розробники платформи, для якої потрібно в 2 рази більше ОЗУ ніж для платформи-конкурента
Не все хотят пользоваться уродскими приложениями.
А если купить кошелёк большего размера – то увеличивается кол-во денег в нем))))))))))))))))
У процессов есть свой жизненный цикл, который никаким образом не учитывает кол-во памяти )
Не зовсім. Система просто не буде прибивати процеси для звільнення пам’яті якщо ще є достатньо вільної.
Android не завершает процессы по требованию “Осталось мало памяти”, таким занимаются только сторонние таск-менеджеры)
Если в памяти висит сервис с своим процессом – его не убьет ничто кроме него самого. Если висит процесс в приложении, взявший кусок памяти из кучи, она будет высвобождена как только в ней более не будет нужды, не раньше. Тоже самое касается потоков.
ще й як прибиває, просто по дефолту сервіси запускаються з прапорцем sticky і перезапускаються якщо не самі завершили роботу, якщо ж запустити з non-sticky, то може бути вбитий, але так пріоритет в нього високий. Ну і про витоки пам’яті то ясно, якщо є ссилка – буде висіти.
Если какой-то сторонний таск-менеджер грохнет sticky, ос его перезапустит (к примеру медиа сервисы), а если non-sticky будет остановлен – он не будет перезапущен) Но сама ОС его не остановит из-за нехватки памяти) Она может заставить его освободить кучу, но не остановить
Я вам певно секрет великий відкрию, але більшість таск менеджерів без рут доступу очищають оперативку шляхом забивання пам’яті всяким шлаком, а система автоматично то все чистить. Почитайте про пріоритети в андроїд. Якщо коротко – найвищий пріоритет має програма на передньому фоні з запущеним сервісом, все що має нижчий пріоритет може бути прибите системою для звільнення ресурсів. Можливо ви просто не стикалися з таким на девайсах бо оперативки дійсно багато і система процеси не прибиває. Крім того завершення процесів то як “останній метод” щоб звільнити ресурси і може рідко зустрічатися через великий об’єм доступної пам’яті.
Ну за 5 лет разработки -да, секреты ?
У вас хоть раз ос стопорила процесс?
И если “останнiй метод” , то как же это перечит моему первому комменту – увеличение памяти не увеличит само по себе кол-во процессов ?)
бувало на девайсах з <= 512 мб, хоча інколи і на 768 мб, проскакувало, але це тестові, з користувачів такої статистики не збирав.
А збільшить як мінімум тому що користувачі будуть більше запускати і буде більше в пам'яті висіти, і якщо раніше була необхідність системою чистити пам'ять то тепер її все менше.
Бред, Android завершит свернутое приложения, если для открытого недостаточно памяти.
Будет. И one plus 3 это доказал:D
Увеличится максимально возможное количество фоновых процессов.
Сейчас выходят аппараты с 6гб ОЗУ, а используют они максимум 3 гб, так как программы начинают закрываться при попытке открыть больше приложений, чем на 3 гб. Да ну и кто будет держать в фоне пару игр и с десяток программ, чтоб загрузить все 6 гб озу? У людей на компьютерах 4 гб и для работы-этого достаточно.
вся работа не ограничивается серфингом и офисным пакетом
Вы не поверите. Мне для работы иногда моих 8 гб не хватает. И это я сейчас про виртуалки молчу
Вы не поверите, таких как вы-меньшинство.
“Для работы” только секретарше 4 гига оперативки достаточно)))
Так и знал, что тут будет эта фраза с Гейтсом :)
И через 500 лет найдутся люди, которые будут вспоминать про предсказание Гейтса….
Обычно это делают те, кто не может предсказать, что будет завтра
“А сегодня в завтрашний день не все могут смотреть. Вернее смотреть могут не только лишь все, мало кто может это делать” )
Серьезно?
Цитата (якобы принадлежащая Гейтсу) используется лишь в качестве шутки, но никак не упрека.