How to create swap memory on ubuntu and boost server performance?

Running multiple process and specially memory hungry resources can be challenging with limited Memory capacity. You can take less than 2 minute to add additional cushion to those process.

Dheeraj jha
Intelligent computing

--

What is swap?

Swap is area of your system hard drive which can be used by system as working memory, specially when there is shortage of RAM for processes.

Having swap can be life saving for the processes in simple web servers, processing large files and so many instance.

Yes for sure, information access will be slower in this area but operating system will prefer to store only LRU data here, least recently used data and will keep the main program running in memory and doesn’t kill it due to lack of low working memory.

Enough talk,
let’s get started.

Check current memory and swap status

sudo swapon --show

This will list you list of swap if available currently on your system.

You can verify no swap memory by running free command and see swap usage, should be 0.

free -h

Check available hard drive storage for swap

To check free hard drive space, you can run following command and see if enough space is available for swap usage.

df -h

Creating swap file

Now since we are aware of available space in our system, you can now choose size of the swap. Usually 1x or 2x size of your RAM is ideal for swap memory.

to create swap first we need to allocate memory and create file for specified size

sudo fallocate -l 2G /swapfile

This will quickly create 2G of file which we will turn into swap.

we can verify correct file size by running command

ls -lh /swapfile

Output

-rw-r--r-- 1 root root 2.0G Mar 11 11:14 /swapfile

Enable swap file

Before enabling swap on this file, we need to lock this file so that no other user than root can access/modify this.

sudo chmod 600 /swapfile

Verify permission using

ls -lh /swapfile

Output

-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile

Now we can mark this file as swap using following

sudo mkswap /swapfile

Output

Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)no label, UUID=95040bf9-5847-4c5c-acee-d1258b272e61

After making swap, lets enable swaping on this file.

sudo swapon /swapfile

Verify the same using

sudo swapon --show

output

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

Now check and verify from free command

free -h

Output

total        used        free      shared  buff/cache   available          990M        356M        207M         52M        425M        397MSwap:          2.0G          0B        2.0G

Make swap permanent

Thats it for the session, but this will not be permanent swap, once we reboot it, this storage will get deleted.

To make swap memory permanent, we need to update /etc/fstab file.

Before updating, first take backup of existing file.

sudo cp /etc/fstab /etc/fstab.bak

Add the swap file information to the end of your /etc/fstab file by typing:

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

Wow, you have done it.

You can stop here for most of the cases and your swap is ready to be used by your operating system.

Adjusting Swappiness settings

Swappiness settings means the configuration which will allow kernel to decide when to save file to swap. this value varies from 0–100.

Where 0 means kernel will not store anything in swap unless absolute necessary, and 100 means kernel can use it very often.

Based on your requirement, you can configure this value.

To check your current value, type

cat /proc/sys/vm/swappiness

output

60

You can adjust this setting using

sudo sysctl vm.swappiness=10

This setting will stay until next reboot, to make changes permanent, we will save this value to file.

Edit following file.

sudo nano /etc/sysctl.conf

At the bottom of this, add

vm.swappiness=10

Save and close the file.

You are done.

If you find this quick and useful, make sure to share, bookmark and tweet with your fellow developers so they can quickly go through it and make their life awesome. Thanks for stopping till here. Happy coding.

--

--

Dheeraj jha
Intelligent computing

DevOps Engineer | Team lead | AWS | Docker | CI/CD | Gitlab-CI