Все мы хотим увеличить оперативную память, да вот денег на нее нет. И что делать? А есть выход – конечно это не доконца снимет вопрос о нехватки ОЗУ, но даст возможнось перебится до покупки.
Технология zRam ранее известная как compcache – реализована в виде модуля ядра Linux и позволяет сжимать содержимое оперативной памяти, и таким образом увеличивать ее объем в несколько раз. Работает это так: модуль zRam создает сжатое блочное устройство в оперативной памяти и используется как swap. Своп (swap) — это файл, либо раздел, т.е. определенное место на жестком диске (HDD), которое используется для «выгрузки» в него неиспользуемых страниц из оперативной памяти. В нашем же случае мы не отключаем своп с диска, а создаем еще один в ОЗУ. И устанавливаем приоритет.
ZRam хорошо поможет тем, у кого на компьютерах установлен небольшой объем оперативной памяти и возникают проблемы с производительностью и «отзывчивостью» операционной системы.
Debian/Ubuntu/Linux Mint/MX linux:
Установка zRam для Debian
Проверяем свап раздел перед установкой.
swapon -s
sudo apt install zram-tools
sudo nano /etc/default/zramswap
Редактируем, снимаем комментарии. Должно получится что-то вроде этого:
# Specifies amount of zram devices to create.
# By default, zramswap-start will use all available cores.
CORES=1
# Specifies the amount of RAM that should be used for zram
# based on a percentage the total amount of available memory
PERCENTAGE=10
# Specifies a static amount of RAM that should be used for
# the ZRAM devices, this is in MiB
ALLOCATION=256
# Specifies the priority for the swap devices, see swapon(2)
# for more details.
PRIORITY=100
Параметр CORES
для каждого свой. У меня одно ядро поэтому значение равно единице.
Создаем скрипт запуска zram
sudo nano /etc/init.d/zram
Вставляем сам скрипт:
# Author: Antonio Galea <antonio.galea@gmail.com>
#
# Thanks to Przemysław Tomczyk for suggesting swapoff parallelization
# Distributed under the GPL version 3 or later, see terms at
# https://gnu.org/licenses/gpl-3.0.txt
### 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
FRACTION=75
MEMORY=$(perl -ne '/^MemTotal:\s+(\d+)/ && print $1*1024' < /proc/meminfo)
CPUS=$(nproc)
SIZE=$((MEMORY * FRACTION / 100 / CPUS))
case "$1" in
start)
param=$(modinfo zram | grep num_devices | cut -f2 -d: | tr -d ' ')
modprobe zram $param=$CPUS
for n in $(seq $CPUS)
do
i=$((n - 1))
echo $SIZE > /sys/block/zram$i/disksize
mkswap /dev/zram$i
swapon /dev/zram$i --priority 10
done
;;
stop)
for n in $(seq $CPUS)
do
i=$((n - 1))
swapoff /dev/zram$i && echo "zram: disabled disk $n of $CPUS" &
done
wait
sleep .5
modprobe --remove zram
;;
*)
echo "Usage: $(basename $0) (start | stop)"
exit 1
;;
esac
# End of file
Делаем файл исполняемым:
sudo chmod +x /etc/init.d/zram
Запускаем скрипт:
sudo /etc/init.d/zram start
Проверяем swap разделы
swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 2097148 494848 -2
/dev/zram0 partition 1505464 0 10
Установка zRam на Ubuntu:
Для активизации zRam достаточно установить пакет zram-config:
sudo apt install zram-config
После установки можно проверить работоспособность:
swapon -s
Если вы видите что-то похожее, то все нормально:
Filename Type Size Used Priority
/dev/sda2 partition 2097148 494848 -2
/dev/zram0 partition 1505464 0 10
Если же zRAM автоматически не запустился, то необходимо сделать следующее:
sudo apt install linux-image-generic -y
sudo reboot
sudo systemctl start zram-config sudo systemctl enable zram-config
OpenSuse/Fedora/ROSA/ARCH/manjaro:
На этих дистрибутивах все давольно просто. OpenSuse:
sudo zypper in systemd-zram-service && sudo zramswapon
fedora:
dnf install zram
systemctl enable zram-swap.service
reboot
ROSA:
sudo urpmi zramstart
sudo systemctl start zram.service
ARCH
Простая установка и настройка с помощью ezzram из AUR
В AUR есть сценарий установки пакета ezzram, который представляет из себя python-скрипт с простым конфигурационным файлом и файлом сервиса для systemd. Устанавливается как обычно любым AUR-хелпером, например yay:
yay -Sa ezzram
После установки нужно добавить а втозапуск и запустить сервис ezzram:
sudo systemctl enable ezzram.service
sudo systemctl start ezzram.service
Конфигурационный файл лежит по пути /etc/ezzram.conf. В нём всего три пораметра:
- size — размер раздела zram в мегабайтах
- algorithm — алгоритм сжатия данных в zram разделе
- cores — количество используемых ядер ЦП
Алгоритм сжатия по-умолчанию является оптимальным для абсолютного большинства пользователей, размер zram разумно установить в пределах 30-50% от полного объёма ОЗУ, ну а в «cores» указываем количество физических ядер своего центрального процессора. После внесения изменений сохраняем файл и активируем новую конфигурацию перезапуском сервиса:
sudo systemctl restart ezzram.service
И на этом все!
Совет: так как разделы создаются в оперативной памяти, то я не советую вам изменять параметр vm.swappines (изменяется в файле /etc/sysctl.conf
), который часто рекомендуют выставить в значение 10 или вообще 0.