列出缓存中存在的所有文件

Joe*_*Joe 8 linux memory cache files

这个问题回答了关于如何找到缓存的一部分的问题。但是,在fincore可执行文件中,您必须传递文件名以检查它是否是缓存的一部分。

是否有工具或方法可以在不传递文件名的情况下查找属于缓存内存的所有条目。

PS:我们在嵌入式系统中运行它,运行一个 for 循环并将所有文件传递给fincore它自己是一个更耗时和内存消耗的过程。因此,我正在寻找其他方法。

Ste*_*n D 6

我不知道内核在何处公开与其缓存的块相关联的文件名。根据这个答案

/sf/answers/345896001/

即使使用自定义内核模块,您也能做的最好的事情就是获取 inode 和设备列表。从那里您可能仍然需要遍历文件系统以查找这些文件。

然后您可能会问:“但是,如何fincore知道我列出的文件?” 或者你可能不会,但我发现这个方法非常聪明,所以就在这里。该fincore工具通过执行以下操作来工作:

mincore系统调用告诉你的记忆给定的页面是否在核心内存(即不会访问时引起缺页)。由于mmap延迟加载映射文件,并且我们还没有读取任何映射区域,因此任何不会导致页面错误的页面都必须是我们缓存的一部分。