htop showing swap space on Ubuntu

Creating Swap Space on Ubuntu 18.04

Last updated on

Swap space is highly recommended. If your server ever runs out of physical memory during heavy load, some critical services such as MySQL can crash. It’s important to have some swap space where memory can expand to if really necessary.

Of course, we do not recommend you use swap space as a replacement to physical memory, especially on cloud hosting. If you are continuously eating into swap space, you should upgrade your physical memory. Swap should really only be a fall back in case memory usage peaks abnormally.

First check if the system has any swap configured.

swapon --show

If the output is blank, there is no swap configured so we can continue with this guide.

1. Create a Swap File

We will use the fallocate program to create a swap file. Best practice is to create a swap file double the amount of your RAM. If you have 1024MB of RAM, create a 2GB swap file.

sudo fallocate -l 2G /swapfile

Now check if the file was created.

ls -lh /swapfile

If it was created correctly, you should see something like:

-rw-r--r-- 1 root root 2.0G Aug 3 18:59 /swapfile

2. Configure Swap File

Make the swap file only accessible to root.

sudo chmod 600 /swapfile

Mark the file as a swap file.

sudo mkswap /swapfile

If it was successful, you should see something like

Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=00aafaee-51c9-46b3-a0fc-8240c134048e

Finally we will tell the system to start using our new swap file,

sudo swapon /swapfile

To verify that the swap is now available type:

sudo swapon --show

Result:

NAME      TYPE  SIZE USED PRIO
/swapfile file  2G   0B   -2

We can also run the following to see our new swap file alongside physical memory

free -h

Result:

              total        used        free      shared  buff/cache   available
Mem:           985M        418M        104M         26M        462M        392M
Swap:          2.0G          0B        2.0G

3. Make it Persistent

This swap will only last until next reboot. In order to make it permanent, we will add it to the /etc/fstab file.

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

4. Some Final Tweaks

For a server, you should change the swappiness value to 10.

sudo sysctl vm.swappiness=10

Now change the vfs_cache_pressure value to 50.

sudo sysctl vm.vfs_cache_pressure=50

To make these two settings persist after next reboot, edit the following file:

sudo nano /etc/sysctl.conf

Add this to the bottom.

/etc/sysctl.conf
vm.swappiness=10
vm.vfs_cache_pressure=50

Save file and exit. (Press CTRL + X, press Y and then press ENTER)

A useful way to keep an eye on your swap usage is to run htop. See: Better system monitoring with htop

Let me know in the comments if this helped. Follow me @DevAnswers or read more.

1 Star2 Stars3 Stars4 Stars5 Stars 5.00 (2 votes)

Feedback

Your email address will not be published. Required fields are marked *

We use Markdown to style comments, like on Github and Reddit.
To do a line break, type two spaces after the sentence.
You can add inline code by wrapping it in backticks: `code here`

    To do an entire block of code  
    type four spaces before the line
    and it will appear in a block like this.
    <-- four empty spaces