这个问题是对优化 EXT4 性能。
我有一个包含构建文件的目录,大多数都非常小,但总计有 5.6G。
我通常会反复访问相同的文件子集(几千个,几十兆字节)。子集每天都会变化(不同的项目,不同版本的库)。当我使用它时,花费更长时间的似乎是磁盘寻道。例如,如果我du
第二次执行两次,则花费的时间与第一次一样多,并且磁盘活动也类似。
理想情况下,我想告诉内核将 X Mb 分配给元数据,将 Y 分配给文件夹中的数据,就像 nfs 缓存的选项一样。
除了从本地主机挂载 nfs 并将其缓存到 ramdisk 之外,还有其他方法吗?
答案1
我认为这个问题没有肯定的答案。Linux 没有提供任何机制来指定每个目录针对 ext2、ext3、ext4、xfs 等文件系统缓存多少元数据和数据。
答案2
我相信您想要的是对您知道第二天需要的数据执行完整的 readahead() 和/或 posix_fadvise()。
如果你不知道,或者结果数据太大而无法缓存,那么你已经知道答案了。内核不会缓存所有内容,因为没有足够的内存。