【问题标题】:c - Write directly to disk, bypass page cache?c - 直接写入磁盘,绕过页面缓存?
【发布时间】:2015-02-13 01:02:51
【问题描述】:

我正在尝试确定一种方法来尽可能准确地记录写入磁盘的时间。

调用write()函数会先将文件写入页面缓存,然后系统会自动刷新到磁盘(如果我的理解正确的话)。

有没有办法绕过页面缓存?或者,该过程是否涉及写入页面缓存,然后刷新页面缓存(但是您如何计算仅刷新写入的特定数据需要多长时间)

【问题讨论】:

    标签: c caching flush disk


    【解决方案1】:

    对于 Linux,您可以使用 O_DIRECT 标志打开磁盘设备以绕过页面缓存。

    【讨论】:

    • 注意:O_DIRECT 对您可以执行的写入操作设置了许多对齐限制。如果缓冲区、文件句柄偏移或计数未正确对齐,您将在写入操作中收到 EINVAL 错误。
    • @duskwuff 是正确的。为此,您可以使用 posix_memalign 调用来获取对齐的缓冲区。
    猜你喜欢
    • 2011-01-03
    • 2011-02-20
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 2021-11-06
    • 2015-12-18
    • 2014-11-23
    相关资源
    最近更新 更多