понедельник, 15 апреля 2013 г.

Использование ZRAM в Gentoo Linux

Linux обладает одной интересной возможностью - возможностью создания в части оперативной памяти сжатой области, в которой возможно расположить раздел подкачки (swap). Благодаря сжатию этой области, в том же объёме оперативной памяти можно разместить больше (в 3-8 раз) данных, правда ценой некоторой потери скорости (сжатие требует процессорного времени), однако потеря скорости практически незаметна в сравнении с потерей скорости при подкачке с физического диска. 


Включение такой функции требует всего несколько минут.

Во-первых, необходимо активировать соответсвующую опцию в настройках ядра:

Нужно включить опции, помеченые буквами "М" на изображении. Эти опции располагаются в разделе Device drivers->Staging drivers. После включения - собираем и устанавливаем ядро и модули (make && make modules && make modules_install && make install), после чего можно попробовать включить сжатый swap-раздел в оперативной памяти, без перезагрузки системы. 

Для начала, создадим скрипт, создающий раздел, со следующим содержанием:
$cat ~/zram.sh 
#!/bin/bash
modprobe zram num_devices=4
SIZE=512
echo $(($SIZE*1024*1024)) > /sys/block/zram0/disksize
echo $(($SIZE*1024*1024)) > /sys/block/zram1/disksize
echo $(($SIZE*1024*1024)) > /sys/block/zram2/disksize
echo $(($SIZE*1024*1024)) > /sys/block/zram3/disksize

mkswap /dev/zram0
mkswap /dev/zram1
mkswap /dev/zram2
mkswap /dev/zram3

swapon /dev/zram0 -p 10
swapon /dev/zram1 -p 10
swapon /dev/zram2 -p 10
swapon /dev/zram3 -p 10

Скрипт нужно подредактировать под вашу систему:
-измените параметр num_devices в соответствии с числом физических ядер вашего CPU.
-Измените параметр SIZE (размер области) так, чтобы SIZE(в мегабайтах)*num_devices равнялось примерно половине рамера оперативной памяти, установленной в вашей системе.
-Удалите лишние (либо, если число ядер выше 4, добавьте соответствующие строки) строки echo..., mkswap ..., swapon ... , так, чтобы число строк равнялось числу физических ядер CPU (num_devices).

После этого можно запустить скрипт (под root), результатом работы которого будет создание указанного количества разделов подкачки с заданым размером в ОЗУ. Параметр -p 10 у команды swapon отвечает за приоритет создаваемого раздела подкачки, чем выше цифра - тем выше приоритет, что указывает системе на то, что сначала нужно рамещать данные в ZRAM, и только потом - на физическом диске.

Для того, чтобы не запускать каждый раз файл вручную, было бы полезно добавить скрипт в автозапуск:
cp ~/zram.sh /etc/local.d/10_zram.start && chmod 755 /etc/local.d/10_zram.start

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



Комментариев нет:

Отправить комментарий