【发布时间】:2013-01-17 17:55:04
【问题描述】:
在 Linux 中,如何确保我的系统 write() 调用(以及类似的 write-IO 调用/变体)绕过内存/缓存/缓冲 IO 到达非易失性存储?
【问题讨论】:
标签: linux performance storage performance-testing
在 Linux 中,如何确保我的系统 write() 调用(以及类似的 write-IO 调用/变体)绕过内存/缓存/缓冲 IO 到达非易失性存储?
【问题讨论】:
标签: linux performance storage performance-testing
参见“Ensuring data reaches disk”。
简而言之,最安全的策略是在适当的时候使用 O_DIRECT + fsync()。
【讨论】:
使用 O_DIRECT 可以达到目的,但对于大多数应用程序来说效率很低,除非您在应用程序中管理整个文件缓存/缓冲。通常有两种方法可以做到这一点。
请记住,如果您使用的是 mmap,那么 msync 将是执行相同操作的更好方法。
【讨论】: