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

如果对速度有超强的要求,那么 Linux 中的普通文件真的有 no 的场景可以合理使用这个标志吗?

编辑: 对日志文件的“只写”访问怎么样?

最佳答案

使用 O_DIRECT 的流式写入吞吐量比不使用时更具确定性。这是天赐之物。

将您从写入高速磁盘阵列的块设备(类似于理论上的硬件能力)中获得的流式写入吞吐量与您在同一阵列上的文件系统上的文件获得的吞吐量进行比较。确保您使用具有良好流写入性能的文件系统( xfs 是其中之一,其他一些现代的也可能是)。然后放入 O_DIRECT 看看会发生什么。我评估过的每个内核版本 + 磁盘阵列都表现出显着差异(没有 O_DIRECT 的 sd 比有的更宽)。

编辑:公平地说,我从未将 write fd 上的 O_DIRECTmmap/madvise 进行比较。

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

10-11 22:43
查看更多