Clearing cache memory in linux

How do you empty the buffers and cache on a Linux system?

Prior to doing some benchmarking work how would one free up the memory (RAM) that the Linux Kernel is consuming for its buffers and cache? Note that this is mostly useful for benchmarking. Emptying the buffers and cache reduces performance! If you’re here because you thought that freeing buffers and cache was a positive thing, go and read Linux ate my RAM!. The short story: free memory is unused memory is wasted memory.

@innocent-world — never saw these when I was searching, so it appeared to be a hole in the knowledge base on this site, and was attempting to fill it in.

@innocent-world — in looking at those 2 Q’s I think there is still room for this Q&A. This one acts as a canonical Q&A on the site. Those are fairly specific in what they’re addressing. Additionally this one shows information about analyzing the buffers & cache and also how to set the parameters using sudo. Neither of the other 2 questions address any of this.

Please read this article linuxatemyram.com If you understand the risk then you can do free && sync && echo 3 > /proc/sys/vm/drop_caches && free

1 Answer 1

Emptying the buffers cache

If you ever want to empty it you can use this chain of commands.

# free && sync && echo 3 > /proc/sys/vm/drop_caches && free total used free shared buffers cached Mem: 1018916 980832 38084 0 46924 355764 -/+ buffers/cache: 578144 440772 Swap: 2064376 128 2064248 total used free shared buffers cached Mem: 1018916 685008 333908 0 224 108252 -/+ buffers/cache: 576532 442384 Swap: 2064376 128 2064248 

You can signal the Linux Kernel to drop various aspects of cached items by changing the numeric argument to the above command.

# echo 1 > /proc/sys/vm/drop_caches 
# echo 2 > /proc/sys/vm/drop_caches 
# echo 3 > /proc/sys/vm/drop_caches 

The above are meant to be run as root. If you’re trying to do them using sudo then you’ll need to change the syntax slightly to something like these:

$ sudo sh -c 'echo 1 >/proc/sys/vm/drop_caches' $ sudo sh -c 'echo 2 >/proc/sys/vm/drop_caches' $ sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches' 

NOTE: There’s a more esoteric version of the above command if you’re into that:

$ echo "echo 1 > /proc/sys/vm/drop_caches" | sudo sh 

Why the change in syntax? The /bin/echo program is running as root, because of sudo , but the shell that’s redirecting echo’s output to the root-only file is still running as you. Your current shell does the redirection before sudo starts.

Читайте также:  Daemon tool lite linux

Seeing what’s in the buffers and cache

Take a look at linux-ftools if you’d like to analyze the contents of the buffers & cache. Specifically if you’d like to see what files are currently being cached.

fincore

With this tool you can see what files are being cached within a give directory.

fincore [options] files. --pages=false Do not print pages --summarize When comparing multiple files, print a summary report --only-cached Only print stats for files that are actually in cache. 

For example, /var/lib/mysql/blogindex :

root@xxxxxx:/var/lib/mysql/blogindex# fincore --pages=false --summarize --only-cached * stats for CLUSTER_LOG_2010_05_21.MYI: file size=93840384 , total pages=22910 , cached pages=1 , cached size=4096, cached perc=0.004365 stats for CLUSTER_LOG_2010_05_22.MYI: file size=417792 , total pages=102 , cached pages=1 , cached size=4096, cached perc=0.980392 stats for CLUSTER_LOG_2010_05_23.MYI: file size=826368 , total pages=201 , cached pages=1 , cached size=4096, cached perc=0.497512 stats for CLUSTER_LOG_2010_05_24.MYI: file size=192512 , total pages=47 , cached pages=1 , cached size=4096, cached perc=2.127660 stats for CLUSTER_LOG_2010_06_03.MYI: file size=345088 , total pages=84 , cached pages=43 , cached size=176128, cached perc=51.190476 stats for CLUSTER_LOG_2010_06_04.MYD: file size=1478552 , total pages=360 , cached pages=97 , cached size=397312, cached perc=26.944444 stats for CLUSTER_LOG_2010_06_04.MYI: file size=205824 , total pages=50 , cached pages=29 , cached size=118784, cached perc=58.000000 stats for COMMENT_CONTENT_2010_06_03.MYI: file size=100051968 , total pages=24426 , cached pages=10253 , cached size=41996288, cached perc=41.975764 stats for COMMENT_CONTENT_2010_06_04.MYD: file size=716369644 , total pages=174894 , cached pages=79821 , cached size=326946816, cached perc=45.639645 stats for COMMENT_CONTENT_2010_06_04.MYI: file size=56832000 , total pages=13875 , cached pages=5365 , cached size=21975040, cached perc=38.666667 stats for FEED_CONTENT_2010_06_03.MYI: file size=1001518080 , total pages=244511 , cached pages=98975 , cached size=405401600, cached perc=40.478751 stats for FEED_CONTENT_2010_06_04.MYD: file size=9206385684 , total pages=2247652 , cached pages=1018661 , cached size=4172435456, cached perc=45.321117 stats for FEED_CONTENT_2010_06_04.MYI: file size=638005248 , total pages=155763 , cached pages=52912 , cached size=216727552, cached perc=33.969556 stats for FEED_CONTENT_2010_06_04.frm: file size=9840 , total pages=2 , cached pages=3 , cached size=12288, cached perc=150.000000 stats for PERMALINK_CONTENT_2010_06_03.MYI: file size=1035290624 , total pages=252756 , cached pages=108563 , cached size=444674048, cached perc=42.951700 stats for PERMALINK_CONTENT_2010_06_04.MYD: file size=55619712720 , total pages=13579031 , cached pages=6590322 , cached size=26993958912, cached perc=48.533080 stats for PERMALINK_CONTENT_2010_06_04.MYI: file size=659397632 , total pages=160985 , cached pages=54304 , cached size=222429184, cached perc=33.732335 stats for PERMALINK_CONTENT_2010_06_04.frm: file size=10156 , total pages=2 , cached pages=3 , cached size=12288, cached perc=150.000000 --- total cached size: 32847278080 

With the above output you can see that there are several *.MYD, *.MYI, and *.frm files that are currently being cached.

Читайте также:  Linux run scripts on boot

Swap

If you want to clear out your swap you can use the following commands.

$ free total used free shared buffers cached Mem: 7987492 7298164 689328 0 30416 457936 -/+ buffers/cache: 6809812 1177680 Swap: 5963772 609452 5354320 

Then use this command to disable swap:

You can confirm that it’s now empty:

$ free total used free shared buffers cached Mem: 7987492 7777912 209580 0 39332 489864 -/+ buffers/cache: 7248716 738776 Swap: 0 0 0 

And now reconfirm with free :

$ free total used free shared buffers cached Mem: 7987492 7785572 201920 0 41556 491508 -/+ buffers/cache: 7252508 734984 Swap: 5963772 0 5963772 

Источник

How to Drop/Flush/Clear Cache Memory or RAM in Linux (RedHat/CentOS 7/8) in 6 Best Steps

CyberITHub

In this article, I will take you through different steps to drop/flush/clear cache memory in Linux. As you might be aware Linux has very robust Memory Management System but still if you need to clear cache memory due to certain reasons then you need to do it manually.

Someday if you ran into a problem where you find that updated data is not visible or accessible from Page Cache then you might need to clear cache memory once and check if it helps. This is required because once the cache memory is cleared then System has to access the files from Disk and hence you will get the updated data. The only downside is that clearing Cache memory will slow down your systems atleast until the cache re-build takes place.

What is Cache

Cache are usually a small reserve amount of memory used generally for faster access of disk files and directories. This Cache is generally called as Page Cache in Linux.

How Page Cache Works in Linux

Page cache is the main Linux disk Cache used in Linux. System will usually add a page based on User read process request. If the requested page is not available in the Cache then the page will be added to the disk and will be available as long as it is needed. This increases the performance of Input Output Read Operations. The only criteria is that Cache should be enough memory available. Page Cache also needs to be in sync with the disk files as new changes in the file should be synced with Cached data or it will marked as dirty and eventually will be removed from the Page Cache.

Читайте также:  Linux partition table repair

How to Check Linux Cache Memory

You might be aware of free command in Linux command line to check the current memory usage of the System. Using this command, you can check the total memory, used memory, cache or buffer memory, available memory etc as can be observed from below output. As you can see from below output, 137 MB is the current buffer/Cache memory.

[root@localhost ~]# free -m total used free shared buff/cache available Mem: 2797 144 2515 8 137 2504 Swap: 2247 0 2247

How to Drop/Flush/Clear Cache Memory or RAM in Linux (RedHat/CentOS 7/8) in 6 Best Steps 1

How to Clear Cache Memory in Linux

Example 1: How to Clear Page Cache Only

If you want to clear your disk cache then you need to run echo 1 > /proc/sys/vm/drop_caches after running sync command as shown below.

[root@localhost ~]# sync; echo 1 > /proc/sys/vm/drop_caches

Example 2: How to Clear Page Cache Every day through crontab

You can also set a small script in crontab to clear cache memory every day as shown below. Please note that clearing cache memory everyday might slow down your system. Hence this needs to be carefully setup.

#!/bin/sh sudo sh -c "sync; echo 1 > /proc/sys/vm/drop_caches"

Example 3: How to Clear dentries and inodes Only

If you want to clear your dentries and inodes then you need to run echo 2 > /proc/sys/vm/drop_caches after running sync command as shown below.

[root@localhost ~]# sync; echo 2 > /proc/sys/vm/drop_caches

Example 4: How to Clear dentries and inodes every day through crontab

You can also set a small script in crontab to clear page cache every day as shown below. Please note that clearing cache memory everyday might slow down your system. Hence this needs to be carefully setup.

#!/bin/sh sudo sh -c "sync; echo 2 > /proc/sys/vm/drop_caches"

Example 5: How to Clear Page Cache, dentries and inodes

If you want to clear your all disk cache, dentries and inodes then you need to run echo 3 > /proc/sys/vm/drop_caches after running sync command as shown below.

[root@localhost ~]# sync; echo 3 > /proc/sys/vm/drop_caches

Example 6: How to Clear Page Cache, dentries and inodes every day through crontab

You can also set a small script in crontab to clear cache memory every day as shown below. Please note that clearing cache memory everyday might slow down your system. Hence this needs to be carefully setup.

#!/bin/sh sudo sh -c "sync; echo 3 > /proc/sys/vm/drop_caches"

Popular Recommendations:-

Источник

Оцените статью
Adblock
detector