[转]systemtap观察page_cache的使用情况
转载自系统技术非业余研究
本文链接地址: systemtap观察page_cache的使用情况
在规划服务器的内存使用的时候经常需要知道应用在理想情况下会使用多少的pagecache, 我们好预先把这个内存预留出来.
这个值操作系统没有提供可查看的管道,我们只能自己写个脚本来实现.
下面的systemtap脚本每隔N秒显示下当前os下头10个文件占用多少的pagecache, 降序排列.
$ cat > pagecache.stp global __filenames global pagecache probe vfs.add_to_page_cache { pagecache[ino]++; } probe vfs.remove_from_page_cache { pagecache[ino]--; } probe generic.fop.open { __filenames[ino]=filename } function find_filename(ino) { if (ino in __filenames) return __filenames[ino]; else return sprintf("N/A ino:%d", ino); } probe timer.s($1) { ansi_clear_screen(); printf ("%50s %10s\n", "FILENAME", "COUNT") foreach( pages = ino in pagecache- limit 10) { if(pages) printf("%50s %10d\n", find_filename(ino), pages); } } CTRL+D $ sudo sysctl vm.drop_caches=3 $ sudo stap pagecache.stp 1 FILENAME COUNT librpmdb-4.4.so 173 libpython2.4.so.1.0 153 libxml2.so.2.6.26 107 N/A ino:68781310 100 __m2crypto.so 91 libglib-2.0.so.0.1200.3 64 libperl.so 53 librpm-4.4.so 52 pyexpat.so 45 libreadline.so.5.1 38 #拷贝个文件看看pagecache的变化 $ dd if=/dev/zero of=test.dat count=1024 bs=4096