GlusterFS 直接 I/O 模式

GlusterFS 直接 I/O 模式

您能帮助我理解 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

答案1

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

阅读之后我得出这样的结论:

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

答案2

您通过“mount -t glusterfs XXX:/testvol -o direct-io-mode=enable mountpoint”启用了 direct-io-mode 吗?如果是这样,则文件没有缓存在 GlusterFS 客户端内核中,换句话说,缓存是系统缓存。但是,该文件已缓存在 GlusterFS 服务器内核中。

相关内容