【发布时间】:2015-02-13 01:02:51
【问题描述】:
我正在尝试确定一种方法来尽可能准确地记录写入磁盘的时间。
调用write()函数会先将文件写入页面缓存,然后系统会自动刷新到磁盘(如果我的理解正确的话)。
有没有办法绕过页面缓存?或者,该过程是否涉及写入页面缓存,然后刷新页面缓存(但是您如何计算仅刷新写入的特定数据需要多长时间)
【问题讨论】:
我正在尝试确定一种方法来尽可能准确地记录写入磁盘的时间。
调用write()函数会先将文件写入页面缓存,然后系统会自动刷新到磁盘(如果我的理解正确的话)。
有没有办法绕过页面缓存?或者,该过程是否涉及写入页面缓存,然后刷新页面缓存(但是您如何计算仅刷新写入的特定数据需要多长时间)
【问题讨论】:
对于 Linux,您可以使用 O_DIRECT 标志打开磁盘设备以绕过页面缓存。
【讨论】:
O_DIRECT 对您可以执行的写入操作设置了许多对齐限制。如果缓冲区、文件句柄偏移或计数未正确对齐,您将在写入操作中收到 EINVAL 错误。