原创文章,转载请注明: 转载自Erlang非业余研究
本文链接地址: 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 |
玩得开心!
Post Footer automatically generated by wp-posturl plugin for wordpress.
Related posts: