pcie4.0的nvme固态读写速度低,使用dd命令测出的速度是半速?是否跟驱动啥的有关系?

CPU/显卡/打印机/USB设备等硬件问题
回复
IvanSkyWang
帖子: 13
注册时间: 2020-05-14 17:12
系统: Ubuntu 20.04 LTS

pcie4.0的nvme固态读写速度低,使用dd命令测出的速度是半速?是否跟驱动啥的有关系?

#1

帖子 IvanSkyWang » 2022-04-04 23:41

pcie4.0的nvme固态速度低,使用dd命令测出的速度是半速?是否跟驱动啥的有关系?

系统是 Ubuntu Server 20.04.4 LTS

nvme固态型号是 三星的PM9A1,官方宣称读6900mb/s、写5000mb/s,但是使用dd命令测速,结果是读写均是2gb±/s,速度连一半也不到,不知道是否跟驱动有关系呢?

主板型号是微星迫击炮B660M,主板支持pcie4.0的固态,固态装在了主硬盘位了

有知道的各位,麻烦请解答一下,谢谢各位了! :Cry
头像
astolia
论坛版主
帖子: 6506
注册时间: 2008-09-18 13:11

Re: pcie4.0的nvme固态读写速度低,使用dd命令测出的速度是半速?是否跟驱动啥的有关系?

#2

帖子 astolia » 2022-04-05 15:36

首先看你dd的参数用对没有。
dd if=/dev/zero of=file bs=4M conv=fdatasync oflag=direct
dd if=file of=/dev/null bs=4M iflag=direct
IvanSkyWang
帖子: 13
注册时间: 2020-05-14 17:12
系统: Ubuntu 20.04 LTS

Re: pcie4.0的nvme固态读写速度低,使用dd命令测出的速度是半速?是否跟驱动啥的有关系?

#3

帖子 IvanSkyWang » 2022-04-05 16:28

astolia 写了: 2022-04-05 15:36 首先看你dd的参数用对没有。
dd if=/dev/zero of=file bs=4M conv=fdatasync oflag=direct
dd if=file of=/dev/null bs=4M iflag=direct
您好!感谢解答

我用的下面两条命令测试的读写速度:
sudo time dd if=/dev/zero of=./testReadOrWrite bs=8k count=1000000
sudo time dd if=./testReadOrWrite of=/dev/null bs=8k count=1000000
命令是在百度找的,,
请问是命令的问题吗?

感谢解答!
头像
astolia
论坛版主
帖子: 6506
注册时间: 2008-09-18 13:11

Re: pcie4.0的nvme固态读写速度低,使用dd命令测出的速度是半速?是否跟驱动啥的有关系?

#4

帖子 astolia » 2022-04-07 18:16

IvanSkyWang 写了: 2022-04-05 16:28 请问是命令的问题吗?
是。
dd显示的速度,受参数影响很大。比如你把你命令中的8k换成个更大的值,显示出的速度肯定有一些提升。你再试我二楼的命令,加了忽略系统缓存和保证数据已写入硬盘的参数,显示出的速度肯定有大幅下降。再加上dd针对的是文件,又会受到文件系统的影响,特别是常用的文件系统都有日志,会导致写入速度的下降。所以dd根本不是一个用来测试硬盘读写速度的合适工具,它本身也不是设计出来干测速这件事的。

gnome-disks里的benchmark功能可以先试一下,不过它的写入测试需要硬盘/分区未挂载。

系统源里面有两个相对更合适的工具fio和bonnie++。你可以参考这篇 https://linuxreviews.org/HOWTO_Test_Dis ... big_blocks
IvanSkyWang
帖子: 13
注册时间: 2020-05-14 17:12
系统: Ubuntu 20.04 LTS

Re: pcie4.0的nvme固态读写速度低,使用dd命令测出的速度是半速?是否跟驱动啥的有关系?

#5

帖子 IvanSkyWang » 2022-04-10 21:11

astolia 写了: 2022-04-07 18:16
IvanSkyWang 写了: 2022-04-05 16:28 请问是命令的问题吗?
是。
dd显示的速度,受参数影响很大。比如你把你命令中的8k换成个更大的值,显示出的速度肯定有一些提升。你再试我二楼的命令,加了忽略系统缓存和保证数据已写入硬盘的参数,显示出的速度肯定有大幅下降。再加上dd针对的是文件,又会受到文件系统的影响,特别是常用的文件系统都有日志,会导致写入速度的下降。所以dd根本不是一个用来测试硬盘读写速度的合适工具,它本身也不是设计出来干测速这件事的。

gnome-disks里的benchmark功能可以先试一下,不过它的写入测试需要硬盘/分区未挂载。

系统源里面有两个相对更合适的工具fio和bonnie++。你可以参考这篇 https://linuxreviews.org/HOWTO_Test_Dis ... big_blocks
抱歉回复晚了,感谢您的帮助!学到了学到了

我使用了您给的链接中的fio命令:

sudo fio --name TEST --eta-newline=5s --filename=temp.file --rw=read --size=2g --io_size=10g --blocksize=1024k --ioengine=libaio --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting

结果是符合官方宣称的读取速度预期的:

TEST: (g=0): rw=read, bs=(R) 1024KiB-1024KiB, (W) 1024KiB-1024KiB, (T) 1024KiB-1024KiB, ioengine=libaio, iodepth=32
fio-3.16
Starting 1 process
TEST: Laying out IO file (1 file / 2048MiB)
Jobs: 1 (f=1)
TEST: (groupid=0, jobs=1): err= 0: pid=628230: Sun Apr 10 13:07:31 2022
read: IOPS=6404, BW=6404MiB/s (6715MB/s)(10.0GiB/1599msec)
slat (usec): min=19, max=298, avg=21.23, stdev= 9.31
clat (usec): min=654, max=11163, avg=4958.30, stdev=525.09
lat (usec): min=676, max=11185, avg=4979.56, stdev=524.60
clat percentiles (usec):
| 1.00th=[ 3720], 5.00th=[ 4817], 10.00th=[ 4817], 20.00th=[ 4817],
| 30.00th=[ 4883], 40.00th=[ 4883], 50.00th=[ 4883], 60.00th=[ 4948],
| 70.00th=[ 4948], 80.00th=[ 5014], 90.00th=[ 5080], 95.00th=[ 5407],
| 99.00th=[ 6915], 99.50th=[ 8029], 99.90th=[ 9372], 99.95th=[10421],
| 99.99th=[11076]
bw ( MiB/s): min= 6314, max= 6478, per=100.00%, avg=6404.67, stdev=83.36, samples=3
iops : min= 6314, max= 6478, avg=6404.67, stdev=83.36, samples=3
lat (usec) : 750=0.16%, 1000=0.08%
lat (msec) : 2=0.27%, 4=0.69%, 10=98.72%, 20=0.08%
cpu : usr=0.38%, sys=14.27%, ctx=10227, majf=0, minf=8203
IO depths : 1=0.1%, 2=0.1%, 4=0.2%, 8=0.4%, 16=0.8%, 32=98.5%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.1%, 64=0.0%, >=64=0.0%
issued rwts: total=10240,0,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=32

Run status group 0 (all jobs):
READ: bw=6404MiB/s (6715MB/s), 6404MiB/s-6404MiB/s (6715MB/s-6715MB/s), io=10.0GiB (10.7GB), run=1599-1599msec

Disk stats (read/write):
nvme0n1: ios=18504/27, merge=0/14, ticks=90397/41, in_queue=72988, util=93.86%

看来很多网上的教程也并不是很靠谱,还是要到专业的论坛来请教与学习,再次感谢!
回复