November 15, 2011

How to Clear the Linux Memory Cache

Clearning the Linux Memory cache can be a quick way to regain system resources. Writing to the drop_cache process will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free.

  • 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

As this is a non-destructive operation, and dirty objects are not freeable, the user should run “sync” first in order to make sure all cached objects are freed.

Example – Memory before:

[root@server ~]# free -m
total       used       free     shared    buffers     cached
Mem:          7860       7040        820          0        343       5076
-/+ buffers/cache:       1620       6240
Swap:         3999          0       3999

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

Memory after:

[root@server ~]# free -m
total       used       free     shared    buffers     cached
Mem:          7860       1279       6581          0          0         33
-/+ buffers/cache:       1245       6615
Swap:         3999          0       3999