gpt4 book ai didi

c++ - 文件的 O_DIRECT 标志

转载 作者:太空狗 更新时间:2023-10-29 21:06:03 28 4
gpt4 key购买 nike

有一句著名的 Linus 名言,说 O_DIRECT 是无用的,甚至是 hell 。

如果一个人对速度有超强的需求,那么在 Linux 中真的没有合理使用这个标志来处理常规文件的场景吗?

编辑:日志文件的“只写”访问权限如何?

最佳答案

您可以使用 fdatasync 和 posix_fadvise( advice=POSIX_FADV_DONTNEED.

fdatasync 只是将您的数据写入光盘,但不会将其从缓存中取出。

如果您正在以极高的速度写入日志文件(并且几乎从不读取它),则日志文件的页面通常可以从缓冲区缓存中推出更多有用的页面。这是不可取的。但是使用 O_DIRECT 他们不会。

但要达到类似的效果,您可以使用 posix_fadvise 要求内核丢弃给定文件的给定范围内的所有缓存页面(如果您愿意,也可以丢弃所有缓存页面)。

例如,如果您正在编写一个高写入数据库,并且您的事务日志以 10 Mb/sec 的速度填满,您可能希望每隔 100M 左右清除一次缓存页面,以允许内存被其他东西更有用地使用。

关于c++ - 文件的 O_DIRECT 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8348580/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com