Comment on page
Zram - Пропиши себе доп. ОЗУ
Гайд для тех у кого мало оперативки, и тех кто хочет просто оптимизировать её потребление
zRam - экспериментальный модуль ядра Linux позволяющий сжимать содержимое оперативной памяти, и таким образом увеличивать ее объем в несколько раз.
Он увеличивает производительность путем предотвращения подкачки страниц на диск, используя сжатое блочное устройство в оперативной памяти, пока не появится необходимость использовать файл подкачки на жестком диске. Скорость обмена с оперативной памятью быстрее, чем с жестким диском, следовательно zRam позволяет Linux производить большее число операций подкачки, особенно на старых компьютерах с малым объемом оперативной памяти.
На практике он позволил мне, не используя раздел подкачки и не получая видимого замедления работы компьютера, увеличить размер оперативной памяти в 2.5-3 раза
Переходим в режим суперпользователя:
su
Вписываем "zram" в
/etc/modules-load.d/zram.conf
:nano /etc/modules-load.d/zram.conf
zram
Вписываем в файл
/etc/modprobe.d/zram.conf
следующее, где число 8 заменяем на кол-во всех ядер:nano /etc/modprobe.d/zram.conf
options zram num_devices=8
По формуле - общее кол-во оперативной памяти делим на 2, а затем делим на кол-во ядер - запоминаем число.
Редактируем и дописываем в файл
etc/udev/rules.d/99-zram.rules
следующее, меняя 512mb во всех строках на ваше значение, полученное выше:nano /etc/udev/rules.d/99-zram.rules
KERNEL=="zram0", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram0", TAG+="systemd"
KERNEL=="zram1", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram1", TAG+="systemd"
KERNEL=="zram2", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram2", TAG+="systemd"
KERNEL=="zram3", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram3", TAG+="systemd"
KERNEL=="zram4", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram4", TAG+="systemd"
KERNEL=="zram5", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram5", TAG+="systemd"
KERNEL=="zram6", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram6", TAG+="systemd"
KERNEL=="zram7", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram7", TAG+="systemd"
И вставляем в файл
/etc/fstab
следующие строки в за висимости от кол-ва ядер:nano /etc/fstab
/dev/zram0 none swap defaults 0 0
/dev/zram1 none swap defaults 0 0
/dev/zram2 none swap defaults 0 0
/dev/zram3 none swap defaults 0 0
/dev/zram4 none swap defaults 0 0
/dev/zram5 none swap defaults 0 0
/dev/zram6 none swap defaults 0 0
/dev/zram7 none swap defaults 0 0
И последняя команда:
echo "vm.swappiness=20" > /etc/sysctl.d/swap.conf
Данная инструкция подходит к системам с 8 гб RAM и 8 ядрами. Подстраивайте под свои нужды.
Все следующие команды требуется выполнять из режима администратора, войти в который можно командой:
su
Создаём конфиг файл под названием
zram.conf
в директории /etc/modules-load.d/
(таким образом путь то файла будет /etc/modules-load.d/zram.conf
) и вписываем туда слово zram
:vim /etc/modules-load.d/zram.conf
zram
Дальше создаём конфиг файл под названием
zram.conf
в директории /etc/modprobe.d/
и вписываем тудаoptions zram num_devices=X
Вместо 'X' вписываем количество ядер которое у нас есть.
К примеру если у вас 4 ядра, вы вписываете:
vim /etc/modprobe.d/zram.conf
options zram num_devices=4
Перед тем, как перейти к редактированию следующего конфига, ниже вы увидите шпаргалку. Сейчас я объясню как ее использовать и менять под свою систему.
И так, у нас есть следующая шпаргалка конфига
99-zram.rules
99-zram.rules
KERNEL=="zram0", ATTR{disksize}="xMb" RUN="/usr/bin/mkswap /dev/zram0", TAG+="systemd"
KERNEL=="zram1", ATTR{disksize}="xMb" RUN="/usr/bin/mkswap /dev/zram1", TAG+="systemd"
KERNEL=="zram2", ATTR{disksize}="xMb" RUN="/usr/bin/mkswap /dev/zram2", TAG+="systemd"
KERNEL=="zram3", ATTR{disksize}="xMb" RUN="/usr/bin/mkswap /dev/zram3", TAG+="systemd"
KERNEL=="zram4", ATTR{disksize}="xMb" RUN="/usr/bin/mkswap /dev/zram4", TAG+="systemd"
KERNEL=="zram5", ATTR{disksize}="xMb" RUN="/usr/bin/mkswap /dev/zram5", TAG+="systemd"
KERNEL=="zram6", ATTR{disksize}="xMb" RUN="/usr/bin/mkswap /dev/zram6", TAG+="systemd"
KERNEL=="zram7", ATTR{disksize}="xMb" RUN="/usr/bin/mkswap /dev/zram7", TAG+="systemd"
Стоит упомянуть, что тут нужно вставлять своё количество строк, и то, как вы можете его определить, зависит от количества ваших ядер.
То есть если у вас 2 ядра то вы копируете 2 строки, которые начинаются с
KERNEL=="zram0"
и KERNEL=="zram1"
. Если ядер больше, то, соответственно, копируем соответствующее количество количество строк. Так же очень важная часть - это распределение места диска для каждого виртуального диска. Выделяемое место необходимо вписывать в строку после
ATTR{disksize}=
, заменив x в "xMb"
на число МБ на ядро. Это посчитать довольно легко:- 1.Делим общее количество озу на 2
- 2.Получившееся число делим на количество ядер
К примеру у нас есть компьютер с 4 ядрами и 2ГБ RAM (2048 МБ), получится следующее:
- 1.2048 / 2 = 1024
- 2.1024 / 4 = 256 МБ
Т.е на каждое ядро будет приходится 256мб, что в сумме даёт нам 1Гб места под Swap
Конфиг с 4 ядрами и 2гб озу будет выглядеть так:
nano /etc/udev/rules.d/99-zram.rules
KERNEL=="zram0", ATTR{disksize}="256Mb" RUN="/usr/bin/mkswap /dev/zram0", TAG+="systemd"
KERNEL=="zram1", ATTR{disksize}="256Mb" RUN="/usr/bin/mkswap /dev/zram1", TAG+="systemd"
KERNEL=="zram2", ATTR{disksize}="256Mb" RUN="/usr/bin/mkswap /dev/zram2", TAG+="systemd"
KERNEL=="zram3", ATTR{disksize}="256Mb" RUN="/usr/bin/mkswap /dev/zram3", TAG+="systemd"
После того как мы разобрались зачем стоит менять значения в строках, создаём его в директории
/etc/udev/rules.d/
И вписываем нужное количество строк и места на виртуальных дисках по этому же принципу:2 GB 2 CRS
2 GB 4 CRS
4 GB 2 CRS
4 GB 4 CRS
8 GB 2 CRS
8 GB 4 CRS
8 GB 8 CRS
Данный конфиг подойдёт для систем с 2 ГБ RAM и 2 ядрами
nano /etc/udev/rules.d/99-zram.rules
KERNEL=="zram0", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram0", TAG+="systemd"
KERNEL=="zram1", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram1", TAG+="systemd"
Данный конфиг подойдёт для систем с 2 ГБ RAM и 4 ядрами
nano /etc/udev/rules.d/99-zram.rules
KERNEL=="zram0", ATTR{disksize}="256Mb" RUN="/usr/bin/mkswap /dev/zram0", TAG+="systemd"
KERNEL=="zram1", ATTR{disksize}="256Mb" RUN="/usr/bin/mkswap /dev/zram1", TAG+="systemd"
KERNEL=="zram2", ATTR{disksize}="256Mb" RUN="/usr/bin/mkswap /dev/zram2", TAG+="systemd"
KERNEL=="zram3", ATTR{disksize}="256Mb" RUN="/usr/bin/mkswap /dev/zram3", TAG+="systemd"
Данный конфиг подойдёт для систем с 4 ГБ RAM и 2 ядрами
nano /etc/udev/rules.d/99-zram.rules
KERNEL=="zram0", ATTR{disksize}="1024Mb" RUN="/usr/bin/mkswap /dev/zram0", TAG+="systemd"
KERNEL=="zram1", ATTR{disksize}="1024Mb" RUN="/usr/bin/mkswap /dev/zram1", TAG+="systemd"
Данный конфиг подойдёт для систем с 4 ГБ RAM и 4 ядрами
nano /etc/udev/rules.d/99-zram.rules
KERNEL=="zram0", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram0", TAG+="systemd"
KERNEL=="zram1", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram1", TAG+="systemd"
KERNEL=="zram2", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram2", TAG+="systemd"
KERNEL=="zram3", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram3", TAG+="systemd"
Данный конфиг подойдёт для систем с 8 ГБ RAM и 2 ядрами
nano /etc/udev/rules.d/99-zram.rules
KERNEL=="zram0", ATTR{disksize}="2048Mb" RUN="/usr/bin/mkswap /dev/zram0", TAG+="systemd"
KERNEL=="zram1", ATTR{disksize}="2048Mb" RUN="/usr/bin/mkswap /dev/zram1", TAG+="systemd"
Данный конфиг подойдёт для систем с 8 ГБ RAM и 4 ядрами
nano /etc/udev/rules.d/99-zram.rules
KERNEL=="zram0", ATTR{disksize}="1024Mb" RUN="/usr/bin/mkswap /dev/zram0", TAG+="systemd"
KERNEL=="zram1", ATTR{disksize}="1024Mb" RUN="/usr/bin/mkswap /dev/zram1", TAG+="systemd"
KERNEL=="zram2", ATTR{disksize}="1024Mb" RUN="/usr/bin/mkswap /dev/zram2", TAG+="systemd"
KERNEL=="zram3", ATTR{disksize}="1024Mb" RUN="/usr/bin/mkswap /dev/zram3", TAG+="systemd"
Данный конфиг подойдёт для систем с 8 ГБ RAM и 8 ядрами
nano /etc/udev/rules.d/99-zram.rules
KERNEL=="zram0", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram0", TAG+="systemd"
KERNEL=="zram1", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram1", TAG+="systemd"
KERNEL=="zram2", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram2", TAG+="systemd"
KERNEL=="zram3", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram3", TAG+="systemd"
KERNEL=="zram4", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram4", TAG+="systemd"
KERNEL=="zram5", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram5", TAG+="systemd"
KERNEL=="zram6", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram6", TAG+="systemd"
KERNEL=="zram7", ATTR{disksize}="512Mb" RUN="/usr/bin/mkswap /dev/zram7", TAG+="systemd"
Дальше редактируем
/etc/fstab
и вписываем столько строк, сколько у нас ядер:Last modified 3yr ago