Настоящим вы соглашаетесь с тем, что Xiaomi может собирать, обрабатывать и использовать вашу личную информацию и элементы, включая, помимо прочего, темы, изображения, комментарии, ответы в Xiaomi Community, а также соответствующие данные, перечисленные в Политике конфиденциальности Xiaomi. Выбирая \"Принять\", вы соглашаетесь с Политикой в отношении контента.
Принять

MIUI общее

[Прочее] Расширение ОЗУ на Андроиде - полезно ли?

2021-07-28 04:18:32
4040 9
Привет, Ми-фаны!

Ещё давно была известна новость о том, что в MIUI 13 будет добавлена функция расширения ОЗУ. Но по предварительной информации, она будет доступна только на устройтсва с флагманскими процессорами, а на них объём оперативной памяти и так немалый.

Технология
Некоторые подумают, что это новая технология, разработанная Xiaomi, но это совсем не так. Технология называется swap(подкачка) и является системной функцией ядра linux, существует как минимум с версии ядра 2.6(с 2003 года)(по моему опыту, старее этой версии linux не щупал...).
Принцип подкачки в использовании локальных устройствах хранения информации(жёсткий диск, флешки и тп) в качестве ОЗУ - это может быть раздел диска, или специальный файл. Конечно, скорость чтения/записи в файлах/разделах подкачки намного меньше чем у ОЗУ, поэтому они используются в основном только при нехватке ОЗУ.

Посмотрим на практике
Подопытным будет Redmi Note 4X(кастом Андроид 11) с объёмом ОЗУ 3Гб. Для подключения swap файла нужен root, конкретно magisk(ну supersu думаю уже никто не ставит:)). И так как swap встроен в ядро, то из приложений нам понадобится лишь эмулятор терминала, а можно обойтись без него, используя отладку по USB(подключение к ПК).
Открываем эмулятор терминала(или если через отладку USB вводим команду adb shell в терминале на ПК) и следуем шагам создания и подключения файла подкачки:

1) Входим в систему пользователем root - командой su, разрешаем доступ в открывшемся окне magisk

2) Создаем файл подкачки командой "dd if=/dev/zero of=/data/media/0/swpname bs=1G count=3", где 'swpname' - имя swap файла, можно придумать любое. Аргумент bs указывает размер файла(1G - 1гигабайт, 1M - 1 мегабайт), аргумент count указывает, на сколько умножать размер.{лучше не указывать 2G, 3G и т.д. в bs, а указать множитель в count, иначе может выдать ошибку}. Созданный swap файл лежит во внутренней памяти /storage/emulated/0. Но мы используем путь /data/media/0/, потому что это первоначально смонтированный ядром раздел, а /storage/emulated/0/ - это перемонтированный андроидом со своими ограничениями, и если в следующих командах указать /storage/emulated/0/ - будет ошибка, как раз из-за разрешений.

3) Подготавливаем файл подкачки к подключению командой "mkswap /data/media/0/swpname"

4) Подключаем файл подкачки командой "swapon /data/media/0/swpname"
Если на 4 пункте выдает ошибку, то пробуем установить права на файл командой "chmod 755 /data/media/0/swpname"

5(необязательный)) После перезагрузки файл подкачки отключится, поэтому можно создать скрипт для его повторного подключения и поместить его в автозагрузку, обеспеченную magisk. Командой "echo '#!/bin/sh\nsleep 30\nswapon /data/media/0/swpname' › /data/adb/service.d/swap.sh" и выдаем права на запуск командой "chmod +x /data/adb/service.d/swap.sh"

6) Для отключения файла подкачки набираем "swapoff /data/media/0/swpname". И соответсвенно можно удалить из автозагрузки командой "rm /data/adb/service.d/swap.sh"

Мой пример на скриншоте - успешный результат, у меня размер файла подкачки 3ГБ
Проверяю оперативную память командой "free -h": до и после подлключения swap файла:
Как видно, до моих манипуляций уже была "подкачанная память"(1ГБ), это zram, он есть практически на современных андроидах - это раздел подкачки в самой ОЗУ, но со сжатием(как я понял;)), подробнее про zram в Википедии.

Тесты ОЗУ
И вот я решил проверить, а полезна ли вообще подкачка в андроиде?
Существуют приложения, которые заполняют всю ОЗУ вплоть до того, что система выгрузит нежизненноважные фоновые процессы и самоприложение-заполнитель. {Разработчики продвигают эти приложения как оптимизаторы ОЗУ, чтоб вытеснить некоторые фоновые процессы, следовательно почистить оперативку, но толку в этом нет(приложения потом все равно снова запустятся и это только лишняя нагрузка на ЦП и следовательно жор батареи), не ведитесь.} Одно из таких приложений я использовал для теста.
Сам тест простой, позволяю приложению заполнить ОЗУ до отвала и жду, когда само приложение вылетит(сколько максимум оно займет памяти).
Сначала я запустил тест без подкачки: вылетело, когда значение занимаемой памяти достигло ~2200МБ
Затем я подключил файл подкачки и также запустил тест: приложение вылетело уже на ~5200МБ! Успел сделать скриншот на отметке 5014МБ:
И тесты я проводил не 1 раз, счетчик приложения не врет. Это не просто случайные результаты

Выводы
Если у вас есть рут, есть место во внутренней памяти, если вы часто используете большое количесвто приложений одновременно и чувствуете нехватку ОЗУ(приложения выгружаются из памяти), то советую попробовать данный способ. Хоть я и не проверял его в таких реальных условиях с большим количесвтом приложений, всё же думаю, теоритически, что система будет использовать swap, и важные приложения не выгрузятся из ОЗУ. Кто-то боится? Это же встроенная функция linux, она 99% не может сломать андроид(бутлуп и т.п.). В общем, кто хочет, проверяйте в реальных условиях
2021-07-28 04:18:32
Избранное13 РейтингРейтинг

Кролик мастер

Ilya30KV Ответить |

#1

В 5 пункте в команде echo есть символ "›". Mi Community удалил нормальный символ "больше", и мне пришлось заменить его на похожий символ с названием "Угловая кавычка закрывающаяся". Те, кто будет копировать эту команду, замените этот символ нормальным знаком "больше", тот, что на одной клавише с буквой "Ю", ну понятно объяснил
Вы скорость не замерли. Памяти будет много, но телефон превратится в лагаюший кусок фигни. Эта тема была актуальна когда скорости процессоров были сопоставимы со скоростью ROM. А сейчас ram и ROM очень сильно отличаются, да и обычно такие вещи применяют на бюджетных моделях, где используются не самые передовые технологии ROM памяти. Это как сравнить скорость чипов ram на пк и скорость чтения/записи винта

Модератор

Amadey76 | из Redmi Note 4

#3

Устаревшие методы. В современных условиях при запредельных объёмах оперативной и постоянной памяти - производить такие манипуляции не желательно.

Кролик мастер

Ilya30KV Ответить |

#4

Alkris2 ответил: 2021-07-28 02:37:37
Вы скорость не замерли. Памяти будет много, но телефон превратится в лагаюший кусок фигни. Эта тема была актуальна когда скорости процессоров были сопоставимы со скоростью ROM. А сейчас ram и ROM очень сильно отличаются, да и обычно такие вещи применяют на бюджетных моделях, где используются не самые передовые технологии ROM памяти. Это как сравнить скорость чипов ram на пк и скорость чтения/записи винта

Да, скорость будет ужасная, но идея в том, чтоб в реальных условиях только фоновые процессы перемещались в swap(а не выгружались), оставляя место для используемого в данный момент приложения. Вот этот момент стоит проверить. И характер работы со swap(при каких условиях перемещать процессы из ОЗУ, выгружать и тп) настраивается в ядре - в разделе boot. И на разных девайсах с разными прошивками и собственно ядрами полезность подкачки разная(на старичке Xperia Z1 вот результаты теста одинаковые и с подкачкой и без)

Кролик мастер

Ilya30KV Ответить |

#5

Amadey76 ответил: 2021-07-28 06:32:46
Устаревшие методы. В современных условиях при запредельных объёмах оперативной и постоянной памяти - производить такие манипуляции не желательно.

Разумеется. А Xiaomi как всегда хочет только для флагманов и добавить подкачку для "простых смертных" пользователей без рута...
моему ведру с болтами (9C NFC) не видать😁
На реалми нарзо 30 такая функция есть  4гб. и можно добавить +3гб. . На реалми и 4гб. - за глаза хватает, ну если не играть. А вот на сяоми-редми-поко наверно будет полезно .
Ilya30KV
Разумеется. А Xiaomi как всегда хочет только для флагманов и добавить подкачку для "простых смертных" пользователей без рута...

Это програмно , так что на всех добавят. И ваабще это больше маркетинговый ход. Типа купи го...о  за дешово , и добавь сам памяти и будет типа не гов.о!
Недопустимое расположение, записи были удалены #9
Войдите, что бы оставить ответ
Вход Регистрация

Ilya30KV

Кролик мастер

  • Подписчики

    68

  • Тем

    102

  • Ответы

    1123

  • Баллы

    4946

3 дня подряд
Новичок
Throw Back with Mi 2018
Цвет Redmi Note 7
Android 10
Новый год 2021
Mi Bunny #14
Mi Bunny #22
Знайка
Xiaomi №1
Робот-пылесос
Mi Box S
Премиум
Смартфон с NFC
AMOLED дисплей
Умные часы
Приложение Mi Community
Snapdragon
Популярная тема [декабрь 2021]
Ценитель MIUI
Внутриканальные наушники
Mi Fit
Умная щетка
Проводная зарядка
Электросамокат
Ассистент Алиса

XIAOMI PRODUCT
©2010-2020 Xiaomi.com. Все права защищены.
Быстрый ответ Наверх Вернуться к списку