Столкнулся с мнением, что использование swap на линукс необязательно в случае если достаточно оперативной памяти. Каждое мнение имеет право на жизнь, но я предпочитаю все же настраивать свап, тем более что это не сложно.
Преамбула
zRam — это модуль ядра Linux который включён в стандартную поставку ядра начиная с версии 3.14. Целью данного модуля служит создание блочного устройства в оперативной памяти, но в отличии от tmpfs, данные записываются на него в сжатом виде. Поэтому одно из основных его полезных применений это возможность создание прессующего раздела подкачки в оперативной памяти. Всё это позволяет, хоть и неявно, увеличить размер ОЗУ среднем в 2-3 раза, за счёт незначительной нагрузки ЦП на компрессию и декомпрессию данных.
Так же добавим возможность увеличения свап за счет файлов.
Амбула
Итак, у нас есть модуль и знание для чего он нужен, осталось всё это дело применить на практике.
Проверяем, что у нас не подключен swap:
1 2 3 4 5 6 7 8 |
root@debian:~# lsb_release -d Description: Debian GNU/Linux 9.4 (stretch) root@debian:~# swapon --show root@debian:~# free -h total used free shared buff/cache available Mem: 2.0G 46M 1.9G 2.9M 62M 1.8G Swap: 0B 0B 0B root@debian:~# |
Устанавливаем
1 2 |
apt install git make git clone https://github.com/Nefelim4ag/systemd-swap.git |
1 |
./systemd-swap/package.sh debian |
1 |
dpkg -i ./systemd-swap/systemd-swap_*_any.deb |
Редактируем конфиг, в принципе там все понятно, но нас интересует 3 строчки:
nano /etc/systemd/swap.conf
1 2 3 4 5 |
zswap_enabled=0 zram_enabled=1 swapfc_enabled=1 |
Столкнулся с проблемой создания файлов swap, плевало ошибкой — debian systemd-swap[1773]: WARN: swapFC: ENOSPC
Лечится командой:
1 |
echo fs.inotify.max_user_watches=524288 | tee -a /etc/sysctl.conf && sysctl -p |
Запускаем
1 2 |
systemctl enable systemd-swap systemctl start systemd-swap |
Проверяем
1 2 3 4 5 6 7 8 |
root@debian:~# swapon --show NAME TYPE SIZE USED PRIO /dev/zram0 partition 501.1M 0B 32767 root@debian:~# free -h total used free shared buff/cache available Mem: 2.0G 52M 1.7G 3.0M 253M 1.8G Swap: 501M 0B 501M root@debian:~# |
Вуаля, таким образом мы имеем свап в сжимаемой области памяти + динамический свап в файлах которые добавляются по мере заполнения памяти.
Использовал материалы:
https://github.com/Nefelim4ag/systemd-swap
https://archlinux.org.ru/forum/topic/13907/