• Home
  • Ubuntu 18.04
    • Whats New?
    • Upgrade Ubuntu
    • Install Java
    • Install Node.js
    • Install Docker
    • Install Git
    • Install LAMP Stack
  • Tutorials
    • AWS
    • Shell Scripting
    • Docker
    • Git
    • MongoDB
  • Funny Tools
  • FeedBack
  • Submit Article
  • About Us
TecAdmin
Menu
  • Home
  • Ubuntu 18.04
    • Whats New?
    • Upgrade Ubuntu
    • Install Java
    • Install Node.js
    • Install Docker
    • Install Git
    • Install LAMP Stack
  • Tutorials
    • AWS
    • Shell Scripting
    • Docker
    • Git
    • MongoDB
  • Funny Tools
  • FeedBack
  • Submit Article
  • About Us

How to Clear Memory Cache in Linux

Written by Rahul, Updated on December 24, 2020

You can write to /proc/sys/vm/drop_caches file to instruct kernel to drop clean caches, as well as reclaimable slab objects like dentries and inodes. Once dropped, their memory becomes free.

This is not recommended to clear memory cache on Linux systems, but it is safe. But clearing cache may cause performance issue with system. 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 memory cache on Linux/Unix system via command line.

How to Clear Cache in Linux System

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

  • Clear PageCache, dentries and inodes in cache memory
    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 pagecache only in cache memory
    sync; echo 31 | sudo tee /proc/sys/vm/drop_caches 
    

Here the sync command is used to increase the number of objects freed by the drop cache. Using this a user can claim more memory by clearing more dirty objects on the system.

How to Schedule Clear Memory Cache

If you have to clear buffer cache regularly, use the cronjob do it. Schedule the following in system crontab to automatically flush cache memory on 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.

How to find Cache Memory in Linux

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

free -m 

Output:

             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.

Share it!
Share on Facebook
Share on Twitter
Share on LinkedIn
Share on Reddit
Share on Tumblr
Share on Whatsapp
Rahul
Rahul
Connect on Facebook Connect on Twitter

I, Rahul Kumar am the founder and chief editor of TecAdmin.net. I am a Red Hat Certified Engineer (RHCE) and working as an IT professional since 2009..

27 Comments

  1. Avatar Sandesh Mendon Reply
    June 27, 2020 at 4:35 pm

    Very good information, thank you

  2. Avatar Balvinder Singh Reply
    March 5, 2020 at 6:38 pm

    Thanks for the tip, it was helpful.

  3. Avatar me Reply
    November 7, 2019 at 8:35 am

    for who is having problems about permissions, you should do/try

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

    the article would be more complete if integrated with some indications on how to check the processes that “contributed” to produced that cached dimension

  4. Avatar Hemant Nagpal Reply
    October 5, 2019 at 4:57 pm

    It gives me
    -bash: /proc/sys/vm/drop_caches: Permission denied

    Which permission i need to provide, i am running it with root user.

  5. Avatar Bengt Reply
    January 16, 2019 at 1:56 pm

    It is a _bad_ idea to flush caches.

  6. Avatar Francis Rodrigues Reply
    May 31, 2018 at 5:02 pm

    I think this “crontab -e” need to be in “root” permission, right? 0.o

  7. Avatar Amiya kumar sahoo Reply
    March 7, 2018 at 11:10 am

    This command i have followed but ram cache is not clear. please help you

  8. Avatar Vigneshram Reply
    January 18, 2018 at 9:32 am

    Hi Team,

    I have scheduled the below job everyday night 23:30 in Production.
    Cache is getting reduced and immediately after 30mts, again its coming to 31 GB where my overall
    RAM memory is 36 GB which is divided into 31 GB + 5 GB of swap.

    30 23 * * * sync; echo 3 > /proc/sys/vm/drop_caches

    Is there any way, we can able to identify this abnormality of memory growth as its a production server.

    • Avatar arnold Reply
      April 11, 2018 at 12:36 pm

      Have you tried checking for inodes consumption by certain processes?? , are you running a webserver?? give me more details

      • Avatar arnold Reply
        April 11, 2018 at 12:42 pm

        And remember clearing out your buffer and cache comes with consequences, especially if you’re running a webserver. It’s not a suggested action if you want to free up memory on production servers. I’ll suggest you look into migrating or cleaning out some data from the /var and /tmp directories rather than playing around with Cache and Buffer. As well try reducing the rotational frequency of logs being archived or stored into the /VAR directory, you can do so by editing some of the CRON config files.

      • Avatar ABHAY KUMAR YADAV Reply
        May 16, 2018 at 1:14 pm

        Yes, tomcat server is running on that machine. And most of the memory is consumed by the buffer/cache. What could be the reason and how do we handle this situation in order to come out of this kind of problem.

  9. Avatar mugesh Reply
    December 13, 2017 at 8:06 am

    nice

  10. Avatar proxtik Reply
    December 11, 2017 at 9:19 pm

    Thanks! Clear and precise.

  11. Avatar there Reply
    November 1, 2017 at 10:09 am

    hi

  12. Avatar anil Reply
    September 23, 2017 at 2:27 am

    wow such a wonderful article so thanks for sharing

  13. Avatar UAN Login Reply
    July 17, 2017 at 4:36 am

    very nice article. thanks for share it with us

  14. Avatar Jimmy Reply
    July 14, 2017 at 10:56 pm

    Stated clearly, very helpful.

  15. Avatar raju ginne Reply
    December 22, 2016 at 11:49 am

    How to flush DNS Cache,

    getting 2 errors 403 permission denied LAMP stack
    SFTP SSH for wordpress incorrect keys for the user

    your help appreaciated

  16. Avatar Juan Pham Reply
    June 7, 2016 at 8:29 am

    I am getting the error that why my DNS server consume a lot of memory (run by CentOS 6.6). When this issue happen, the PCs which are assigned DNS IP of this server DNS, they can not browse internet? How can I fix this?

  17. Avatar Wood Reply
    February 2, 2016 at 10:06 am

    My memory usage is getting iuncreaseds on Application server as well as DB server can I setup cron to clear the cache every 5 hours?

    WIl it increase performance?

    • Avatar Andreas Reply
      February 2, 2016 at 12:57 pm

      Yes, it will DECREASE performance. Please refer to the kernel documentation at
      https://www.kernel.org/doc/Documentation/sysctl/vm.txt (search for drop_cache)

  18. Avatar siva Reply
    January 29, 2016 at 10:01 am

    In my Centos server the cache memory keeps on increasing. If i run cronjob everyday, is it make any problem to the server RAM.

    It will make any performance issues.

  19. Avatar Andreas Reply
    November 26, 2015 at 3:09 pm

    The advice of flushing cache is totally non-sense and only for debugging-purpose. Please refer to the Kernel documentation in

    https://www.kernel.org/doc/Documentation/sysctl/vm.txt

  20. Avatar Jayakumar Reply
    July 8, 2015 at 4:35 am

    If i run this command also. still it holds cache memory. Do u have any solution or idea to clear the cache memory.?
    [[email protected] ~]# free -g && sync; echo 3 > /proc/sys/vm/drop_caches && free -g
    total used free shared buffers cached
    Mem: 141 123 18 17 0 17
    -/+ buffers/cache: 105 35
    Swap: 19 0 19

    total used free shared buffers cached
    Mem: 141 123 18 17 0 17
    -/+ buffers/cache: 105 35
    Swap: 19 0 19
    [[email protected] ~]#

  21. Avatar T[m] Reply
    October 18, 2014 at 10:33 pm

    The system will not force active programs to disk in preference of keeping non-essential stuff in cache. It will drop the least recently used items from cache to make room for new programs rather than more your program to swap. It *will* move the inactive data for programs that are currently ‘running’ (i.e. in the wait queue) to swap if it has to. If your system is doing this it’s b/c whatever processes you are currently running are chewing up lots of RAM. Manually flushing your cache won’t do a thing. And this is LINUX not windows, Linux will intelligently use your RAM to improve your performance rather than leaving it idle. Forcing flushes is a silly thing to do unless you are running benchmarking programs multiple times.

  22. Avatar Ted G Reply
    August 14, 2014 at 2:16 am

    Thanks! Clear and precise.

  23. Avatar Sergio Reply
    July 10, 2014 at 8:14 pm

    muchas gracias!

Leave a Reply Cancel reply

Popular Posts

  • How to Install Python 3.9 on CentOS/RHEL 7 & Fedora 32/31 0
  • How To Install VNC Server on Ubuntu 20.04 1
  • How To Install NVM on macOS with Homebrew 0
  • (Solved) apt-add-repository command not found – Ubuntu & Debian 0
  • How to Install .NET Core on Debian 10 0
© 2013-2020 Tecadmin.net. All Rights Reserved | Terms  | Privacy Policy