OpenZFS 项目合并了对 ZFS 文件系统的 DirectIO (O_DIRECT) 支持,以绕过 ARC 进行读取和写入。
对 OpenZFS 的 Direct IO 支持可以追溯到 Brian Atkinson 于 2020 年发起的拉取请求。拉取请求解释:
“通过向 ZFS 添加 Direct IO 支持,可以在发出读/写操作时绕过 ARC。在某些情况下,在 ARC 中缓存数据可能会降低整体性能。特别是,由于 memcpy 向 ARC 发出的额外开销,由 NVMe 设备组成的 ZPool 的性能显示出较差的读/写性能。
在某些情况下,ARC 中的缓存可能没有意义,例如以后不会引用数据。通过使用 O_DIRECT 标志,可以避免向 ARC 复制不必要的数据。
这种 Direct IO 支持应该可以很好地提升 NVMe 存储设备的性能。
在拉取请求开放四年多后,上周它终于被合并到 OpenZFS 代码库中。