posix_fadvice / POSIX_FADV_DONTNEED 在 Linux 中起作用吗?

posix_fadvice / POSIX_FADV_DONTNEED 在 Linux 中起作用吗?

如果我只扫描一次大文件,那么我是否需要担心对页面缓存的影响,或者操作系统是否会注意避免我的扫描导致页面缓存中无意义的搅动。我想避免影响可能受益于页面缓存的其他进程。

我考虑过使用,但是关于是否在 Linux 上执行任何操作,POSIX_FADV_DONTNEED我看到了相互矛盾的建议。posix_fadvicePOSIX_FADV_DONTNEED

有人可以澄清一下吗,谢谢。

答案1

POSIX_FADV_DONTNEED在 Linux 上已考虑在内;看mm/fadvise.c在内核源代码中。每次调用 时posix_fadvise()POSIX_FADV_DONTNEED任何相应的页面缓存都会被耗尽。

作为杰蒂尔如上所述,最小化 I/O 对页面缓存影响的更好方法是使用O_DIRECT.

相关内容