Memory cache is a critical component of any Linux system, helping to improve performance by storing frequently accessed data in a fast and easily accessible location. However, the cache can also become bloated over time, leading to degraded performance. Fortunately, it is relatively easy to clear the memory cache in Linux.

Clearing the memory cache is safe but not recommended every time. It can slow down the system performance as reading files from memory is much faster than persistent disk. Since it discards cached objects from memory, it may cost a significant amount of I/O and CPU to recreate the dropped objects.

This tutorial will help you to clear the memory cache on Linux/Unix system via the command line.

How to Clear Memory Cache on Linux

There are three options available to clear the memory cache in Linux. Choose one of the below options to flush the Linux system cache memory as per your requirements.

  • Clear PageCache, dentries and inodes in cache memory. In short it will clear all the memory cache:
    sync; echo 3 | sudo tee /proc/sys/vm/drop_caches 
  • Clear dentries and inodes only in cache memory
    sync; echo 2 | sudo tee /proc/sys/vm/drop_caches 
  • Clear page cache only in cache memory
    sync; echo 1 | sudo tee /proc/sys/vm/drop_caches 

Here the first command sync is used to synchronize all the in-memory cache files to the persistent storage. The next command is separated with a “;”. Once the first command is completed, the next command will be triggered to clear cache memory.

Scheduleng the Clear Memory Cache usiing Crontab

You can also schedule a corn job to clear the cache on a regular basis. Schedule the following in system crontab to automatically flush cache memory at a regular interval.

Open a terminal and execute ‘crontab -e’ command to edit crontab:

crontab -e 

Append below entry to the file:

0 10 * *  * sync; echo 3 | sudo tee /proc/sys/vm/drop_caches

The above cron will execute on every hour and flushes the memory cache on your system.

On the production servers, it is not recommended to schedule a clear cache command. It can lead to data corruption or data loss. So beware before running the above command in a production environment.

How to find Cached Memory in Linux

Use free command to find out cache memory uses by Linux system. The output of the free command is like below

free -m 
total used free shared buffers cached Mem: 16050 15908 142 0 120 12953 -/+ buffers/cache: 834 15216 Swap: 0 0 0

Here the last column is showing cached memory (12953 MB) on Linux system. The -m option is used to show output MB’s.