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


8

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

是否有工具或方法来查找高速缓存内存中的所有条目,而无需传递文件名。

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

Answers:


6

我不知道内核公开与缓存的块相关的文件名的任何地方。根据这个答案

https://stackoverflow.com/a/4941371

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.