Monday, January 29, 2018

How Much Swap Should You Use in Linux?

https://itsfoss.com/swap-size

How much should be the swap size? Should the swap be double of the RAM size or should it be half of the RAM size? Do I need swap at all if my system has got several GBs of RAM?
Perhaps these are the most common asked questions about choosing swap size while installing Linux.
It’s nothing new. There has always been a lot of confusion around swap size.
For a long time, the recommended swap size was double of the RAM size but that golden rule is not applicable to modern computers anymore. We have systems with RAM sizes up to 128 GB, many old computers don’t even have this much of hard disk.
But what swap size would you allot to a system with 32 GB of RAM?  64GB? That would be a ridiculous waste of hard disk, won’t it?
Before we see how much swap size you should have, let’s first quickly know a thing or two about swap memory. This will help you understand why swap is used.
The explanation has been simplified for (almost) everyone’s understanding.

What is swap? When is swap used?

Your system uses Random Access Memory (aka RAM) when it runs an application. When there are only a few applications running your system manages with the available RAM.
But if there are too many applications running or if the applications need a lot of RAM, then your system gets into trouble. If an application needs more memory but entire RAM is already in use, the application will crash.
Swap acts as a breather to your system when the RAM is exhausted. What happens here is that when the RAM is exhausted, your Linux system uses part of the hard disk memory and allocates it to the running application.
That sounds cool. This means if you allocate like 50GB of swap size, your system can run hundreds or perhaps thousands of applications at the same time? WRONG!
You see, the speed matters here. RAM access data in the order of nanoseconds. An SSD access data in microseconds while as a normal hard disk accesses the data in milliseconds. This means that RAM is 1000 times faster than SSD and 100,000 times faster than the usual HDD.
If an application relies too much on the swap, its performance will degrade as it cannot access the data at the same speed as it would have in RAM. So instead of taking 1 second for a task, it may take several minutes to complete the same task. It will leave the application almost useless. This is known as thrashing in computing terms.
In other words, a little swap is helpful. A lot of it will be of no good use.

Why is swap needed?

There are several reasons why you would need swap.
  • If your system has RAM less than 1 GB, you must use swap as most applications would exhaust the RAM soon.
  • If your system uses resource heavy applications like video editors, it would be a good idea to use some swap space as your RAM may be exhausted here.
  • If you use hibernation, then you must add swap because the content of the RAM will be written to the swap partition. This also means that the swap size should be at least the size of RAM.
  • Avoid strange events like a program going nuts and eating RAM.

Do you need swap if you have lots of RAM?

This is a good question indeed. If you have 32GB or 64 GB of RAM, chances are that your system would perhaps never use the entire RAM and hence it would never use the swap partition.
But will you take the chance? I am guessing if your system has 32GB of RAM, it should also be having a hard disk of 100s of GB. Allocating a couple of GB of swap won’t hurt. It will provide an extra layer of ‘stability’ if a faulty program starts misusing RAM.

Can you use Linux without swap?

Yes, you can, especially if your system has plenty of RAM. But as explained in the previous section, a little bit of swap is always advisable.

How much should be the swap size?

Now comes the big question. What should be the ideal swap space for a Linux install?
And the problem here is that there is no definite answer to this swap size question. There are just recommendations.
Different people have a different opinion on ideal swap size. Even the major Linux distributions don’t have the same swap size guideline.
If you go by Red Hat’s suggestion, they recommend a swap size of 20% of RAM for modern systems (i.e. 4GB or higher RAM).
CentOS has a different recommendation for the swap partition size. It suggests swap size to be:
  • Twice the size of RAM if RAM is less than 2 GB
  • Size of RAM + 2 GB if RAM size is more than 2 GB i.e. 5GB of swap for 3GB of RAM
Ubuntu has an entirely different perspective on the swap size as it takes hibernation into consideration. If you need hibernation, a swap of the size of RAM becomes necessary for Ubuntu.
Otherwise, it recommends:
  • If RAM is less than 1 GB, swap size should be at least the size of RAM and at most double the size of RAM
  • If RAM is more than 1 GB, swap size should be at least equal to the square root of the RAM size and at most double the size of RAM
  • If hibernation is used, swap size should be equal to size of RAM plus the square root of the RAM size
Confused? I know it is confusing. This is why I have created this table that will tell give you the Ubuntu recommended swap size based on your RAM size and hibernation need.
RAM Size Swap Size (Without Hibernation)  Swap size (With Hibernation)
 256MB  256MB  512MB
 512MB  512MB  1GB
 1GB  1GB  2GB
 2GB  1GB  3GB
 3GB  2GB  5GB
 4GB  2GB  6GB
 6GB  2GB  8GB
 8GB  3GB  11GB
 12GB  3GB  15GB
 16GB  4GB  20GB
 24GB  5GB  29GB
 32GB  6GB  38GB
 64GB  8GB  72GB
 128GB  11GB  139GB

How much swap size do you use?

The answer is never simple. As I stated earlier, for a long time, swap has been recommended to be of double the size of RAM. In fact my Dell XPS 13 Ubuntu edition has 16GB of swap size for an 8GB of RAM. So even Dell decided to go with the golden rule of swap=2xRAM.
What swap size do you prefer for your Linux system?

No comments:

Post a Comment