What does drop_caches do?

Prateek Sharma prateeks at cse.iitb.ac.in
Thu Jul 28 03:06:01 EDT 2011


Hello everyone,
 	I've been trying to understand the role of the pagecache, starting with 
drop_caches and observing what it does.
 	From my understanding of the code (fs/drop_caches.c) , it walks over all 
the open files/inodes, and invalidates all the mapped pages. Pages which are 
*not* dropped are either dirty,in-use,anonymous,mapped(to pagetable),or 
writeback) . Is my understanding correct?
 	But, when i run drop_caches, there are still some pages which show up as 
cached. Why arent all cache pages getting dropped ?
 	My confusion runs much deeper. What exactly constitutes the pagecache? 
All filebacked pages ? mmaped files ? If i copy a bunch of files, why does my 
cache get polluted with those pages?

Thanks for reading. I'd be grateful if someone can enlighten me about some 
pagecache internals .

(Please keep me CC'ed)

<begin experiment>
root at tripitz:/etc/apt# free -m
              total       used       free     shared    buffers     cached
Mem:          1995       1854        140          0         79        700
-/+ buffers/cache:       1074        920
Swap:         4767        762       4005
root at tripitz:/etc/apt# echo 3 > /proc/sys/vm/drop_caches
root at tripitz:/etc/apt# free -m
              total       used       free     shared    buffers     cached
Mem:          1995       1373        621          0          0        363
-/+ buffers/cache:       1009        985
Swap:         4767        762       4005

<end experiment>



More information about the Kernelnewbies mailing list