http://blog.yufeng.info/archives/1195
<font size="3" style="background-color: inherit;">在规划服务器的内存使用的时候经常需要知道应用在理想情况下会使用多少的pagecache, 我们好预先把这个内存预留出来.</font>

<font size="3" style="background-color: inherit;">这个值操作系统没有提供可查看的管道,我们只能自己写个脚本来实现.</font>

&nbsp;

<font size="3" style="background-color: inherit;">下面的systemtap脚本每隔N秒显示下当前os下头10个文件占用多少的pagecache, 降序排列.</font>



##vi pagecache.stp




 



#! /usr/bin/env stap



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);
}

}

###
#sysctl vm.drop_caches=3

#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