GlusterFS 直接 I/O 模式

HTF*_*HTF 6 glusterfs

你能帮我理解 GlusterFS 中的“direct-io-mode”吗?

我在禁用直接 I/O 模式的情况下获得了更好的读取结果 - 这是否意味着在禁用模式下它正在从缓存写入/读取 - 它是系统缓存还是 GlusterFS 缓存?推荐的方法是什么?我正在使用 4 个具有分布式复制卷的节点进行 Web 服务:

Write: dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc
echo 3 > /proc/sys/vm/drop_caches
Read: dd if=tempfile of=/dev/null bs=1M count=1024
Read-Read: dd if=tempfile of=/dev/null bs=1M count=1024

Write           Read            Re-Read
67.5 MB/s       94.9 MB/s       94.6 MB/s   direct-io-mode=enabled
65.8 MB/s       230 MB/s        226 MB/s    direct-io-mode=disabled
Run Code Online (Sandbox Code Playgroud)

小智 6

经过长时间的搜索,我找到了这篇文章。它不是特定于 glusterfs 的,但它可能有助于更好地理解:简而言之,直接 i/o 模式禁用操作系统为该挂载点实现的文件缓冲区。

读完之后,我得出了这个结论:

启用或禁用可能会为您提供更好的传输速率,具体取决于哪个应用程序正在使用您的 glusterfs 卷:如果您正在使用自己处理缓存的应用程序或数据库,您将有一些提升启用它(因为缺少第二个缓冲区的开销)。如果您只是在进行文件访问,则可能禁用它会提高您的性能,因为本地文件缓存导致网络访问减少。

  • 如果不传入,direct-io-mode 默认设置为什么? (3认同)