这里是free -m的输出:
total used free shared buffers cached Mem: 7188 6894 294 0 249 5945 -/+ buffers/cache: 698 6489 Swap: 0 0 0
我可以看到7GB中的近6GB(5945MB)内存用于缓存文件.我知道如何刷新缓存.我的问题是:是否可以查看哪些文件(或inode)正在缓存?
解决方法
好吧,有一种简单的方法来查看内核的页面缓存,如果您碰巧有
ftools – “fincore”为您提供有关哪些文件页面是缓存内容的一些摘要信息.
您需要提供文件名列表以检查它们在页面缓存中的存在.这是因为存储在内核页面缓存表中的信息只包含数据块引用而不包含文件名. fincore将通过inode数据解析给定文件的数据块,并搜索页面缓存表中的相应条目.
没有有效的搜索机制来执行反向 – 获取属于数据块的文件名需要读取文件系统上的所有inode和间接块.如果您需要了解存储在页面缓存中的每个文件的块,您需要提供文件系统上所有文件的列表到fincore.但这又有可能破坏测量,因为将遍历目录并获取所有inode和间接块来读取大量数据 – 将它们放入页面缓存并逐出您试图检查的页面缓存数据.