有一个著名的Linus语录,说O_DIRECT
是无用的,甚至是地狱。
如果某人对速度有超强的需求,那么在Linux中的普通文件中使用该标志并没有合理的使用场景,真的没有吗?
编辑:那么“只写”访问日志文件呢?
使用O_DIRECT
比不使用更具有确定性,可以获得更高的流式写入吞吐量。这是一件天赐之物。
将流式写入吞吐量与写入高速磁盘阵列块设备(类似于理论硬件能力)上的文件系统的吞吐量进行比较。确保使用具有良好流式写入性能的文件系统(例如xfs
,其他现代文件系统也可能如此)。然后加入O_DIRECT
并观察发生了什么。我评估过的每个内核版本和磁盘阵列都表现出了显着差异(没有O_DIRECT
时,sd范围更广)。
编辑:公平起见,我从未将write
在O_DIRECT
fd上与mmap
/madvise
进行比较。
您可以通过使用fdatasync
或Linux特定的sync_file_range
来获得相同的一致性效果。
O_DIRECT
,所以我希望确保我们不会错过任何东西。 - Cartesius00
O_DIRECT
来提高速度的呢? - Zan Lynx