技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统运维 --> systemtap观察page_cache的使用情况

systemtap观察page_cache的使用情况

浏览:1711次  出处信息
    在规划服务器的内存使用的时候经常需要知道应用在理想情况下会使用多少的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

    玩得开心!

建议继续学习:

  1. Linux下如何知道文件被那个进程写    (阅读:4994)
  2. 在Ubuntu上使用SystemTap    (阅读:3022)
  3. 突破systemtap脚本对资源使用的限制    (阅读:2542)
  4. systemtap函数调用栈信息不齐的原因和解决方法    (阅读:2250)
  5. systemtap全局变量自动打印的原因和解决方法    (阅读:1837)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1