mirror of
https://github.com/deepseek-ai/3FS.git
synced 2026-11-05 00:47:47 +00:00
[GH-ISSUE #292] 3FS_usrbio在FIO海量小文件测试场景中的最大打开文件数不断增加的问题,导致测试用例失败:修改措施以及相关问题 #179
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
deepseek-ai/3FS#179
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @Funny-Boy-Max on GitHub (Jun 3, 2025).
Original GitHub issue: https://github.com/deepseek-ai/3FS/issues/292
近期在利用FIO测试3FS在海量小文件场景(例如1w个文件,每个文件160KB)中,发生“Bad file descriptor”问题,测试脚本如下图所示:
经查看源码,定位到3FS/benchmarks/fio_usrbio/hf3fs_usrbio.cpp代码中函数hf3fs_usrbio_open的一个错误,具体代码如图所示:
代码中在每次open一个文件时都会修改IO线程的最大openfiles数量,可能导致超出操作系统内最大可打开文件数量以及无法触发close文件操作,进而导致FIO测试失败。
目前,本人的解决方案是将上图中hf3fs_usrbio_open函数中的“td->o.open_files++;”注释掉,可以完整执行测试用例,但是目前测试结果,带宽损失严重,原因尚不可知。
相较于同配置采用libaio的ioengine,具体配置如下图,其带宽可达222MB/s(物理RDMA[mellanox cx5]带宽上限100Gb/s,磁盘合并带宽远大于网络),测试结果如下。
然而,现在使用修改后的usr_bio ioengine,带宽只能达到50.1MB/s,如下图所示。
请问此结果是否符合预期。
需要说明的是,在采用官方提供的测试单文件内随机/顺序读,libaio和usrbio的带宽释放最大可分别达到1560MB/s和9144MB/s。
@Funny-Boy-Max commented on GitHub (Jun 3, 2025):
目前本人疑惑的点在于3FS在海量小文件场景的随机读取场景,其带宽无法追平libaio,是否是因为本人的代码修改所导致。如果想利用3FS的高性能接口,有哪些建议
@Zenghao-CQ commented on GitHub (Aug 6, 2025):
3FS的元信息服务在FoundationDB的基础上提供,JuiceFS等使用redis(社区版)、自研服务(企业版),3FS的lookup等操作延迟应该会显著高于JuiceFS,可能吃亏在元信息服务上。。。方便的话可以压测上meta的lookup操作的延迟及iops