centos查看cached内部文件
2014-11-14 00:00
351 查看
摘要: linux提供缓存机制,用于提升文件访问性能,但是有时候我们需要指定缓存里面都有哪些文件,此次在项目中,一直不知道为什么mongodb的res内存才20多个G,但是top命令查看的时候,cached的内容已经达到63G,特总结如何查看cached内容
查看cached内容,主要依靠systemtap
1.安装systemtap,请执行以下脚本
#!/bin/bash
WEB="http://debuginfo.centos.org/6/x86_64/"
RELEASE=`uname -r`
MACHINE=`uname -m`
PKG1="kernel-debuginfo-$RELEASE.rpm"
PKG2="kernel-debuginfo-common-$MACHINE-$RELEASE.rpm"
wget $WEB$PKG1
wget $WEB$PKG2
#Build Downloaded debuginfo packages
rpm -Uhv kernel-debuginfo-*.rpm
#Install systemtap and kernel-developemnt packages
yum install systemtap kernel-devel
2.编辑查看脚本,文件名为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);
}
}
3.在root用户下执行
stap pagecache.stp 1
这表示每隔1秒刷新下cached里面的文件,它只能查看执行脚本后添加到cached里面的文件
所以,如果需要查看某个进程导致的文件映射,需要提前先把cached里面的内容清除掉,可以
执行echo 3 > /proc/sys/vm/drop_caches可以清除cahced(先关闭导致内存映射的进程,比如
mongodb会使用内存映射,则先关闭mongodb进程)
左边列是inode号,如果是系统文件,也会直接是文件名,右边是加载的页数,每
页是4k大小,这样即可算出占的内存大小
4.根据文件inode号查找文件
得到的是文件的inode号,可以通过inode查找文件,通过执行命令:
find / -inum your_inode
红框内就是inode对应的文件
查看cached内容,主要依靠systemtap
1.安装systemtap,请执行以下脚本
#!/bin/bash
WEB="http://debuginfo.centos.org/6/x86_64/"
RELEASE=`uname -r`
MACHINE=`uname -m`
PKG1="kernel-debuginfo-$RELEASE.rpm"
PKG2="kernel-debuginfo-common-$MACHINE-$RELEASE.rpm"
wget $WEB$PKG1
wget $WEB$PKG2
#Build Downloaded debuginfo packages
rpm -Uhv kernel-debuginfo-*.rpm
#Install systemtap and kernel-developemnt packages
yum install systemtap kernel-devel
2.编辑查看脚本,文件名为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);
}
}
3.在root用户下执行
stap pagecache.stp 1
这表示每隔1秒刷新下cached里面的文件,它只能查看执行脚本后添加到cached里面的文件
所以,如果需要查看某个进程导致的文件映射,需要提前先把cached里面的内容清除掉,可以
执行echo 3 > /proc/sys/vm/drop_caches可以清除cahced(先关闭导致内存映射的进程,比如
mongodb会使用内存映射,则先关闭mongodb进程)
左边列是inode号,如果是系统文件,也会直接是文件名,右边是加载的页数,每
页是4k大小,这样即可算出占的内存大小
4.根据文件inode号查找文件
得到的是文件的inode号,可以通过inode查找文件,通过执行命令:
find / -inum your_inode
红框内就是inode对应的文件
相关文章推荐
- centos 播放mp4 ,查看pdf 文件
- Centos学习日记 查看文件类型:file
- Centos 查看路径下所有文件中是否包含指定字符
- 查看centos目录文件大小
- centos 特殊权限 各种搜索命令 lsattr ,chattr,suid,sgid,sbit,file,type是否是内置命令,stat文件属性 ,whereis,locate,find,ln 内部命令和外部命令 第五节课
- 重新安装了公司内部的文件服务器,不要FB用了centos
- 在centos6.5-64bit上安装wxHexEditor,以查看编译二进制文件
- CentOS中通过stat查看文件的元数据
- CentOs查看文件的几种方式
- Centos下重要日志文件及查看方式
- modelism仿真do文件编写(查看.v内部信号)
- Centos下查看当前目录大小及文件个数
- Linux - Centos 文件查看 如何显示最后几行 ,某几行
- CentOS 查看文件夹下文件个数 目录个数
- CentOS查看文件编码格式及文件编码转换
- centos6.3 Document Viewer 查看pdf文件中文乱码问题
- centos 下备份mysql后查看文件大小
- CentOS:查看文件的几种方式
- centos查看哪些包提供指定头文件
- eclipse中如何查看一个android模拟器的内部文件