You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

X9DR3-F主板NVMe磁盘阵列单进程性能异常偏低的排查求助

X9DR3-F主板NVMe磁盘阵列单进程性能异常偏低的排查求助

大家好,我最近碰到了服务器上NVMe SSD条带阵列性能异常偏低的问题,折腾了好一阵没找到根源,想请各位大佬帮忙分析下。先把我的硬件配置列出来:

  • 主板:X9DR3-F
  • CPU:双路E5-2650v2
  • 内存:128GB DDR3-1333 UDIMM(16×8GB)
  • NVMe硬盘:4块MZVLB256HBHQ-000L7,通过带分路 lanes的PCIe扩展卡连接

用lspci -nvv查看,单块盘的PCIe链路是8GT/s x4,运行在PCIe 3.0模式,符合硬盘的规格——官方基准测试显示这块盘的顺序写入能到1.4GB/s左右。

单盘DD测试情况

我用dd做顺序写入测试,结果只有标称性能的三分之一,而且写完后还会停顿50秒左右,应该是数据在刷盘:

$ sudo dd if=/dev/zero of=/dev/nvme1n1 bs=16M count=1k status=progress
16726884352 bytes (17 GB, 16 GiB) copied, 27 s, 619 MB/s
1024+0 records in
1024+0 records out
17179869184 bytes (17 GB, 16 GiB) copied, 71.8953 s, 239 MB/s

RAID0阵列DD测试情况

以为是dd的问题,我把4块盘做成MD RAID0再测,结果还是不尽人意:

$ sudo mdadm --create /dev/md0 --level=0 --raid-devices=4 --force --run /dev/nvme?n1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

$ sudo dd if=/dev/zero of=/dev/md0 bs=16M count=2k status=progress
34191966208 bytes (34 GB, 32 GiB) copied, 57 s, 600 MB/s
2048+0 records in
2048+0 records out
34359738368 bytes (34 GB, 32 GiB) copied, 79.7502 s, 431 MB/s

按标称性能算,4块盘RAID0的顺序写入应该能到6GB/s左右,但实际峰值才600MB/s,平均431MB/s,差得太远了。

排除系统PCIe瓶颈的测试

为了确认不是整个系统的PCIe带宽问题,我测了无关的40Gbps网卡(x8链路,插在CPU1_SLOT1),结果能跑满40Gbps:

$ iperf -c 10.x.x.x -P 4
------------------------------------------------------------
Client connecting to 10.x.x.x, TCP port 5001
TCP window size:  325 KByte (default)
------------------------------------------------------------
[  2] local 10.x.x.x port 53750 connected with 10.x.x.x port 5001 (icwnd/mss/irtt=87/8948/196)
[  1] local 10.x.x.x port 53754 connected with 10.x.x.x port 5001 (icwnd/mss/irtt=87/8948/132)
[  3] local 10.x.x.x port 53738 connected with 10.x.x.x port 5001 (icwnd/mss/irtt=87/8948/212)
[  4] local 10.x.x.x port 53756 connected with 10.x.x.x port 5001 (icwnd/mss/irtt=87/8948/107)
[ ID] Interval       Transfer     Bandwidth
[  2] 0.0000-10.0027 sec  12.4 GBytes  10.6 Gbits/sec
[  1] 0.0000-10.0180 sec  12.7 GBytes  10.9 Gbits/sec
[  3] 0.0000-10.0179 sec  10.6 GBytes  9.05 Gbits/sec
[  4] 0.0000-10.0180 sec  10.5 GBytes  8.97 Gbits/sec
[SUM] 0.0000-10.0011 sec  46.1 GBytes  39.6 Gbits/sec

这里备注下:NVMe盘插在CPU2_SLOT4,直接挂在CPU2上,网卡在CPU1_SLOT1,CPU之间是双8GT/s QPI链路,没有额外交换机,理论上跨CPU的带宽应该够,不知道会不会是这个影响?

另外读性能也偏低,RAID0的读测试结果如下,和4块SATA HDD RAID5的性能差不多,完全没法接受:

$ sudo dd if=/dev/md0 of=/dev/null bs=16M count=8k
8192+0 records in
8192+0 records out
137438953472 bytes (137 GB, 128 GiB) copied, 214.738 s, 640 MB/s

读的时候看top,dd占了100% CPU,其中97%是系统等待,其他线程基本闲置。

FIO多线程测试情况

后来换了fio测试,把MD阵列格式化成XFS,用多线程跑,结果性能好了不少:

  • 顺序写入:带宽1348MiB/s(1414MB/s),单盘标称1GB/s,现在4块总峰值才1.4GB/s,还是差很多
  • 随机写入:带宽101MiB/s(106MB/s)
  • 顺序读取:带宽6244MiB/s(6547MB/s),这个接近标称的4×2.2GB/s(8.8GB/s),表现还可以
  • 随机读取:带宽372MiB/s(390MB/s)

多线程测试能跑起来,但单进程(比如dd)的性能实在拉胯,想请教下各位,有没有什么办法能提升单进程的性能?

备注:内容来源于stack exchange,提问作者Bryan B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 15:04:50