如何禁用linux内核中的页面缓存?

use*_*589 4 linux caching fuse linux-kernel glusterfs

内核中如何避免页面缓存,应用程序可以直接从磁盘写入或读取数据? 在内核中,如何设置?

小智 5

您将需要应用程序来调用 O_DIRECT。从手册页http://man7.org/linux/man-pages/man2/open.2.html

有了这个,您就告诉内核在执行 I/O 时不要从页面缓存中写入/读取。

O_DIRECT(自 Linux 2.4.10 起) 尽量减少进出该文件的 I/O 的缓存影响。通常这会降低性能,但它在特殊情况下很有用,例如当应用程序执行自己的缓存时。文件 I/O 直接进出用户空间缓冲区。O_DIRECT 标志本身努力同步传输数据,但不保证 O_SYNC 标志传输数据和必要的元数据。为了保证同步 I/O,除了 O_DIRECT 之外,还必须使用 O_SYNC。有关进一步讨论,请参阅下面的注释。

          A semantically similar (but deprecated) interface for block
          devices is described in raw(8).
Run Code Online (Sandbox Code Playgroud)