【问题标题】:How to flush the dirty pages of OS file cache to disks?如何将 OS 文件缓存的脏页刷新到磁盘?
【发布时间】:2019-12-17 20:37:08
【问题描述】:

Linux 利用剩余内存进行文件缓存

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

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

有没有办法将 OS 文件缓存的脏页刷新到磁盘?

谢谢

【问题讨论】:

    标签: linux file caching


    【解决方案1】:

    您可以在 Linux 上使用 sync_file_range() 来鼓励刷新,但令人困惑的是您不能使用 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 样式调用(@​​987654323@ 等)也暗示您希望写回开始发生,但与 sync_file_range() 相比,以更严厉的方式进行(因为它们也强制刷新设备非易失性缓存)...

    【讨论】:

      猜你喜欢
      • 2010-09-15
      • 2011-04-04
      • 2010-09-10
      • 2015-07-03
      • 1970-01-01
      • 2017-06-17
      • 1970-01-01
      • 2010-09-12
      • 2013-08-21
      相关资源
      最近更新 更多