При работе с оперативной памятью Linux делит всё доступное пространство на куски, называемые страницами. Чтобы разгрузить занятое пространство при переполнении физической памяти, используется технология виртуальной памяти или swap, которая заключается в вынесению наименее нужных в данный момент для работы страниц на дисковое пространство в специальный раздел или файл на диске. Таким образом, использование swap позволяет использовать в системе больше оперативной памяти, чем доступно физически.
Тем не менее, такой подход имеет недостаток: жесткие диски гораздо медленнее, чем оперативная память, поэтому производительность компьютера заметно ухудшается при выходе за пределы доступной физической памяти.
Как узнать текущий размер swap
Команда swapon -s показывает, имеются ли в системе файлы/разделы подкачки и какой они составляют размер.
Как создать swap
На уже установленной системе (особенно в случае с VPS) проще всего создать файл подкачки, нежели производить манипуляции с выделением свободного места на диске под отдельный раздел. Создаем swap-файл в удобном для нас месте (например прям в корне системы):
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1024k sudo mkswap /swapfile sudo swapon /swapfile
После чего можно проверить, что система распознала новый файл, с помощью команды из первого раздела, либо с помощью проверки свободной памяти в системе free.
Добавим подключение файла при загрузке системы, для этого вставим строчку в файл /etc/fstab:
/swapfile none swap sw 0 0
Как удалить swap
Чтобы удалить swap-файл или раздел, необходимо исключить его из системы. При отключении происходит перенос содержимого в физическую память или другие источники, поэтому необходимо наличие свободных ресурсов для этой операции:
swapoff /swapfile
Управление использованием swap
Параметр vm.swappiness отвечает за процент свободной памяти, который необходимо оставлять в системе, во избежание ошибок «out-of-memory«. По умолчанию, параметр имеет значение 60. Иными словами, при 100-60=40% занятой памяти, система уже начнет использовать раздел swap. При большом количестве ОЗУ в компьютере, лучше уменьшить параметр vm.swappiness, чтобы активнее использовать незадействованную память:
echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf
Ссылки: