3 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

zRAM на Android — что это и как работает?

Настройка zRam в Linux

Технология zRam ранее известная как compcache — реализована в виде модуля ядра Linux и позволяет сжимать содержимое оперативной памяти, и таким образом увеличивать ее объем в несколько раз. Работает это так: модуль zRam создает сжатое блочное устройство в ОЗУ которое чаще всего используется как swap или монтируется в tmp.

При этом степень сжатия данных получается в среднем 3:1. Это означает что на 1 гигабайт подкачки будет использовано в 333 мегабайт физической памяти. Сейчас оперативная память стоит не так уж дорого, но использование zRam вместо файла подкачки на диске может быть полезным для старых ноутбуков и компьютеров, а также для виртуализации. В этой статье мы рассмотрим как выполняется настройка zRam Linux на примере Ubuntu.

Настройка zRam в Linux

Шаг 1. Модуль ядра

Это модуль ядра, а следовательно, важно, чтобы ваше ядро его поддерживало. zRam включен в стандартную поставку начиная с ядра версии 3.14. Вы можете посмотреть вашу версию ядра командой:

Проверка информации о модуле ядра:

Если у вас более старое ядро, вам придется забыть про эту технологию или пересобрать его с этой настройкой. Модуль включается здесь:

Device Drivers —>
[*] Block devices —>
Compressed RAM block device support

Шаг 2. Настройка Grub

Когда модуль загружен надо установить параметр ядра zram.num_devices который указывает максимальное количество сжатых устройств. Например для двух блочных устройств используйте добавьте в переменную GRUB_CMDLINE_LINUX_DEFAULT следующий параметр:

sudo vi /etc/default/grub

Затем обновите конфигурацию Grub и перезагрузите компьютер:

Шаг 3. Скрипт запуска и остановки

Чтобы автоматизировать запуск zram желательно написать скрипт, который будет выполнять все необходимые действия. Давайте создадим скрипт, который запускает четыре zRam устройства и подключает их в качестве swap:

sudo vi /usr/local/bin/zram-start.sh

#!/bin/bash
modprobe zram num_devices=2
echo ‘1024M’ > /sys/block/zram0/disksize
echo ‘1024M’ > /sys/block/zram1/disksize
mkswap /dev/zram0
swapon /dev/zram0 -p 10
mkswap /dev/zram1
swapon /dev/zram1 -p 10

Рассмотрим подробнее что означают строчки скрипта. Первая строчка с modprobe активирует модуля ядра на два блочных устройства. Следующие две строчки устанавливают размер для этих устройств в 1 Гб. Размер устанавливается в мегабайтах. Затем, для каждого блочного устройства создаем файловую систему подкачки командой mkswap и активируем его с помощью команды swapon. Теперь создадим скрипт, который выгружает всё это и отключает zram:

sudo vi /usr/local/bin/zram-stop.sh

#!/bin/bash
swapoff /dev/zram0
swapoff /dev/zram1
echo 1 > /sys/block/zram0/reset
echo 1 > /sys/block/zram1/reset
sleep .5
modprobe -r zram

Обоим скриптам надо дать права на выполнение:

sudo chmod ugo+x /usr/local/bin/zram-start.sh
sudo chmod ugo+x /usr/local/bin/zram-stop.sh

Шаг 4. Тестирование zRam

Теперь надо всё протестировать. Запустите zRam выполнив скрипт запуска:

Теперь вы можете убедится, что количество подкачки увеличилось на 2 Гб:

Всё работает, теперь можно проверить работает ли скрипт отключения:

Шаг 5. Настройка сервиса systemd

Чтобы запускать zram по умолчанию нужно создать для него юнит файл systemd. Создайте файл со следующим содержимым:

sudo systemctl edit —full —force zram.service

[Unit]
Description=zRAM block devices swapping
[Service]
Type=oneshot
ExecStart=/usr/local/bin/zram-start.sh
ExecStop=/usr/local/bin/zram-stop.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target

После этого выполните команду daemon-reload, чтобы перечитать конфигурацию systemd:

sudo systemctl daemon-reload

Запустите сервис systemd и добавьте его в автозагрузку:

sudo systemctl start zram
sudo systemctl enable zram

Выводы

В этой небольшой статье мы рассмотрели как включить zram ubuntu. Как видите, в современных версиях дистрибутива, где модуль уже включён в ядро в этом нет ничего сложного. А пользуетесь ли вы какими-либо технологиями сжатия памяти? Напишите в комментариях!

zRAM на Android — что это и как включить

Современные бюджетные гаджеты на Андроид сталкиваются с тем, что для полноценной работы им недостаточно оперативной памяти. Инженеры смогли решить данный вопрос путем создания блока подкачки zRam. Предлагаю детально рассмотреть возможности этой технологии и проанализировать ее эффективность.

Данная статья подходит для всех брендов, выпускающих телефоны на Android 10/9/8/7: Samsung, HTC, Lenovo, LG, Sony, ZTE, Huawei, Meizu, Fly, Alcatel, Xiaomi, Nokia и прочие. Мы не несем ответственности за ваши действия.

Внимание! Вы можете задать свой вопрос специалисту в конце статьи.

Что такое zRam?

Разработчики создали данный модуль для оптимизации памяти в системе Андроид. Для этого создается внутри ОЗУ блочное устройство.

Это предотвращает возможность подкачки страниц на диск, а также существенно повышает производительность. При помощи фоновых программ внутри оперативной памяти Андроид будет выполнять больше операций подкачки.

Данная идея настолько эффективная, что даже Гугл советует использовать zRam для гаджетов, ОЗУ которых не более 512 Мб. Единственный нюанс состоит в том, что метод эффективно работает только с современными бюджетными девайсами, которые базируются на многоядерных процессорах и имеют 512 Мб оперативной памяти.

В данном случае на отдельное ядро можно перенести весь поток шифрования, чтобы не задумываться о вопросе производительности. Если zRam использовать на устаревших девайсах с одним ядром, то система будет функционировать с ошибками.

Читать еще:  Мобильное приложение Промсвязьбанк

Запускаем через zRam оптимизацию системы

Пользователю сначала необходимо перейти в режим разработчика:

  • Жмем «Настройки», переходим в раздел «О телефоне».
  • Находим вкладку «Номер сборки» внутри данного раздела.
  • На него требуется нажать 7 раз.

  • В дополнительных настройках гаджета отобразится новый раздел «Для разработчиков». В него необходимо зайти.
  • Находим «Оптимизация системной памяти». При отсутствии данного пункта этот девайс не будет поддерживать zRam.
  • Выполняем оптимизацию Андроид.

В меню «Swappiness» демонстрируются данные, с какой именно частотой к zRam обращается система по умолчанию. Данное значение можно изменять в диапазоне 1 – 100. Располагается функция «Swappiness» в разделе системы /proc/sys/vm/, в который можно попасть при использовании менеджера файлов.

Приложение Diskinfo используется для проверки исправного функционирования этого модуля. Если внизу утилиты демонстрируется раздел SWAP, значит данная опция активна.

Блог начинающего линуксоида.

советы, руководства, инструкции.

Страницы

вторник, 15 декабря 2015 г.

Zram и Zswap или как увеличить эффективность оперативной памяти

Данная статья будет актуальна для владельцев нетбуков, компьютеров с малым количеством оперативки, людей, которые запускают много ресурсоёмких приложений, которые в свою очередь потребляют много памяти и так далее. В ядре Linux не так давно появились две замечательные технологии — zram и zswap. Опишу что это и для чего:

ZRAM — модуль ядра Linux, ранее известный как compcache. До версии ядра 3.14 находился в эксперементальной ветке, с 3.14 перемещён в основную. Суть его в том, что в оперативной памяти создаётся сжатый раздел подкачки (swap). Создавая swap в ОЗУ, мы тем самым хоть и уменьшаем объем доступной оперативной памяти, но тем не менее информация в оперативной памяти всегда хранится в несжатом виде, а при использовании ZRAM происходит следующее: как только системе начинает не хватать оперативной памяти, она начинает активно занимать swap, а так как swap у нас в оперативной-же памяти, то по факту система начинает просто сжимать информацию из оперативки и помещать ее в оперативку же. Скорость работы ОЗУ всегда существенно выше чем дисковой подсистемы, а алгоритмы сжатия lzo и lz4 настолько быстры, что в итоге мы получаем существенное «увеличение» оперативной памяти за счет небольших процессорных издержек на архивацию. Таким образом, ZRAM позволяет разместить в оперативной памяти в несколько раз больше информации за счёт сжатия. Эта технология активно используется в Android, ТВ-приставках, ChromeOS, SteamOS и много где ещё. При использовании ZRAM, swap-раздел на диске необязателен. Это особенно полезно для SSD-накопителей, так как частые записи для них вредны.

ZSWAP — модуль ядра Linux, доступный с версии 3.11. Отличается от ZRAM тем, что использует существующий swap-раздел на диске, а в ОЗУ создаётся пул со сжатыми данными (кэшем). После того как пул до отказа забьётся сжатыми данными, он сбросит их в раздел подкачки и снова начнёт принимать и сжимать данные. Размер пула можно указать вручную, по умолчанию он динамический (то есть будет использовать всю доступную оперативку). Реализация такого подхода позволяет, при возникновении необходимости сброса памяти в раздел подкачки, сократить ввод-вывод и повысить скорость работы системы в целом, за счет того, что по возможности избегается использование медленного носителя. Ценой сокращения ввода/вывода является увеличение нагрузки на процессор, который тратит дополнительные ресурсы на сжатие и распаковку данных. По утверждению разработчиков, в их конфигурации при компиляции ядра в ситуации когда происходит своппинг, выигрыш по объему ввода/вывода составил 76%, а время выполнения операции сократилось на 53%. При использовании ZSWAP, используется раздел swap на диске, в ОЗУ хранится только сжатый кэш. Можно считать ZSWAP продвинутым вариантом ZRAM.

Zram или Zswap?

Чтобы узнать что из этого лучше подойдёт вам, возьмём два примера: ноутбук с 4 гигами оперативки и медленным жёстким диском (представьте себе работу подкачки на таком) или с SSD-накопителем; компьютер с 8 гигами оперативки, на котором планируется запускать много виртуальных машин и других ресурсоёмких приложений. В первом случае, более подходящим будет ZRAM, так как ему не нужен swap-раздел на диске (это особенно вредно для SSD) и он позволит размещать все данные непосредственно в памяти. Однако раздел swap нужно обязательно создать если вы будете использовать на ноутбуке режим сна. На компьютере предпочтительнее будет ZSWAP, так как оперативка не будет занята виртуальными swap-файлами (а виртуалкам нужно много оперативки), а в оперативке будет хранится только сжатый кэш, что при нехватке памяти предотвратит своппинг, а в критической ситуации — быстренько скинет его на swap-раздел на диске.

Установка.

Примеры установки я покажу на дистрибутиве Ubuntu 14.04 и Debian 8. В остальных дистрибутивах различия будут не существенными (обратитесь к документации вашего дистрибутива). Начнём с ZRAM. Для Ubuntu всё просто:

sudo apt install zram-config

Всё. Этот скрипт определит количество оперативной памяти в вашей системе, а также количество ядер процессора и создаст swap-файла в памяти (блочные устройства /dev/zram) по количеству ядер. Это нужно потому что сжатие данных однопоточное (один поток==одно ядро). По умолчанию размер такого swap-файла равен 1/2 от общего количества оперативки. После перезагрузки, выполните в терминале команду swapon -s и вы увидите помимо реального swap-раздела, несколько разделов /dev/zram. Далее. Если вы изменяли значение vm.swappiness (для уменьшения порога включения подкачки), например выставили значение vm.swappiness = 10 , то измените его на 40, дабы уже при исчерпании 60% оперативки, включался ZRAM. Если вы ничего не трогали, то можете либо оставить значение по умолчанию (60, то есть при исчерпании 40% оперативки), либо:

sudo nano /etc/sysctl.conf

Дописываем в конец строку:

сохраняем и выполняем:

либо перезагружаемся. Вот и всё. Для Debian всё немного сложнее. Но совсем чуть чуть 🙂 Открываем терминал, вводим:

sudo nano /etc/init.d/zram

Вставляем следующий скрипт:

#!/bin/sh
### BEGIN INIT INFO
# Provides: zram
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: S
# Default-Stop: 0 1 6
# Short-Description: Use compressed RAM as in-memory swap
# Description: Use compressed RAM as in-memory swap
### END INIT INFO

Читать еще:  Как удалить историю просмотров в браузере Google Chrome, Mozilla Firefox, Opera, на телефоне и планшете

Сохраняем. Далее даём права на исполнение:

sudo chmod +x /etc/init.d/zram

sudo insserv zram

Перезагружаемся и всё.

Теперь о ZSWAP. Здесь всё значительно проще. Нужно лишь передать ядру во время загрузки, параметр zswap.enabled=1. Для этого открываем файл /etc/default/grub

sudo nano /etc/default/grub

И в строку GRUB_CMDLINE_LINUX_DEFAULT дописываем этот параметр. Чтобы было вот так:

и перезагрузка. После перезагрузки, можете убедиться в работе ZSWAP, введя команду dmesg | grep zswap Если ответом будет

[ 1.273249] zswap: loading zswap
[ 1.273252] zswap: using lzo compressor

значит всё сработало на отлично. Способ включения ZSWAP одинаков для большинства дистрибутивов. Если нужно ограничить объём пула для ZSWAP, то там же в параметрах указываем:

где x — процент отведённой памяти под ZSWAP.

Вот так мы быстро и без лишних телодвижений, увеличили эффективность оперативной памяти, лишь незначительно увеличив нагрузку на процессор.

Admin46

Свежие записи

Популярное

Архивы

Оптимизация системной памяти Android

По просьбам нуждающихся немного про оптимизацию системной памяти в Android, о том как ее включить и зачем это делают. Ничего нового я не открою, однако по возможности постараюсь все просто расписать.

Оптимизация системной памяти Android

Первым делом немного терминологии о вспомогательных методах работы памяти:

Swap — создает блоки подкачки во внутренней памяти или в памяти флеш-карты, скорость работы напрямую зависит от скорости накопителя, однако пользователю эта разница вряд ли будет заметна.
zRam — создает блоки подкачки в оперативной памяти, что делает этот способ намного эффективнее.

Зачем оно вообще нужно и кому?

В первую очередь эта опция поможет людям, которые часто страдают от того, что приложения выгружаются из оперативной памяти. Включение оптимизации памяти в настройках позволяет ОС Android «перемещать» части приложений или приложения полностью из оперативной памяти во «вспомогательную».

Стоит отметить, что в теории включение оптимизации системной памяти android может сэкономить заряд аккумулятора вашего устройства.

Суть логики проста — при каждом новом запуске приложения расходуется N-ное количество энергии. Важно знать, что в момент запуска приложения происходит нагрузка на процессор, он повышает частоты, тем самым обеспечивая быстрый запуск приложения. Вот именно в этот момент и происходит вся экономия — если приложение не выгружалось(закрывалось) из памяти, то и затрат на новый запуск не будет, т.е нагрузка меньше.

Однако тестов такой экономии я не проводил, т.к. в значительном приросте времени работы аккумулятора сомневаюсь.

Как включить оптимизацию системной памяти Android?

Опция включается так:
Настройки — Дополнительные настройки — Для разработчиков — Оптимизация системной памяти.

Как включить пункт меню для разработчиков:

Заходим в меню настроек и ищем там раздел «О телефоне», открываем. Открыв его скролим вниз и ищем «Номер сборки», тяпаем по нему семь раз

Как часто система будет пользоваться такой возможностью?

За вероятность/количество обращений к zRam, отвечает функция под названием «Swappiness», по умолчанию в моем смартфоне указано значение 100 — это означает что в 100% случаев приложения будут обращаться к zRam за помощью.

Как поменять значение Swappiness?

Самый простой способ, это скачать терминал и прописать в нем:
echo «60» > /proc/sys/vm/swappiness
где 60 это наше значение от 1 до 100.

либо идем по пути:

/proc/sys/vm/ открываем файл swappiness и меняем число от 1 до 100.

Как проверить работает ли оптимизация памяти?

В моем смартфоне оптимизация включена по умолчанию, проверить ее работу можно двумя способами:

  1. Скачать программу Diskinfo. После установки заходим в нее и в самом низу ищем пункт swap. Если пункт присутствует, значит оптимизация работает.
  2. Запустить 5-6 приложения и посмотреть не выгружаются ли они.

Что касается вариантов настройки оптимизации:

По умолчанию в моем девайсе было выставлено значение «Средняя», при таком выборе swap файл равен 1ГБ. Остальные варианты видимо меняют размер Swap в большую или меньшую сторону.

Читайте также:

Solbadguy

Привет, меня зовут Евгений. Этот сайт задуман в качестве моей записной книжки, к которой я буду время от времени обращаться, чтобы освежить память. Надеюсь, что мои заметки пригодятся и кому-нибудь из Вас.

Блог Hellsman’a

Блог как записная книжка.

Повышаем производительность Ubuntu с помощью zRam

Данный способ хорошо поможет тем, у кого на компьютерах установлен небольшой объем оперативной памяти и возникают проблемы с производительностью и «отзывчивостью» операционной системы.

Начиная с версии ядра Linux 3.14 в стандартную поставку включен модуль zRam (ранее известный как compcache).

Как говорится в Википедии:

….увеличивает производительность путем предотвращения подкачки страниц на диск, используя сжатое блочное устройство в оперативной памяти, пока не появится необходимость использовать файл подкачки на жёстком диске. Скорость обмена с оперативной памятью быстрее, чем с жёстким диском, следовательно zRam позволяет Linux производить большее число операций подкачки, особенно на старых компьютерах с малым объёмом оперативной памяти.

zRam активно используется на Ubuntu Nexus 7, Android-устройствах, проектами CyanogenMod. Компания Google кроме Android использует zRam в своей операционной системе ChromeOS.

Использование zRam рекомендуется для нетбуков, старых компьютеров, виртуальных систем (н.р. на VPS от Amazon или DigitalOcean и других) или в различных встраиваемых системах.

Вообще способов применения zRam не ограничиваются только сжатием и уменьшением сбрасываемых в swap данных. Вообще zRam создает блочные устройства (аналог жесткого диска в оперативной памяти) в оперативной памяти. При этом, все данные попадающие в данные блочные устройства сжимаются. В общем, что вы поместите в эти блочные устройства зависит только от вас. Но в большинстве случаев этот модуль и эту технологию применяют именно для swap.

Приступим к настройке.

ОС: Ubuntu 14.04 LTE

Для активизации zRam достаточно установить пакет zram-config:

После установки можно проверить работоспособность:

Если вы видите что-то похожее, то все нормально:

Так как разделы создаются в оперативной памяти, то я не советую вам изменять параметр vm.swappines (изменяется в файле /etc/sysctl.conf ), который часто рекомендуют выставить в значение 10 или вообще 0.

Swappines — это параметр, контролирующий тенденцию ядра перемещать процессы из физической памяти в swap-раздел. По умолчанию в Ubuntu выставлено значение 60, т.е. когда ваша система начинает задействовать более 40% оперативной памяти, то система начинает сбрасывать страницы в swap.

Читать еще:  SdFix – бесплатная программа для удаления троянов и руткитов

Другими словами. Если параметр vm.swappines выставлен в значение 0, то система не будет использовать swap до тех пор, пока не заполнится вся оперативная память. Если же значение выставлено в 100, то все процессы будут перемещаться в swap, что создаст сильную нагрузку на дисковую подсистему и будут проявляться явные задержки в работе самой ОС и приложений.

Как видно на скриншоте выше, при автоконфигурировании zRam система создала 4 раздела (столько сколько ядер в системе, т.к. операции в zRam однопоточные) и выделил на каждый раздел по 470 Мб (приблизительно), что составляет около 12% ОЗУ.

Если вас по каким-либо причинам не устраивает автоматическое создание zRam-разделов, то можно выполнить конфигурирование вручную.

Первая строка — определяем сколько разделов нужно создать. Обычно создают столько разделов, сколько ядер процессора. В моем случае это 4. Разделы нумеруются от 0. Поэтому номера создаваемых разделов: 0-3.

Строки 2-5, определяют какого размера (в байтах) должны быть zRam разделы. Я определи для всех равный объем (в данном случае 1Гб).

Строки 6-9, создают swap-раздел в созданных блочных устройствах.

Строки 10-11, активируют swap с приоритетом 10. Чем выше приоритет, тем раньше будет использоваться данный раздел. Для дискового swap желательно выставить приоритет значительно ниже чем у zRam разделов.

После всего этого проверяем результат с помощью команды swapon

ZRAM на Android — что это и как работает?

Add swipe gestures to any Android, no root

One handed mode

Make your phone easier to use with one hand, no root

XDA Forum App

The best way to access XDA on your phone

XDA Labs

An app store for independent developers

Hyperion Launcher

A sweet, feature-filled launcher with a beautiful UX.

Sites we like

Swappa

XDA’s official marketplace for buying and selling tech

Pocketnow

Social

Resources

Slider Controls for:

>>> Zram virtual disk size selection slider

>>> Cache based Soft swap using a swap file in the fast cache partition. With is own size selection slider.

>>> Swappiness selection slider with instant setting.

>>> Hard swap via a swap partition if available on your ExtSD card.

>>> Independent ON/OFF toggles for the three supported types. ( yes you can try combinations!! )

>>> Immediate set button and a save whichever configuration is current to init.d boot scripts.

>>> Requirements a kernel with swap support and zram but you can use the other features without zram support.

This was developed for Perseus but should work with any kernel that supports Zram/swap.

V2.1 -fixed swappiness not setting correctly.

V2.2
-Made with tasker V4
-Set on boot will now disable zram on boot if zram is disabled when boot button tapped.

V2.3.2
-Running dialogs
-Now with internal memory cache file situated Swap option.
-improved Boot-set init.d support.
-fixed init.d creation bug and other minor bugs

V2.5
-swap priority setting with custom busybox install
-FASTER cache based swap with 4 parallel swap files set with equal priority
— revamped UI

—————————————
This was developed for Siyah and Perseus but should work with any kernel that supports Zram/swap.

IMPORTANT: please make sure super su app re-grants permissions after install!!

—————————————

—————————————
This was developed for Siyah and Perseus but should work with any kernel that supports Zram/swap.

IMPORTANT: please make sure super su app re-grants permissions after install!!
—————————————
Thanks to mattiadj (best multitasking fix) for the concept of cache file-based swap
And Gokhan Moral for his ongoing help as I learn shell scripting
—————————————

—————————————
UPDATE: Zram & Swap Ctrl V2.5.5

>>2.5.5 Tweaked ‘dd’ command which makes the swap files. should eliminate wrong size creation.

>>2.5.5 Cache size detection should work on CM10.1 roms and limit slider to 100MB less than the total free space.

>>2.5.5 Scrapped timeout and auto-rotate settings. will make landscape scenes eventually.

CWM busybox install if app install fails:

(NOTE: the busybox will not affect your rom busybox and will only be used by this app)
—————————————





—————————————
>>>UPDATE: Zram & Swap Control V2.5.1 >2.5.1 App will now make the data folder: /sdcard/Android/data/siyahmods/ if not present.

EXCLUSIVE NEW FEATURE!!

— Swap PRIORITY settings made possible via a custom busybox which the app will download and Auto-install.

—————————————
NOTE!! This custom busybody WILL NOT replace your main busybox. So don’t panic. Only this app will use it. It will reside in /system/bbsiyahmods/
—————————————

— Q: Why is a custom busybox necessary?

A: Because the pared down version of busybox used in CM and many other ROMs does not have the ability to set swap priorities.

— Q: What is so special about being able to set swap priorities?

A: Linux sets the priority in order that to make them active. So to activate a Hard swap partition for example it is necessary to first turn off zram and turn it on again after to ensure it has the highest swap otherwise it won’t be used properly.

— Swap activation is much faster now!

A2: Secondly it is now possible to set several swaps with THE SAME priority. So you can have several swaps used equally. I had a theory that perhaps using several swap files in /Cache might make the overall swap work faster. AND IT DOES!!

— CACHE BASED HARD SWAP IS NOW MUCH FASTER. (using 4 parallel swap files set with equal priority)

Please before anyone disses this claim please try it for yourself. I don’t know the technical reason why but there is no doubt it improves performance markedly!





Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector