Linux flush all caches

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.

Читайте также:  About terminal server 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.

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 Flush Memory Cache and Clear Swap Space on Linux Systems

undefined

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.

Читайте также:  Install application linux terminal

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.

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
# sync; echo 2 > /proc/sys/vm/drop_caches
# 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

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.

Читайте также:  Device file types in linux

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

Источник

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