3FS 是一个为 AI 训练设计的分布式文件系统,USRBIO 是其原生客户端的关键功能。研究表明,usrbio 允许用户态应用程序直接提交 I/O 请求,绕过内核和 VFS,提升性能。它使用 Iov 作为大型共享内存进行零拷贝读写,Ior 则像 Linux 的 io-uring,处理批处理 I/O 请求。USRBIO 通过零拷贝和异步 I/O 减少开销,特别适合高吞吐量场景,如 AI 数据处理。
传统的FUSE客户端与服务端的数据交互流程为:

可以看到数据流在内核和用户态之间要反复拷贝才能传递到应用中。而3FS的USRBIO则卸载了数据流,直接通过3FS的SDK从远端拉取数据,结合RDMA等高效网络,做到了零拷贝。
总的来说,USRBIO 通过以下方式提升了 I/O 性能:
- 零拷贝 I/O:通过共享内存 Iov,数据无需在用户态和内核态之间拷贝,减少了内存拷贝开销。
- 批处理 I/O 请求:Ior 允许一次性提交多个 I/O 请求,减少系统调用次数。例如,设置 io_depth=1024 可以批处理 1024 个请求,显著降低上下文切换开销。
- 异步 I/O:应用程序可以继续执行其他任务,而不必等待 I/O 操作完成,提升了并发性能。
- 高性能网络支持:Iov 内存注册为 InfiniBand,支持 RDMA 等高性能网络传输,特别适合分布式 AI 训练场景。
这些特性使得 USRBIO 特别适合需要高吞吐量和低延迟的 AI 工作负载,例如处理 PB 级数据集的排序任务(如 GraySort 基准测试,3.66 TiB/分钟吞吐量)。
参考链接:
https://developer.volcengine.com/articles/7480397583173877797
https://zhuanlan.zhihu.com/p/30602759754
https://github.com/deepseek-ai/3FS/blob/main/docs/design_notes.md
https://github.com/deepseek-ai/3FS/blob/main/src/lib/api/UsrbIo.md