![在持续进行fio测试的过程中,SSD顺序读带宽会变慢](https://linux22.com/image/791231/%E5%9C%A8%E6%8C%81%E7%BB%AD%E8%BF%9B%E8%A1%8Cfio%E6%B5%8B%E8%AF%95%E7%9A%84%E8%BF%87%E7%A8%8B%E4%B8%AD%EF%BC%8CSSD%E9%A1%BA%E5%BA%8F%E8%AF%BB%E5%B8%A6%E5%AE%BD%E4%BC%9A%E5%8F%98%E6%85%A2.png)
我正在使用 fio 来测试 NVMe SSD 最大顺序读取带宽,以下是我的 fio 命令参数。
fio -direct=1 -filename=/dev/nvme0n1 -name=nvme0n1-read_bw -rw=rw -ioengine=io_uring -rwmixwrite=0 -iodepth=256 -numjobs=1 -bs=128k -output-format=json -time_based=1 -runtime=100 -group_report -output=nvme0n1-read_bw.output"
一开始,fio 能达到 6400MiB/s 左右,但是运行 fio job 大约 30 秒后,fio 会降到只有 3000MiB/s 左右
我尝试将 numjobs 加速到 4,然后我将看到 fio 顺序读取带宽获得 6400MiB/s。问题是为什么 NVMe SSD 会变慢?以及为什么使用 4 个 numjobs 不会变慢? (这是一款英特尔 SSD,声称其最大顺序读取带宽为 6000MiB/s)
答案1
它看起来像是 ioengine 中的一个单线程错误——io_uring,用于基准测试。此错误已在此处报告 -https://github.com/axboe/fio/issues/1206
我建议使用 Linux 默认引擎运行基准测试 -利巴约