皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

Linux 6.14 为 CIFS 提供更好的读取性能

通用 Internet 文件系统 (CIFS) 作为 SMB 协议的一种实现,用于通常与 Windows 系统共享文件,在 Linux 6.14 内核中将获得更好的读取性能。

作为上周发出的各种 VFS 拉取请求的一部分,Microsoft 工程师 Christian Brauner 发送了 Linux 6.14 的 VFS NETFS 更新,其中包含来自 David Howells 的一组有趣的改进。这些补丁有利于 CIFS 和 AFS (Andrew File System) 的读取性能。

Linux 6.14 为 CIFS 提供更好的读取性能

Linux 6.14 中 CIFS 的读取性能改进描述如下:

“读取性能改进旨在加快在 cifs 中检测到的一些性能损失,并在较小程度上减少 afs 中的性能损失。问题在于,在收集读取结果期间,我们会将太多工作项排队:每个单独的子请求都由其自己的工作项收集,然后,当一系列子请求与整个请求正在读取的作品集模式不完全一致时,它们必须相互交互。

虽然在各个子请求完成时处理各个子请求所覆盖的页面可能允许以最小的延迟并行唤醒作品集,但它可能会对顺序读取的唤醒进行无序排序 – 这是最常见的 I/O 模式。

然后,操作的最终评估和清理将暂停,直到最后一个 I/O 完成 – 对于同步顺序操作,这意味着工作项的弹跳只会增加延迟。

为了完成这项工作,我们做了两处更改:

(1) 现在,所有收集都在一个 “work item” 中完成,该 work item在子请求完成时逐步完成(并且还会根据需要调度重试)。

(2) 对于 readahead 和 AIO,此工作项应在工作队列上完成,并且可以与数据的最终使用者并行运行;对于同步直接读取或无缓冲读取,集合在应用程序线程中运行,而不是卸载。

然后,smb2_readv_callback() 之类的函数只是告诉 netfslib 子请求已终止;netfslib 在现场执行最少的处理 – 主要是统计计数和跟踪 – 然后排队/唤醒 worker。这简化了逻辑,因为收集器只是在子请求完成时按顺序遍历子请求,并遍历作品集(如果已缓冲),并在运行时解锁它们。它还将注入文件系统的低级 I/O 处理

的延迟量保持在最低限度netfs 使用已弃用的 PG_private_2 标志支持文件系统的方式发生了变化:作品集在完成时被标记并添加到写入请求中,并负责安排对缓存的写入。然后,无论发生什么情况,原始读取请求都可以解锁页面。

此拉取请求还带来了单 blob 对象支持,为此,必须通过单个操作从服务器读取或写入文件的内容。

通过此拉取请求提供有关 Linux 6.14 的这些改进的更多详细信息,该代码已合并到 mainline。

转自 Linux 6.14 Delivering Better Read Performance For CIFS – Phoronix

已有 0 条评论 新浪微博
已有 0 条评论 新浪微博
-->