Linux — используем память с пользой с помощью zRam

Использование zRam в LinuxЧто такое zRam?

zRam — относительно новый и пока малоизвестный модуль ядра Linux. Суть его в том, что он позволяет создавать виртуальные блочные устройства прямо в оперативной памяти компьютера. Но главное его отличие от tmpfs данные, помещаемые в память сжимаются алгоритмом lzo, что позволяет запихать в 1гб пространства в оперативной памяти 2-3гб информации. Какие преимущества zRam может дать? Читаем ниже.

Раздел подкачки в оперативной памяти

Раньше эта мысль вызвала бы непонимание или насмешки в сторону человека, её продвигающую. Однако времена поменялись.
Итак, представим. У вас компьютер с небольшим объемом памяти, 512 мб или 1024 мб. В принципе для повседневной работы Linux-based операционных систем этого хватит, но и здесь бывают случаи, когда памяти надо гораздо больше, например для сборки некоторых пакетов может понадобится 8гб памяти. Для этого и существует такое явление, как раздел подкачки, он же swap. Вроде всё прекрасно и из ситуации вышли, но скорость записи/чтения у жестких дисков на несколько порядков ниже, чем у оперативной памяти. Даже пускай вы используете быстрые твердотельные накопители SSD (на которых swap размещать вообще не советуют, кстати), то и они значительно уступают оперативной памяти по скорости.
А теперь развиваем мысль и подключаем модуль ядра zRam и размещаем на созданном виртуальном блочном устройстве раздел подкачки. Скорость работы с этими данными будут несколько ниже, чем напрямую с памятью из-за сжатия их, однако всё же никакой жесткий диск или твердотельный накопитель не сможет сравниться. Да и нагрузку на последние снимем таким способом.

Что же у нас получается? Если памяти вдруг перестает хватать, компьютер будет сжимать «блоки» памяти и размещать опять таки в памяти. Звучит красиво, а главное в наши дни это реально.
Что нам это даст? Бесплатное «увеличение» оперативной памяти на серверах, уменьшение нагрузки на жесткий диск и твердотельные накопители. Последнее особенно актуально на нетбуках — памяти там обычно кот наплакал, а увеличить не всегда возможно.

Использование zRam в качестве swap

Общий алгоритм монтирования swap в zRam

Операционных систем основанных на linux миллионы, так что для начала представлю общий алгоритм.
1. Если нет модуля zRam — пересобрать ядро, включив его.
2. Создать блочные устройства zRam:

modprobe zram num_devices=2

параметр num_devices — количество блочных устройств zRam. Дело в том, что сжатие происходит в один поток, так что есть шанс получить выйгрыш в производительности, создав кол-во блочных устройств, равное количеству ядер в вашем процессоре.
3. Задать размер блочным устройствам:

echo $((512*1024*1024)) > /sys/block/zram0/disksize
echo $((512*1024*1024)) > /sys/block/zram1/disksize

Здесь задается размер 512мб каждому устройству zRam.
Какой размер выбрать — дело весьма индивидуальное. Могу лишь посоветовать для общего случая — суммарный размер должен быть равен половине объема вашей оперативной памяти.
4. Создание разделов подкачки в zRam:

mkswap /dev/zram0
mkswap /dev/zram1

5. Монтирование разделов подкачки:

swapon /dev/zram0 -p 5
swapon /dev/zram1 -p 5

Здесь параметр -p 5 устанавливает приоритет раздела подкачки. По умолчанию он равен -p 1. Если Вы не планируете использовать раздел подкачки на жестком диске или твердотельном накопителе, то в принципе можете его не использовать.
6. PROFIT!

Использование zRam+swap в Ubuntu

Если вы, как и я, используете Linux Ubuntu, то есть решение для ленивых.
Для Ubuntu 11.04, 11.10, 12.04, 12.10

sudo add-apt-repository ppa:shnatsel/zram
sudo apt-get update
sudo apt-get install zramswap-enabler

Для Ubuntu 13.04 и 13.10

sudo apt-get install zram-config

Ну вот и всё. Данные команды сами сделают то, что описано выше.
Для проверки, подключились ли разделы подкачек в zRam:

cat /proc/swaps

На этом всё. На долго не прощаюсь 😉

Помогла статья? Поддержи блог - расскажи о нём на своей странице в социальной сети.

Добавить комментарий

Войти с помощью: