3FS_usrbio在FIO海量小文件测试场景中的最大打开文件数不断增加的问题,导致测试用例失败:修改措施以及相关问题
Open
- Dominant language
- C++
- Stars
- 10.2k
- Forks
- 1.1k
- PR merge metrics
- No merged PRs in 30d
Description
近期在利用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。
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.