如何在linux上完全清除文件系统的缓存?

9 linux filesystems linux-kernel

在一次性能测试中,我想绕过linux系统缓存的影响(包括页面缓存/inode缓存等)。

我尝试过 O_DIRECT 标志,但结果证明直接 I/O 仍然“享受”某些缓存的效果。

有没有彻底关闭系统缓存效果的方法?

Kar*_*ath 14

(它实际上下降了..)sync先运行,然后

免费页面缓存:

echo 1 > /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)

免费的 dentry 和 inode:

echo 2 > /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)

免费页面缓存、dentries 和 inode:

echo 3 > /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)

然后你可以从一个干净的缓存开始,但当然缓存仍然有效。