如何将OS文件缓存的脏页刷新到磁盘?

时间:2019-04-14 23:34:34

标签: linux file caching

Linux将剩余内存用于其文件缓存

在我的应用程序(用C ++编写)中,我想不时将脏页显式地刷新到磁盘上 (使用O_DIRECT不适合我)

我尝试了fflush(),但似乎不是我想要的

有什么方法可以将OS文件缓存的脏页刷新到磁盘上?

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用sync_file_range()鼓励在Linux上进行刷新,但是令人困惑的您不能使用sync_file_range()来保证文件的持久性/数据完整性-这只是一个提示,可能帮助冲洗工作(请参阅Postgres developer Andres Freund complaining about the sync_file_range()'s manpage and the reply from filesystem developer Jan Kara的Linux Plumbers Conference 2019视频)。简而言之:它可以帮助触发冲洗,但是您需要添加/使用其他东西来了解耐用性。

我相信所有常用的文件描述符sync样式调用(fsync(), fdatasync()等)也暗示您希望开始进行写回,但是与sync_file_range()相比,写回的方式更为繁重(因为它们也会强制刷新设备非易失性缓存)...

相关问题