Как настроить файл подкачки.
(заметки на память)
SWAP нужен независимо от объёма оперативной памяти.
SWAP по возможности настраивать на другой диск (для HDD).
SWAP нужен для срочного высвобождения памяти.
Настраиваем swap-файл.
1. Проверяем наличие/отсутствие:
free -h
swapon --show
3. Создаем файл подкачки (рекомендуемо больше или равно объёму оперативной памяти, см. гибернация):
Только для BTRFS (Swap-файл поддерживается BTRFS c Linux 5.0):
sudo truncate -s 0 /swapfile
sudo chattr +C /swapfile
sudo btrfs property set /swapfile compression none
(Хитрое шаманство)
Для остальных (для BTRFS продолжение):
sudo fallocate -l 16G /swapfile
sudo mkswap /swapfile
3. Устанавливаем права (доступ только root):
sudo chmod 600 /swapfile
4. Активируем:
sudo swapon /swapfile
(деактивировать: sudo swapoff -v /swapfile
)
5. Проверяем:
sudo swapon --show
6. Настраиваем fstab:
sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Дополнительные настройки:
7. Минимизируем использование:
Swappiness — свойство ядра Linux, определяющее как система будет использовать swap. Может иметь значение от 0 до 100. Процент свободной оперативной памяти при котором страницы начинают сбрасываться в свап. Для персоналки норма 60, сервер 10, на эти числа следует ориентироваться. Проверяем/изменяем/сохраняем:
cat /proc/sys/vm/swappiness
— посмотреть.
sudo sysctl vm.swappiness=n
— изменить.
echo "vm.swappiness=30"| sudo tee -a /etc/sysctl.conf
— сохранить.
(sudo nano /etc/sysctl.conf (добавить vm.swappiness = n)
)
sysctl -f
— применить.
8. SWAP с динамически изменяемым размером:
Настраивается с помощью утилиты swapspace. Она работает в фоне и при необходимости автоматически создаёт или удаляет дополнительные файлы подкачки.
9. Освобождение памяти:
Используется сочетание клавиш Alt+SysRq(PrintScreen)+F, включающее oom_killer убивающий процесс занимающий больше всего памяти.
Нужен параметр ядра kernel.sysrq=1. Смотреть так:
sysctl kernel.sysrq
Редактируем файл /etc/sysctl.conf (/etc/sysctl.d/*.conf)
.