How to identify NVME drive types and test throughput

Dmitry Nosachev / CC BY-SA (https://creativecommons.org/licenses/by-sa/4.0)

Start by identifying the NVME drive type (“nvme list“) since the NVME drives use the nvme protocol, they will not sshow up in the output of lsscsi

Identify NVME

Identify the nvme drives using “nvme list”

nutanix@NTNX-18SM3E420118-A-CVM:10.56.6.36:~/tmp$ sudo nvme list
Node SN Model Version Namespace Usage Format FW Rev
/dev/nvme0n1 S3HDNX0KC00137 SAMSUNG MZWLL1T6HEHP-00003 1.2 1 1.60 TB / 1.60 TB 512 B + 0 B GPNA6B3Q
/dev/nvme1n1 S3HDNX0KC00140 SAMSUNG MZWLL1T6HEHP-00003 1.2 1 1.60 TB / 1.60 TB 512 B + 0 B GPNA6B3

The drive types identified as “MZWLL1T6HEHP-00003” the marketing name is PM1725A.

The spec sheet for the PM1725A lists the following performance characteristics

Identify device specs

Random IO size=4K, Sequential=1MB

WorkloadData Sheet ResultMeasured Result
Sequential Read3,300 MB/s3,250 MB/s (QD=8)
Sequential Write2,000 MB/s2,200 MB/s (QD=8)
Random Read800,000 IOPS700,000 (QD=192)
Random Write140,000 IOPS480,000* (QD=192)

(*) It looks to me like the spec sheet is wrong for Radom Write figures. The Random write figure for 192 outstanding is more like 480,000 IOPS. My guess is that 140,000 IOPS was for a single outstanding IO on the Samsung test rig.

Measurement Script

All results are measured using this script : measure_device.sh. which ultimately calls fio.

Measured results

Sequential Read. 1MB IO, QD=8 3,275 MB/s

READ: bw=3123MiB/s (3275MB/s), 3123MiB/s-3123MiB/s (3275MB/s-3275MB/s), io=183GiB (197GB), run=60002-60002msec

Sequential Write. 1MB QD=8 2,188 MB/s

WRITE: bw=2087MiB/s (2188MB/s), 2087MiB/s-2087MiB/s (2188MB/s-2188MB/s), io=122GiB (131GB), run=60006-60006msec

Random Read. 4KB IO, QD=192 698,000 IOPS

read: IOPS=698k, BW=2728MiB/s (2861MB/s)(160GiB/60001msec)

Random Write. 4KB IO. QD=192 477,000 IOPS

write: IOPS=477k, BW=1864MiB/s (1955MB/s)(109GiB/60001msec)

CPU Intel Xeon 2.4 Ghz

model name    : Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz