Linux Swap and Swapfile

From WikiMLT
Revision as of 07:30, 26 September 2022 by Spas (talk | contribs) (Text replacement - "mlw-continue" to "code-continue")

Swap is a space on a disk that is used when the amount of phys­i­cal RAM mem­o­ry is full. When a Lin­ux sys­tem runs out of RAM, in­ac­tive pages are moved from the RAM to the swap space.

Swap space can take the form of ei­ther a ded­i­cat­ed swap par­ti­tion or a swap file. In most cas­es when run­ning Lin­ux on a vir­tu­al ma­chine (VPS) a swap par­ti­tion is not present so the on­ly op­tion is to cre­ate a swap file.

Add/​​​Remove Swap­file Short Guide

Swap On

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo nano /etc/fstab
/swapfile swap swap defaults 0 0

If fal­lo­cate is not in­stalled or you get an er­ror mes­sage say­ing fal­lo­cate failed: Op­er­a­tion not sup­port­ed then use the fol­low­ing com­mand to cre­ate the swap file:

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576

Swap Off

sudo swapoff -a     # sudo swapoff /swapfile
sudo rm -f /swapfile
sudo nano /etc/fstab
#/swapfile swap swap defaults 0 0

Check the swap and its us­age

sudo swapon --show
sudo free -h

Swap On/​​​Off Scripts

swap-on.sh
#!/bin/bash

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo sed 's_^#/swapfile_/swapfile_' /etc/fstab -i

echo
sudo swapon --show
echo
sudo free -h
swap-off.sh
#!/bin/bash

sudo swapoff /swapfile
sudo rm -f /swapfile
sudo sed 's_^/swapfile_#/swapfile_' /etc/fstab -i

echo
sudo swapon --show
echo
sudo free -h

Ad­just­ing the Swap­pi­ness Val­ue

Swap­pi­ness is a Lin­ux ker­nel prop­er­ty that de­fines how of­ten the sys­tem will use the swap space. Swap­pi­ness can have a val­ue be­tween 0 and 100. A low val­ue will make the ker­nel to try to avoid swap­ping when­ev­er pos­si­ble while a high­er val­ue will make the ker­nel to use the swap space more ag­gres­sive­ly.

The de­fault swap­pi­ness val­ue is 60. You can check the cur­rent swap­pi­ness val­ue by typ­ing the fol­low­ing com­mand:

cat /proc/sys/vm/swappiness
60

While the swap­pi­ness val­ue of 60 is OK for Desk­tops, for pro­duc­tion servers you may need to set a low­er val­ue. For ex­am­ple, to set the swap­pi­ness val­ue to 10, type:

sudo sysctl vm.swappiness=10

To make this pa­ra­me­ter per­sis­tent across re­boots ap­pend the fol­low­ing line to the /etc/sysctl.conf file:

sudo nano /etc/sysctl.conf
vm.swappiness=10

The op­ti­mal swap­pi­ness val­ue de­pends on your sys­tem work­load and how the mem­o­ry is be­ing used. You should ad­just this pa­ra­me­ter in small in­cre­ments to find an op­ti­mal val­ue.

Ref­er­ences