SWAP — область диска, которая выделяется системой и используется как оперативная память (RAM). Нужен ли SWAP в конкретном случае можно определить рассмотрев несколько моментов.
Как определить нужен ли swap на сервере
SWAP часто использовался когда стоимость дисков была значительно меньше стоимости оперативной памяти. Когда серверу не хватало — он начинал использовать выделенный для этого объем на диске. по факту задействовалось больше памяти, чем есть в наличии.
В настоящее время стоимость RAM сильно уменьшилась и значительно экономии не получается. Поэтому SWAP используют реже.
Минусы SWAP
- RAM быстрее постоянной памяти, т.е. даже если система задействует раздел на диске операции будут выполняться медленнее по сравнению с такими же, для которых RAM.
- SWAP лучше не применять с SSD дисками. Виртуальная память предполагает частые к ней обращения, если это RAM операции происходят быстро, их количество и частота на сроке службы компонентов не сказывается. Если же с очень большой частотой что-либо записывать на SSD диск и удалять с него — срок службы сокращается.
Плюсы SWAP
- SWAP можно использовать как и раньше для того, чтобы уменьшить расходы на содержание сервера. Особенно если приложение потребляет значительное количество памяти, файлы при этом не занимают много места.
В общем случае учитывая дешевизну RAM SWAP использовать не следует, операции в любом случае будут выполняться не максимально быстро, также будет расходоваться ресурс диска.
Используется ли SWAP можно выяснить посмотрев информацию по свободной оперативной памяти
free -m
total used free shared buff/cache available
Mem: 1870 1218 131 147 520 555
Swap: 1903 0 1903
В примере команда выполнена на Desktop системе с Ubuntu и по умолчанию подключен SWAP, при этом он не задействуется поскольку памяти хватает. В колонках total и free значение 1903, в колонке used — 0
При каком потреблении памяти система должна задействовать SWAP определяется параметром swappiness. В Ubuntu это 40%, т.е. как только будет оставаться менее 40% свободной памяти система начнет использовать диск.
Значение можно поменять
sudo mcedit /etc/sysctl.conf
От имени суперпользователя нужно выполнить sysctl -p чтобы изменения вступили в силу
sudo sysctl -p
vm.swappiness = 35
На сервере все значения изначально будут нулевыми.
Если раздел на диске, который будет использоваться как оперативная память, нужен — его можно добавить по инструкции.