deepseek-ai / deepseek-ai/3FS

3FS_usrbio在FIO海量小文件测试场景中的最大打开文件数不断增加的问题,导致测试用例失败:修改措施以及相关问题

Open
#292 2 comments 0 reactions 0 assignees View on GitHub
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”问题,测试脚本如下图所示:

Image

经查看源码,定位到3FS/benchmarks/fio_usrbio/hf3fs_usrbio.cpp代码中函数hf3fs_usrbio_open的一个错误,具体代码如图所示:

Image

代码中在每次open一个文件时都会修改IO线程的最大openfiles数量,可能导致超出操作系统内最大可打开文件数量以及无法触发close文件操作,进而导致FIO测试失败。

目前,本人的解决方案是将上图中hf3fs_usrbio_open函数中的“td->o.open_files++;”注释掉,可以完整执行测试用例,但是目前测试结果,带宽损失严重,原因尚不可知。

相较于同配置采用libaio的ioengine,具体配置如下图,其带宽可达222MB/s(物理RDMA[mellanox cx5]带宽上限100Gb/s,磁盘合并带宽远大于网络),测试结果如下。

Image

Image

然而,现在使用修改后的usr_bio ioengine,带宽只能达到50.1MB/s,如下图所示。

Image

请问此结果是否符合预期。

需要说明的是,在采用官方提供的测试单文件内随机/顺序读,libaio和usrbio的带宽释放最大可分别达到1560MB/s和9144MB/s。

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.