Linux(默认情况下)将有关磁盘中文件的信息缓存多长时间?

Dan*_*ola 2 linux filesystems cache

我正在测试我对某些代码所做的某些更改是否有效。为此,我需要知道文件系统缓存通常是如何工作的。我假设我们得到的是默认值,因为我们可能没有对此进行任何有趣的调整。

本质上,如果我从我的代码中询问“这个文件是否存在?”,答案会在“x”毫秒后返回。如果我后来又问了几分钟,答案回来了,快,所以我猜有一些缓存对那里发生的。

如果我想再次测试并刷新缓存,我应该等待多长时间,所以它会再次花费“很长时间”?(我想看看我是否修复了我的网络应用程序中的性能问题,但我只能知道它是否已修复,如果有关文件存在的信息未缓存,因为如果缓存,它确实运行得很快)

我知道这不是最有说服力的问题,答案可能是“视情况而定”,我要求的是理智的默认。换句话说,如果我在 3 小时或 6 小时后再次测试,我可以指望它不会被缓存吗?

据我所知......这是一个 Ubuntu 服务器,内核版本:3.9.3-x86-linode52,Ubuntu 版本:Ubuntu 12.04.3 LTS,托管在 Linode 上。文件系统是ext3

谢谢!
丹尼尔

sys*_*138 7

您可能遇到的是inode caching,因为exists只需查看 inode 即可满足查询。文件缓存有点不同。令人高兴的是,Linux并为您提供一种方法,通过该命令来删除缓存drop_caches暴露机制/proc/sys/vm/dropcaches

To free dentries and inodes:
    echo 2 > /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)