告诉内核强烈缓存特定目录

sil*_*iot 6 filesystem performance cache

这个问题是对Optimizing EXT4 performance的重新表述。

我有一个包含构建文件的目录,大多数非常小,但总共 5.6G。

我通常一遍又一遍地访问相同的文件子集(几千个,几十兆字节)。子集每天都在变化(不同的项目,不同版本的库)。当我使用它时需要更长的时间似乎是磁盘搜索。例如,如果我du第二次执行两次,则所需时间与第一次相同,并且磁盘活动相似。

理想情况下,我想告诉内核将 X Mb 分配给元数据,将 Y 分配给文件夹中的数据,例如 nfs 缓存的选项。

除了从本地主机挂载 nfs 并将其缓存到 ramdisk 之外,是否有可能以某种方式实现?

Col*_*ing 3

我认为这是一个没有肯定答案的问题。Linux 没有提供任何机制来指定在每个目录上为 ext2、ext3、ext4、xfs 等文件系统缓存多少元数据和数据。


小智 1

我相信您想要的是对您知道第二天需要的数据进行完整的 readahead() 和/或 posix_fadvise() 。

如果您不知道或者结果数据太大而无法缓存,那么您已经知道答案了。内核不会缓存所有内容,因为没有足够的内存。