最近给家里的小主机挂了个尿袋,是绿联的 USB 3.2 外接硬盘盒,RTL9210 芯片(虽然 UASP 兼容性差,但通过折腾还是支持上了...),所以想测试下性能咋样,顺便连带两个用了半年的同型号 NVME 盘一起测了叭,作为对比记录在下面。
准备
平台:Arch Linux (6.17.1-arch1-1)
测试工具:fio
硬盘:均为 Samsung SSD 990 PRO with Heatsink 1TB
测试命令:
# 顺序读
fio --name=seqread_usb --filename=/foobar/testfile --size=1G --rw=read --bs=1M --runtime=30 --direct=1 --group_reporting
# 顺序写
fio --name=seqwrite_usb --filename=/foobar/testfile --size=1G --rw=write --bs=1M --runtime=30 --direct=1 --group_reporting
# 随机读
fio --name=randread_usb --filename=/foobar/testfile --size=1G --rw=randread --bs=4k --iodepth=32 --runtime=30 --direct=1 --group_reporting
# 随机写
fio --name=randwrite_usb --filename=/foobar/testfile --size=1G --rw=randwrite --bs=4k --iodepth=32 --runtime=30 --direct=1 --group_reporting结果
性能对比表格
结论
带宽性能:
这个 NVMe SSD 在顺序读写上可达 2.4GB/s,是USB 3.2外接硬盘(755MB/s)的 3倍以上。
随机读写带宽差距更显著,NVMe可达USB的 3.2倍(如169MB/s vs 52.6MB/s)。
延迟优势:
NVMe 平均延迟比 USB 低 52%-68%(如顺序写:1237μs vs 2578μs)。
在随机操作中,NVMe 的延迟优势尤为明显(如随机写:23μs vs 77μs)。
IOPS表现:
NVMe 的随机写 IOPS 高达 43,200,是 USB(12,800)的 3.4 倍。
即使在小文件场景下(4K 块),NVMe 仍能保持显著优势。
USB外接硬盘瓶颈:
USB 的协议开销导致顺序读写不对称(读 755MB/s vs 写 406MB/s)。
在高队列深度(QD32)时无法发挥潜力(受限于UAS 协议同步 I/O)。
💡 本质区别:
NVMe 通过 PCIe 直连 CPU,而 USB 依赖主机控制器转换协议(SCSI 命令集),导致额外的协议转换延迟和带宽限制。
NVMe 的并行队列机制(支持 64K 队列深度)使其在高并发场景下性能呈指数级优势。