首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NVMe固态硬盘的带宽会随着I/O队列数量的增加而减少

NVMe固态硬盘的带宽会随着I/O队列数量的增加而减少
EN

Stack Overflow用户
提问于 2020-12-07 15:12:20
回答 1查看 68关注 0票数 0

据我从所有关于NVMe固态硬盘的相关文章中了解到,NVMe固态硬盘的优点之一是多队列。利用多个NVMe I/O队列,可以极大地利用NVMe带宽。然而,我从自己的实验中发现的并不符合这一点。

我想从NVMe固态硬盘执行并行4k粒度顺序读取。我使用的是三星970 EVO Plus 250‘m。我使用FIO对SSD进行基准测试。我使用的命令是:

代码语言:javascript
运行
复制
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

带宽的减少有点违反直觉。减少的可能原因是什么?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-08-20 06:30:50

我想强调一下您可能会看到这个问题的3个原因:

驱动器有效队列深度过高,测试下的驱动器容量仅限于1 1GB,

  1. Precondition

首先,为每个Job指定参数--iodepth=X。这对于你的硬盘来说可能太高了。根据250 1GB驱动器的供应商规格,对于队列深度为32的情况,4KB随机读取应显示250 KIOPS (1 1GB/s)。它不会提高性能。

其次,将测试容量限制在如此小的范围(1 1GB)可能会导致SSD内部发生大量冲突。这是读取将命中同一介质物理读取单元(也称为Die,又称为LUN)的情况。将测试容量增加到整个驱动器或至少增加到50-100 at应可最大限度地减少冲突。

第三,为了获得符合规范的性能数字,需要对Drive进行相应的预处理。对于测量顺序和随机读取的情况,最好使用全驱动顺序前提条件。

文件--大小=100% --ioengine=libaio --直接=1--名称=128KB_SEQ_write_QD32 --bs=128k --iodepth=4 --rw=write --numjobs=8

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65177413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档