Хотите поблагодарить автора блога - жмите здесь !
1 2 0
1 2 0

Нажмите на рекламный баннер выше, если хотите поблагодарить автора блога !
Написание каждой статьи заняло в сотни раз больше времени, чем один клик.

суббота, июля 06, 2013

Включаем SWAP в Android

Делать это только если Вам ДЕЙСТВИТЕЛЬНО не хватает памяти, после всех препринятых мер !
Так как "побочными эффектами" будет еще большее замедление начальной загрузки, и периодическое легкое "тупление" (особенно если карточка у Вас не самая скоростная).
Плюс иногда при включении, телефон "показав экран" будет надолго задумываться и сам идти в перезагруз повторно (обычно это происходит после изменения системных параметров типа редкатирования build.prop, изменения параметров в sysctl итд), после чего правда всетаки включится - предупреждаю, чтобы столкнувшись с этим Вы тут же не получили "перепуг первой степени" :) Изредка, такое при включении может происходить и дважды. Может быть при быстрой карточке. этого эффекта не будет. Не знаю - пока не проверял :)
И не ждите чудес :) 
А теперь по сути.

 



Подключаем аппарат к порту USB стандартным кабелем.
Проверяем что мы имеем рута: adb dhell id.
uid=0(root) gid=0(root)
Означает что имеем. Если Вы уже установили ядрно ThunderZap (для IQ450, или похожее для Вашего аппарата), то так и будет.
А если не установили, то то что ниже, Вас не касается, потому как "стоковые" ядра swap обычно не поддерживают.
Такеж перед тем как это делать, Вам необходимо переразбить карточку памяти.

Подготовка карточки памяти.

Не забудьте перед этим сделать полный бэкап карточки памяти, чтобы потом все восстановить. Лучше всего сунуть ее в читалку, и скачать через нее ВСЕ содержимое карточки в отдельный каталог на компьютере.
1) Устанавливаем CWM recovery. Так как описано в http://vyacheslav.blogspot.com/2013/06/cwm-recowery-android-404-fly-iq-450.html
Если он уже установлен, пункт 1 пропускаем.
2) Выключаем телефон, грузимся в CWM recovery (При включении зажимаем одновременно питание, а также громеость вверх и громкость вниз). После появления меню - жмеме "громкость вверх").
3) Выбираем пункт "Advanced" (громкость вниз несколько раз, потом кратковременно кнопку включения питания).
4) Выбираем "Partition SDcard"
5) Выбираем размер Ext Size - некоторые прошивки могут использовать его при нехватке внутренней памяти. Я выбрал 256 м на вс случай - мне внутрненней памяти и так собственно хватает.
6) Выбираем Swap size. Я выбрал максимум - 256М, но в принципе хватит и 128 обычно. Чем свап больше, тем больше Android сможет освободить памяти (ОЗУ) за счет SWAP, но и тем больше могут добавиться тормоза (SWAP много медленее ОЗУ), и износ карточки из зв большего количества записей в SWAP, который у нас на флеш карте, а все флэш карточки имеют ограниченное количество циклов записи. Плюс жеательно чтобы карточка была как можно шустрее - обычно у "скоростных" карточек используется технология, которая позволяет выдерживать большее количество циклов записи, да и в общем телефон будет много шустрее, если карточка для SWAP имеет высокую скорость.

Все, карточка готова.

Выключаем телефон. Вытяниваем карточку. Прямо выключить не получится. Кнопка питания может толькозапустить ребут. Запускаете, и как только окончится загрузка и появится экран телефона, не разлочивая, сразу же долго жмем на кнопку выключения питания, и выключаем.

Вытягиваем карточку, ставим в "читалку".
Вытираем все что там есть, Копируем назад, ранее скопированные с карточки данные.





Подключение SWAP



adb shell
root@android:/ # ls /dev/block/mmcbl*
/dev/block/mmcblk0
/dev/block/mmcblk0boot0
/dev/block/mmcblk0boot1
/dev/block/mmcblk0p1
/dev/block/mmcblk0p2
/dev/block/mmcblk0p3
/dev/block/mmcblk0p4
/dev/block/mmcblk0p5
/dev/block/mmcblk0p6
/dev/block/mmcblk1
/dev/block/mmcblk1p1
/dev/block/mmcblk1p2
/dev/block/mmcblk1p3

SD карта с тремя партициями. Перепроверяме, чтоодна из них - swap
root@android:/ # fdisk -l /dev/block/mmcblk1
fdisk -l /dev/block/mmcblk1

Disk /dev/block/mmcblk1: 15.4 GB, 15472787456 bytes
255 heads, 63 sectors/track, 1881 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/block/mmcblk1p1 1 1819 14611086 c Win95 FAT32 (LBA)
/dev/block/mmcblk1p2 1820 1850 249007+ 83 Linux
/dev/block/mmcblk1p3 1851 1882 250019 82 Linux swap
root@android:/ #
Видим Linux swap - это наша.
Вот она: /dev/block/mmcblk1p3

Инициализируем swap партицию
mkswap /dev/block/mmcblk1p3

Выходим (exit)
Перемонтируем для возможности записи:
adb remount

Снова заходим в шелл
adb shell

Создаем каталог для хапуска init скриптов:
cd /system
cd etc
mkdir init.d

Формируем файл запуска:
echo "#!/system/bin/sh" > /system/etc/init.d/05userinit
echo "swapon -a" >> /system/etc/init.d/05userinit
echo "" >> /system/etc/init.d/05userinit

Формируем fstab
echo "/dev/block/mmcblk1p3 swap swap" >> /system/etc/fstab

Ставим правильные разрешения на выполнение:
chmod 0711 /system/etc/init.d/05userinit
chmod 0711 /system/etc/fstab
exit

Отсоединить перезагрузить
После загрузки, запускаем System Tuner, и идем в раздел "SysCtl".
В самом конце, ищем параметр "vm.swappiness" и ставим его на 100%.

Чем выше это значение, тем больше система "склонна" выгружать все из ОЗУ как можно быстрее в SWAP. При 100 она это делает так активно, что там могут оказаться даже части приложений, с которыми сча работаете, отсюда "тупление". Ну и понятно, когда она чересчур "активничает" с этим. операций записи в СВАП (на карточку) становитчся больше, а любая флешка выдерживает тольк ограниченное их количество. Поэтому решайте сами 100% или поменьше. Стандартное 60%.
Важно. У меня включения swap, вызвало резкое "тупление" и "дергание интерфейса", и это не смотря на повышенную частоту проца в этом ядре (до 1.4ггц вместо 1 ггц стандартного). "Вылечилось" тупление установкой параметра vm.vfs_cache_pressure в 20% вместо "дефлотных" 10%.

PS Если используете SWAP, после перезагрузки (после включения) рекомендую подождать, пока в левом верхнем углу исчезнет значек "карточки с шестеренкой" и только потом разблокировать экран.

PPS На счет количества "свободной памяти", Вы можете "поиграться" еще настройками 'твиков" памяти в System Tuner. Заходите в раздел "Tweak" (там две линейки памяти нарисованы). Выираете "Presets". И там есть предустановки от "Very light" до "Very Agressive". Чем "легче", тем меньше система склонна "выкидывать" из памяти ранее использованные приложения, и соответственно ее освобождать. Это удобно, когда Вы используете "многозадачность" - переключаясь из одного открытого приложения в другое. А когда "очень агрессивно" - система старается быстрее выкинуть "все что сейчас не используется" - это предпочтительно для тех кто играет в игрушки, особенно в "тяжелые".

PPPS Просмотреть как используется SWAP, не прибегая к консоли, Вы можете с помощью вот этой программы https://play.google.com/store/apps/details?id=com.roehsoft.meminfo&hl=ru . Только не нажимайте кнопку снизу - она Вам ни к чему. Используйте только как "информационную".
Также, для мониторинга системы, удобна программа https://play.google.com/store/apps/details?id=com.eolwral.osmonitor&hl=ru - с ее помощью Вы можете заметить если у Вас какие глюки с карточкой начались, и посмотреть какая программа сколько процессора кушает "в динамике".

3 комментария:

  1. Онанизм. Вывод: если памяти 512mb - телефон на мусорку.)

    ОтветитьУдалить
    Ответы
    1. Наоборот это придумано как раз для девайсов с 512 RAM а если у тебя 8 гигов то это уже никак не поможет.

      Удалить

Закрыть окно X
Пожалуйста, потратьте несколько секунд на поддержку блога и его автора
Нажмите на рекламную ссылку: Рекламная ссылка для поддержки блога, или на баннер вверху справа страницы.