Создаём файл подкачки swap
Проверяем есть ли у нас swap файлы
sudo swapon --show
Проверяем сколько свободного места на диске
df -h
Создаём swap файл
sudo fallocate -l 1G /swapfile
Смотрим объём созданного файла
ls -lh /swapfile
Включение swap-пространства
От имени администратора ограничиваем доступ к файлу только для root
sudo chmod 600 /swapfile
Проверяем права на фвйл
ls -lh /swapfile
Создаём из данного файла swap
sudo mkswap /swapfile
Запускаем созданный файл
sudo swapon /swapfile
После перезагрузки
Итак, теперь swap пространство включено, но при перезапуске сервер не будет запускать его автоматически. Чтобы изменить это, отредактируйте файл fstab. Создайте резервную копию файла на всякий случай:
sudo cp /etc/fstab /etc/fstab.bak
Добавьте данные о swap в конец файла.
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Настройка swap
swap файл обладает возможностью более тнокой настройки.
Параметр swappiness
Параметр swappiness задает частоту использования системой swap-пространства. Значение swappiness выражается числом от 0 до 100 и измеряется в процентах.
Если это значение близко к нулю, ядро не будет передавать данные в swap без крайней необходимости. Помните, взаимодействие со swap-файлом затратно для сервера, поскольку требует больше ресурсов, чем взаимодействие с оперативной памятью, что, следовательно, может привести к значительному снижению производительности. Обычно система работает продуктивнее, если не очень полагается на swap.
Если значение swappiness ближе к 100, система будет передавать в swap большое количество данных с целью сохранить больше свободного места в RAM. В зависимости от профиля памяти приложения и цели использования сервера, это может быть лучше в некоторых случаях.
Чтобы просмотреть текущее значение swappiness, введите:
cat /proc/sys/vm/swappiness
Значение 60 не так уж плохо, но для виртуального выделенного сервера лучше установить меньшее значение.
Чтобы, к примеру, задать параметру swappiness значение 10, нужно ввести:
sudo sysctl vm.swappiness=10
Данное значение будет действительным до следующей перезагрузки. Чтобы значение сохранялось и после перезагрузки сервера, откройте файл /etc/sysctl.conf в текстовом редакторе:
sudo nano /etc/sysctl.conf
Добавьте в конец файла:
vm.swappiness=10
Сохраните и закройте файл.
Параметр vfs_cache_pressure
Еще одна важная опция – это vfs_cache_pressure. Она управляет склонностью ядра восстанавливать память, которая используется для кэширования каталогов и инодов объектов.
В основном, это данные доступа к файловой системе. Как правило, найти их не так просто, а запрашиваются они часто, так что использовать кэш-память в этом случае очень удобно. Чтобы узнать текущее значение этого параметра, можно запросить файловую систему proc:
cat /proc/sys/vm/vfs_cache_pressure
Согласно текущим настройкам, система удаляет иноды из кэша слишком быстро. Установив меньшее значение (например, 50), система будет хранить информацию дольше:
sudo sysctl vm.vfs_cache_pressure=50
Опять же, это значение действительно только для текущей сессии. Чтобы сделать его постоянным, нужно (как и в случае со swappiness) открыть конфигурационный файл sysctl в текстовом редакторе:
sudo nano /etc/sysctl.conf
и добавить в него строку:
vm.vfs_cache_pressure=50
Сохраните и закройте sysctl.