Linux下哪些文件在消耗我们的Cache?

这篇博客探讨了如何在Linux系统中找出哪些文件正在消耗内存Cache。通过使用fincore工具,结合top和lsof命令,可以定位到占用Cache最多的进程及其打开的文件。作者指出,由于Linux的page cache机制,直接清理Cache可能会导致IO飙升,因此理解哪些文件被缓存是重要的。
摘要由CSDN通过智能技术生成

我们很容易就用free命令看到系统的cache使用量,但是你知道是哪些程序的文件在消耗cache吗?虽然cache在严格意义上也是可以当做free的内存使用的,也可以通过 echo 3>/proc/sys/vm/drop_caches来主动释放,但是你真的确定运行这条命之后,cache的数据回写到磁盘不会造成你的系统IO飙升而出现其他问题吗?你确定当前系统是可以清理page cache的吗?为了弄明白,到底是哪些文件被缓存了。今天就来写个脚本探测一下系统进程所打开的那些文件在消耗我们的cache。


先来看一下我们的内存使用情况:


1
2
3
4
# free  
               total        used         free       shared  buff /cache    available
Mem:        3882572      762388      398412      194732     2721772     2586636
Swap:


一开始我是参考余枫大拿的这篇文章(http://blog.yufeng.info/archives/688)需要用上高大上的System Tap来探测,这对于某些线上环境的机器来说是不可能给你安装kernel-debug,kernel-devel-debug 几百兆的包来跑System Tap脚本的。


然后我用到了他文章最后提到的那个工具fincore,是由国外的大拿开发的专门用来探测系统的哪些文件正在被cache。(下载地址:https://code.google.com/p/linux-ftools/source/browse/#hg%253Fstate%253Dclosed)


下载下来按照说明,简单安装./configure && make && make install,编译 生成的三个工具linux-fincore、linux-fallocate、linux-fadvise 在/usr/local/bin/目录下。


今天只用到linux-fincore,他的用法比较简单:


1
2
3
4
5
6
7
8
9
10
11
12
# linux-fincore
fincore version 1.3.0
fincore [options] files...
   -s --summarize          When comparing multiple files, print a summary report
   -p --pages              Print pages that are cached
   -o --only-cached        Only print stats  for  files that are actually  in  cache.
   -g --graph              Print a visual graph of each  file 's cached page distribution.
   -S --min-size           Require that each files size be larger than N bytes.
   -C --min-cached-size    Require that each files cached size be larger than N bytes.
  
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值