How to Flush Memory Cache and Clear Swap Space on Linux Systems
In this article we will discuss a very important technique for boosting the performance of your Linux systems. We will flush / clear Linux system’s memory cache at a periodic periods to increase the available free memory space for other processes running on your Linux box.
Linux systems have implemented a memory management efficiently and even more than that. But many times Linux systems face a low memory issues due to either the number of running processes “heavy loaded systems” or a hungry process that eating your server’s memory, this force Linux systems to use the swap space to cache a processes data, which also decrease the system performance “If swapping is enabled”.
Cache is used to keep data to use frequently by operating system always available. Reading data from cache is much much faster than reading data from hard drive “actually this a mistake to compare reading data from RAM and reading data from hard disk”.
It’s good for OSes to get data from cache in memory and if any data not found in the cache, it reads from hard disk. So it’s no problem to flush cache memory.
Here’s we will show you how to Flush Memory Cache and swap space on Linux Server.
So, Let’s start
Flush Linux Memory Buffer Cache:
There are three options available in Linux systems to flush memory cache. We listing them in a descending order of the amount of freed memory space. Use one of below as per your requirements.
- Free pagecache, dentries and inodes in cache memory
# sync; echo 3 > /proc/sys/vm/drop_caches
- Free dentries and inodes use following command
# sync; echo 2 > /proc/sys/vm/drop_caches
- Free pagecache only use following command
# sync; echo 1 > /proc/sys/vm/drop_caches
sync will flush file system buffers, it forces changed blocks to disk, update the super block. Then we drop the memory caches.
Schedule Cron to Flush Cache Regularly
Its a good idea to schedule following in crontab to automatically flush cache on regular periods. Append the following cron job to your root existing cron jobs
# crontab -e 00 */3 * * * sync; echo 3 > /proc/sys/vm/drop_caches
The above cron job will be executed every three hours and flushes all cached memory on system. This will give us the maximum amount of RAM we can free. This schduale can be used for staging and development servers,but for production servers it’s not good idea to clear cache every three hours.
For your production server’s just choose the time where only few users are connected to your server and run the above cron job once per day at that time.
Let’s assume that your server has a few /no users using it at 2 AM, so you will run the above cron job daily at 2 AM using the following command:
# crontab -e 00 02 * * * sync; echo 3 > /proc/sys/vm/drop_caches
Now, we are save from any slowness your users can face during the emptying cache time.
Find Cache Memory uses in Linux
Use free command to find out cache memory uses by Linux system. Output of free command is like below
# free -m
Sample Output
total used free shared buff/cache available Mem: 7710 5905 350 881 1455 590 Swap: 2043 1563 480
Last column is showing cached memory ( 590 MB) by system. -m option is used for showing memory details in MB’s. In our system we also use a disk swap partition, So If you want to free it also, see the following part:
How to Clear Swap Space in Linux?
If you want to clear Swap space, you may like to run the below command.
# swapoff -a && swapon -a
To free the swap partition just turn it off the turn it back on.
Here’s comes three important questions we must answer on them:
Is it a good idea to free Buffer and Cache in Linux that might be used by Linux Kernel?
When you are applying various settings and want to check, if it is actually implemented specially on I/O-extensive benchmark, then you may need to clear buffer cache. You can drop cache as explained above without rebooting the System i.e., no downtime required.
Linux is designed in such a way that it looks into disk cache before looking onto the disk. If it finds the resource in the cache, then the request doesn’t reach the disk. If we clean the cache, the disk cache will be less useful as the OS will look for the resource on the disk.
Moreover it will also slow the system for a few seconds while the cache is cleaned and every resource required by OS is loaded again in the disk-cache.
Is it good idea to auto clear RAM cache on production server?
No! it is not. Think of a situation when you have scheduled the script to clear ram cache everyday at 2am. Everyday at 2am the script is executed and it flushes your RAM cache. One day for whatsoever reason, may be more than expected users are online on your website and seeking resource from your server.
At the same time scheduled script run and clears everything in cache. Now all the user are fetching data from disk. It will result in server crash and corrupt the database. So clear ram-cache only when required,and known your foot steps, else you are a Cargo Cult System Administrator.
Is it good idea to Swap space on production server?
No! it’s not. Never use swap space on heavily loaded production server’s. Swap space can be used in staging and development servers as they just for testing and developments purposes. Instead of using swap space increase you ram size. Swap space had important rule in old days. In those days the ram memory size was too small and too expensive so came the importance of swap space.
Now a days, The ram has huge size with moderate cost so no need to use swap space on production servers, because it decreases the server performance “actually it kills the server performance”.
Summary
In this article we explained how to clear different types of memory caches “page cache,dentries and inodes” and clear swap space. According to your system you can decide when and how to free the cache memory, You can determine which cache type you will free. Finally do not user swap space in production servers.
I hope this article is good enough for you.
See you in other articles
If You Appreciate What We Do Here On Mimastech, You Should Consider:
- Stay Connected to: Facebook | Twitter | Google+
- Support us via PayPal Donation
- Subscribe to our email newsletters.
- Tell other sysadmins / friends about Us - Share and Like our posts and services
We are thankful for your never ending support.