Zram - Пропиши себе доп. ОЗУ
Гайд для тех у кого мало оперативки, и тех кто хочет просто оптимизировать её потребление
Для чего это?
zRam - экспериментальный модуль ядра Linux позволяющий сжимать содержимое оперативной памяти, и таким образом увеличивать ее объем в несколько раз.
На практике он позволил мне, не используя раздел подкачки и не получая видимого замедления работы компьютера, увеличить размер оперативной памяти в 2.5-3 раза
Короткая версия
Переходим в режим суперпользователя:
su
Вписываем "zram" в /etc/modules-load.d/zram.conf
:
zram
Вписываем в файл /etc/modprobe.d/zram.conf
следующее, где число 8 заменяем на кол-во всех ядер:
options zram num_devices=8
По формуле - общее кол-во оперативной памяти делим на 2, а затем делим на кол-во ядер - запоминаем число.
Редактируем и дописываем в файл etc/udev/rules.d/99-zram.rules
следующее, меняя 512mb во всех строках на ваше значение, полученное выше:
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
следующие строки в зависимости от кол-ва ядер:
/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
:
zram
Дальше создаём конфиг файл под названием zram.conf
в директории /etc/modprobe.d/
и вписываем тудаoptions zram num_devices=X
Вместо 'X' вписываем количество ядер которое у нас есть.
К примеру если у вас 4 ядра, вы вписываете:
options zram num_devices=4
Перед тем, как перейти к редактированию следующего конфига, ниже вы увидите шпаргалку. Сейчас я объясню как ее использовать и менять под свою систему.
И так, у нас есть следующая шпаргалка конфига 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"
на число МБ на ядро. Это посчитать довольно легко:
Делим общее количество озу на 2
Получившееся число делим на количество ядер
К примеру у нас есть компьютер с 4 ядрами и 2ГБ RAM (2048 МБ), получится следующее:
2048 / 2 = 1024
1024 / 4 = 256 МБ
Конфиг с 4 ядрами и 2гб озу будет выглядеть так:
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 ГБ RAM и 2 ядрами
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"
Дальше редактируем/etc/fstab
и вписываем столько строк, сколько у нас ядер:
Last updated
Was this helpful?