Ted.ge
Search…
⌃K

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. 1.
    Делим общее количество озу на 2
  2. 2.
    Получившееся число делим на количество ядер
К примеру у нас есть компьютер с 4 ядрами и 2ГБ RAM (2048 МБ), получится следующее:
  1. 1.
    2048 / 2 = 1024
  2. 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и вписываем столько строк, сколько у нас ядер: