The following is the state of memory utilization in my desktop.
$ free -m
total used free shared buffers cached
Mem: 1987 1805 181 0 230 1298
-/+ buffers/cache: 276 1710
Swap: 1906 0 1906
We can see from the first row, "free" is reporting only 181M to be free and around 1298M has been used for disk cache.
Now let's tune /proc/sys/vm/drop_caches to release the memory used for cache. We can specify 3 values to drop_caches. Default value is 0 which tells to cache apps. The significance of 3 values are:
To free pagecache:
# echo 1 > /proc/sys/vm/drop_caches
To free dentries and inodes:
# echo 2 > /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes:
echo 3 > /proc/sys/vm/drop_caches
I will now configure drop_caches with a value of 1 to drop the cache. Let's now check the memory consumption status on the host.
$ echo "1" | sudo tee /proc/sys/vm/drop_caches
1
$ free -m
total used free shared buffers cached
Mem: 1987 879 1108 0 0 609
-/+ buffers/cache: 269 1718
Swap: 1906 0 1906
We can now see from the first row that there is a gain of free memory from 181M to 1108M and cached has reduced from 1298M to 609M. So ,we released some amount of RAM occupied by cache.
But ofcourse as earlier said we don't want to do it in a production box.
Also , this does not mean that applications will not be cached in memory any more . If we execute any application , the application will be loaded into the cache.
I tried executing the dd command to see the memory consumption. The following is the memory usage after terminating the dd command.
$ dd if=/dev/zero of=test
dd: writing to `test': No space left on device
2856305+0 records in
2856304+0 records out
1462427648 bytes (1.5 GB) copied, 25.7104 s, 56.9 MB/s
[
$ free -m
total used free shared buffers cached
Mem: 1987 1922 65 0 4 1670
-/+ buffers/cache: 247 1740
Swap: 1906 0 1906
We can see that the cache has again started filling up. So , from the above examples looks very much clear how we can release cache space by tuning the drop_cache parameter.
转载于:https://blog.51cto.com/hsuing/1687917