Привет, Ми-фаны! Ещё давно была известна новость о том, что в 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% не может сломать андроид(бутлуп и т.п.). В общем, кто хочет, проверяйте в реальных условиях
|
Настоящим вы соглашаетесь с тем, что Xiaomi может собирать, обрабатывать и использовать вашу личную информацию и элементы, включая, помимо прочего, темы, изображения, комментарии, ответы в Xiaomi Community, а также соответствующие данные, перечисленные в Политике конфиденциальности Xiaomi. Выбирая \"Принять\", вы соглашаетесь с Политикой в отношении контента.
Принять