据我从所有有关 NVMe SSD 的相关文章中了解到,NVMe SSD 的好处之一是多队列。利用多个 NVMe I/O 队列,可以极大地利用 NVMe 带宽。然而,我从自己的实验中发现的并不同意这一点。
我想从 NVMe SSD 进行并行 4k 粒度顺序读取。我正在使用三星 970 EVO Plus 250GB。我使用 FIO 对 SSD 进行基准测试。我使用的命令是:
fio --size=1000m --directory=/home/xxx/fio_test/ --ioengine=libaio --direct=1 --name=4kseqread --bs=4k --iodepth=64 --rw=read --numjobs 1/2/4 --group_reporting
下面是我测试 1/2/4 并行顺序读取的结果:
numjobs=1:1008.7MB/s
numjobs=2:927 MB/s
numjobs=4:580 MB/s
即使不会增加带宽,我预计增加 I/O 队列至少会保持与单队列性能相同的带宽。带宽减少有点违反直觉。减少的可能原因是什么?
谢谢你。