zRam

Повышаем производительность 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:

sudo apt-get install zram-config

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

swapon -s

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

результат вывода команды swapon -s при включенном zRam

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

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

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

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

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

/sbin/modprobe zram num_devices=4
echo 1073741824 > /sys/block/zram0/disksize
echo 1073741824 > /sys/block/zram1/disksize
echo 1073741824 > /sys/block/zram2/disksize
echo 1073741824 > /sys/block/zram3/disksize
/sbin/mkswap /dev/zram0
/sbin/mkswap /dev/zram1
/sbin/mkswap /dev/zram2
/sbin/mkswap /dev/zram3
/sbin/swapon /dev/zram0 -p 10
/sbin/swapon /dev/zram1 -p 10
/sbin/swapon /dev/zram2 -p 10
/sbin/swapon /dev/zram3 -p 10

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

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

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

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

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

swapon -s

На этом все, настройка закончена.

comments powered by HyperComments