如何在 Linux 中操作页面缓存?

ste*_*njy 5 linux memory caching

我想知道Page Cache中缓存了哪些文件,并且想务实地释放特定文件的缓存空间。如果需要,我可以编写内核模块甚至修改内核代码。谁能给我一些线索?

caf*_*caf 5

首先,内核不维护页面缓存中所有文件的主列表,因为它不需要这些信息。相反,给定一个 inode,您可以查找关联的页面缓存页面,反之亦然。

对于每个页面缓存struct pagepage_mapping()将返回struct address_space它所属的。该host成员struct address_space标识所属struct inode,并从那里你可以得到的inode编号和设备。