How to Add a Swap File on Ubuntu 14.04

Kristopher Fieler
by (1posts) under Cloud Hosting
0 Comments

Introduction

In this article, we will go over how to create a swap file. A swap file is useful in instances where your cloud server does not have enough memory to perform the tasks or processes that are running. This can cause your server to start killing processes in order to free up some memory, some of which may be important such as a database or a web server!

A swap file can help you avoid these issues by utilizing hard drive space as virtual memory when regular memory is not immediately available.

Adding a Swap file on Ubuntu 14.04

We must first make sure that there is no current swap file in use. The easiest way to determine this is to run the following command:

free -m

free -m output

free -m output

 

The output will show us how much memory the system has and how much, if any, swap has been configured. In this case, the server has just been provisioned, and no swap has been configured.

In the next step, we will choose the amount of space to allocate to swap. This can be accomplished by the following command:

dd if=/dev/zero of=/swapfile bs=1024 count=2048k

In this example, we will create a 2GB swap file. There are 1024 megabytes in 1 gigabyte, so in order to achieve 2GB I will be using 2048k as the count.

NOTE: Do not forget to include the “k” at the end, otherwise you will actually be creating a 2 megabyte swap file! This is because the byte size is being multiplied by the amount specified in the count block.

dd if=/dev/zero of=/swapfile bs=1024 count=2048k

dd if=/dev/zero of=/swapfile bs=1024 count=2048k

You can verify that you created the correct size by the output. Here we see 2.1 GB so we can continue to the next step.

Now we must assign the swap file we just created to the operating system:

mkswap /swapfile

mkswap /swapfile

mkswap /swapfile

Enable the swap file and verify it is assigned:

swapon /swapfilefree -m

mkswap /swapfile

mkswap /swapfile

The output of “free -m” should now show the amount you configured for swap.

Next, we need to configure the system to enable the swap file every time the server boots. Otherwise, you would need to manually enable it every time you reboot the server using the “swapon /swapfile” command.

To accomplish this we will need to edit the /etc/fstab file using a text editor of your choice.

Add the following line to the end of the file:

/swapfile none swap sw 0 0
/swapfile none swap sw 0 0

/swapfile none swap sw 0 0

Once this has been completed, save your changes and close the file.

After this is completed, you will still need to set the “swappiness.” By default, most Linux deployments have swappiness default to 60. This means that if 40% of RAM is used and 60% is unused, the swap file will be used. Since our cloud servers are all on SSD, our default swappiness is set to 0. What this means is that if 100% of all RAM is used, then and only then does the swap file get used.

Run the command:

nano /etc/sysctl.conf

Then change or add this line:

vm.swappiness = 10

If you need a slightly higher swap, you can play with this number. Try not to go higher than 20 or 30. We recommend swappiness be set low for multiple reasons. The first reason we recommend a low swappiness is that using it too aggressively will reduce the lifespan of the SSDs. The other reason is that if swappiness is set too high, the system uses the swap file too often. This can cause system input/output conflicts as the server is too busy swapping things in and out of the swap file, rather than  using the RAM properly. On occasion, this can slow down the server more than a lack of RAM.

Then you need to restart the swap file to take effect with the new settings. You can either reboot the server or run:

swapoff -a

and

swapon -a

That’s it! You now have a persistent swap file for your cloud server.

*Note –These commands will work in a CentOS deployment as well*


Related Posts


Free Consultation

Are you searching for a solution to tackle a unique strategic challenge, but unsure where to start?

Atlantic.Net can assist your organization in developing a customized hosting plan from design to implementation.

Get Free Consultation Today!

New York, NY

100 Delawanna Ave, Suite 1

Clifton, NJ 07014

United States

Dallas, TX

2323 Bryan Street,

Dallas, Texas 75201

United States

San Francisco, CA

2820 Northwestern Pkwy,

Santa Clara, CA 95051

United States

Orlando, FL

440 W Kennedy Blvd, Suite 3

Orlando, FL 32810

United States

London, UK

14 Liverpool Road, Slough,

Berkshire SL1 4QZ

United Kingdom

Toronto, Canada

20 Pullman Ct, Scarborough,

Ontario M1X 1E4

Canada

Resources