三星 SSD 980 PRO 最高速度可达 510MB/s

三星 SSD 980 PRO 最高速度可达 510MB/s

我有一块三星 SSD 980 PRO (PCIe 4.0 NVMe M.2),其写入速度上限约为 510 MB/s(见下面的测试详情),这让我得出结论,它不是通过 NVMe 接口连接的,而是通过 SATA 接口连接的,SATA 接口有 6 Gb/s 的限制,或者不使用 PCIe 4.0。我的一个朋友有一块完全相同的 SSD,他用同样的测试得到了约 1150 MB/s 的速度,所以显然我的系统中没有利用驱动器的潜力。

主板:华硕 Rog Strix X570-F Gaming(https://rog.asus.com/motherboards/rog-strix/rog-strix-x570-f-gaming-model/spec

SSD 安装在 M.2_1 插槽中。根据 MB 规格,无论连接的其他 PCIe 设备数量有多少,两个 M.2 插槽都通过 PCIe 4.0 x4 通道与 CPU 连接。遗憾的是,我无法找到有关此主板中实际通道分布的详细信息。我在 X16_1 插槽中安装了显卡,在 X16_3 中安装了 USB 卡,在 X1_2 中安装了 WIFI 卡。据我了解手册,X16_1 插槽占用了 CPU 直接通道,X16_3 和 X1_2 插槽通过 X570 芯片组路由,这不会影响 M.2 插槽的性能。

nvme-cli工具向我显示了驱动器,BIOS 将驱动器列为 NVMe,其设备路径为 /dev/nvme0n1,所以我猜测实际上使用的是 NVMe 接口而不是 SATA。

也许它没有使用 PCIe 4.0,但我不确定如何找出这一点。我是否遗漏了任何设置或配置问题?

PC 规格 (inxi -F):

System:
  Host: amdx1 Kernel: 5.13.0-27-generic x86_64 bits: 64 Desktop: Cinnamon 5.0.7 
  Distro: Linux Mint 20.2 Uma 
Machine:
  Type: Desktop Mobo: ASUSTeK model: ROG STRIX X570-F GAMING v: Rev X.0x 
  serial: <superuser/root required> UEFI: American Megatrends v: 4002 date: 06/15/2021 
CPU:
  Topology: 16-Core model: AMD Ryzen 9 5950X bits: 64 type: MT MCP L2 cache: 8192 KiB 
  Speed: 2196 MHz min/max: 2200/3400 MHz Core speeds (MHz): 1: 2202 2: 2573 3: 2800 
  4: 2240 5: 2212 6: 2238 7: 2200 8: 2217 9: 2198 10: 2193 11: 2199 12: 2196 13: 2199 
  14: 2197 15: 2196 16: 2213 17: 2237 18: 2242 19: 2213 20: 2464 21: 2198 22: 2223 
  23: 2200 24: 2199 25: 2230 26: 2203 27: 2200 28: 2198 29: 2210 30: 2233 31: 2239 
  32: 2214 
Graphics:
  Device-1: NVIDIA GP104 [GeForce GTX 1070] driver: nvidia v: 510.60.02 
  Display: x11 server: X.Org 1.20.13 driver: nvidia 
  resolution: 1920x1080~60Hz, 1920x1080~60Hz 
  OpenGL: renderer: NVIDIA GeForce GTX 1070/PCIe/SSE2 v: 4.6.0 NVIDIA 510.60.02 
Audio:
  Device-1: NVIDIA GP104 High Definition Audio driver: snd_hda_intel 
  Device-2: AMD Starship/Matisse HD Audio driver: snd_hda_intel 
  Device-3: Sunplus Innovation FHD Camera type: USB driver: snd-usb-audio,uvcvideo 
  Sound Server: ALSA v: k5.13.0-27-generic 
Network:
  Device-1: Realtek RTL8192EE PCIe Wireless Network Adapter driver: rtl8192ee 
  IF: wlp5s0 state: down mac: 5c:a6:e6:ee:9b:30 
  Device-2: Intel I211 Gigabit Network driver: igb 
  IF: enp6s0 state: up speed: 1000 Mbps duplex: full mac: f0:2f:74:de:91:5d 
  IF-ID-1: br-4733bfab680b state: down mac: 02:42:c8:df:41:69 
  IF-ID-2: docker0 state: down mac: 02:42:20:7a:52:0e 
  IF-ID-3: virbr0 state: down mac: 52:54:00:46:f4:49 
  IF-ID-4: virbr0-nic state: down mac: 52:54:00:46:f4:49 
Drives:
  Local Storage: total: 8.64 TiB used: 282.07 GiB (3.2%) 
  ID-1: /dev/nvme0n1 vendor: Samsung model: SSD 980 PRO 1TB size: 931.51 GiB 
  ID-2: /dev/sda vendor: Seagate model: ST2000DM001-1ER164 size: 1.82 TiB 
  ID-3: /dev/sdb vendor: Samsung model: SSD 850 EVO 500GB size: 465.76 GiB 
  ID-4: /dev/sdc vendor: Seagate model: ST6000VX0023-2EF110 size: 5.46 TiB 
Partition:
  ID-1: / size: 915.40 GiB used: 282.04 GiB (30.8%) fs: ext4 dev: /dev/nvme0n1p2 
Sensors:
  System Temperatures: cpu: 52.8 C mobo: N/A gpu: nvidia temp: 47 C 
  Fan Speeds (RPM): N/A gpu: nvidia fan: 34% 
Info:
  Processes: 487 Uptime: 20m Memory: 62.71 GiB used: 3.37 GiB (5.4%) Shell: bash 
  inxi: 3.0.38

随机写入速度测试命令:

sudo fio --bs=4k --ioengine=libaio --iodepth=32 --size=10g --direct=1 --runtime=60 --filename=/tmp/testfile.tmp --rw=randwrite --numjobs=1 --name=test

输出:

test: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=32
fio-3.16
Starting 1 process
test: Laying out IO file (1 file / 10240MiB)
Jobs: 1 (f=1): [w(1)][100.0%][w=519MiB/s][w=133k IOPS][eta 00m:00s]
test: (groupid=0, jobs=1): err= 0: pid=3024: Tue May 10 13:16:09 2022
  write: IOPS=125k, BW=486MiB/s (510MB/s)(10.0GiB/21051msec); 0 zone resets
    slat (usec): min=2, max=781, avg= 7.10, stdev= 4.02
    clat (usec): min=12, max=2105, avg=249.37, stdev=33.39
     lat (usec): min=14, max=2162, avg=256.57, stdev=34.21
    clat percentiles (usec):
     |  1.00th=[  212],  5.00th=[  229], 10.00th=[  233], 20.00th=[  237],
     | 30.00th=[  239], 40.00th=[  243], 50.00th=[  245], 60.00th=[  247],
     | 70.00th=[  251], 80.00th=[  255], 90.00th=[  265], 95.00th=[  277],
     | 99.00th=[  388], 99.50th=[  400], 99.90th=[  519], 99.95th=[  685],
     | 99.99th=[ 1336]
   bw (  KiB/s): min=453504, max=556584, per=99.93%, avg=497758.93, stdev=19901.89, samples=42
   iops        : min=113376, max=139146, avg=124439.71, stdev=4975.46, samples=42
  lat (usec)   : 20=0.01%, 50=0.01%, 100=0.01%, 250=68.31%, 500=31.56%
  lat (usec)   : 750=0.08%, 1000=0.02%
  lat (msec)   : 2=0.03%, 4=0.01%
  cpu          : usr=7.28%, sys=59.19%, ctx=2702826, majf=0, minf=12
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=100.0%, >=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=0,2621440,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):
  WRITE: bw=486MiB/s (510MB/s), 486MiB/s-486MiB/s (510MB/s-510MB/s), io=10.0GiB (10.7GB), run=21051-21051msec

Disk stats (read/write):
  nvme0n1: ios=2612/2600827, merge=2170/51645, ticks=296/23740, in_queue=24070, util=99.59%

答案1

  1. 宣传的写入速度是指写入 NVMe 的板载 DRAM 缓存(如果有)或伪 SLC 缓存时的速度。持续速度要慢得多。例如,驱动器可以以 4000MB/s 的速度写入 10-20 秒,但随后切换到以 1400MB/s 的速度写入。对于实际工作负载来说,高端数字可能有点难以获得,您可能需要更改 fio 数据块大小,并确保您使用的是顺序写入。

  2. 写入均衡过程会占用大量写入带宽。驱动器内部可以全速写入,但您只能看到 1/2 甚至 1/4,因为驱动器正在后台移动擦除块。顺序写入应该更快,但您的文件系统不一定会将它们作为顺序写入驱动器,因此在某些情况下,即使顺序写入也会出现此问题。您可以尝试写入不同的块大小(您可以使用 blktrace 或 biosnoop 跟踪块请求)。

在 NVMe 基准测试中,您经常会看到驱动器在不同的写入速度之间切换:

  • 写入缓存速度例如 4000MB/s
  • 维持速度。例如 1000MB/s
  • 垃圾收集速度例如 300MB/s

答案2

您的 SSD 没有 SATA 模式。它只能在 NVMe 上运行,您的主板支持在 M.2 插槽中使用任何 PCIe 卡与第三代 Ryzen CPU 的组合(如您拥有的)。
(您也可以从 inxi 输出中看出:/dev/nvme0n1 表示它确实是 NVMe)

因此,明显的减速不是由于 SATA 模式造成的。还有其他原因。
但您自己已经得出了这个结论。

需要检查以下几点:
首先,检查所有 Bios 设置,确保没有 PCIe 回退设置。
如果超频/过压/欠压:请恢复到标准状态,看看是否有区别。
确保您拥有最新的 Linux 内核。(我不了解当前的 Linux 情况,因此无法判断 5.13 是否是最新的。)

最后,但并非最不重要的一点:在 Linux 特定论坛上提问。在 Linux 方面,你会在那里找到比这里更多的专家。

相关内容