title: "Настройка swap" date: 2022-10-08T20:33:35+03:00
{{< toc >}}
Обычно рано или поздно у всех возникает вопрос: "Почему начинает заполнятся swap, когда у меня ещё много свободной оперативной памяти?". И вот тут нам приходит в помощь такой параметр, как vm.swappiness
. Для начала в консоли выполним команду:
cat /proc/sys/vm/swappiness
По-умолчанию результат будет 60.
Это параметр, который контролирует количество свободной памяти, при какой загруженности у нас начнётся сброс страниц в swap. Ну, а дальше простая формула: {{< katex >}}100\%-60\%=40\%{{< /katex >}}, т.е. уже при 40% загруженной ОЗУ данные начинают активно сливаться на жёсткий диск, что, как мне кажется, не есть хорошо. Чтобы сделать так, чтобы слив начался, хотя бы, при 90% занятой памяти нужно выполнить следующее.
Сначала в конфиг /etc/sysctl.conf
добавим запись:
vm.swappiness=10
Затем, дабы не перезагружать комп, выполним с правами суперпользователя команду:
sysctl -p
Всё. На этом настройка закончена.
Информация взята отсюда.
Проверяем текущий файл
sudo swapon --show
Будет что-то типа этого:
NAME TYPE SIZE USED PRIO
/swapfile file 8G 2M -2
Также можно посмотреть следующей командой:
free -h
Вывод:
total used free shared buff/cache available
Mem: 981Mi 122Mi 647Mi 0.0Ki 211Mi 714Mi
Swap: 8,0Gi 2,0Mi 8,0Gi
Отключаем использования файла подкачки /swapfile
sudo swapoff /swapfile
Создаём файл нужного размера
sudo fallocate -l 8G /swapfile
После ключа -l
задаём нужный размер файла подкачки.
Даём права только для пользователя root
sudo chmod 600 /swapfile
Проверяем командой ls -lh /swapfile
. Должно быть следующее:
-rw------- 1 root root 8,0G авг 27 15:37 /swapfile
Активировать подкачки
sudo mkswap /swapfile
примерный вывод:
Setting up swapspace version 1, size = 8 GiB (8589934592 bytes)
no label, UUID=6e965805-2ab9-450f-aed6-577e74089db
Включить подкачку
sudo swapon /swapfile
Проверяем, что всё успешно
sudo swapon --show
Должно быть как-то так:
NAME TYPE SIZE USED PRIO
/swapfile file 8G 2,8M -2
Проверка, что файл подкачки активирован постоянно
В файле /etc/fstab
должны быть следующая строка:
/swapfile none swap sw 0 0
Если нет - добавляем:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab