How to identify SSD types and measure performance.

Thomas Springer / CC0
Generic SSD Internal Layout

The real-world achievable SSD performance will vary depending on factors like IO size, queue depth and even CPU clock speed. It’s useful to know what the SSD is capable of delivering in the actual environment in which it’s used. I always start by looking at the performance claimed by the manufacturer. I use these figures to bound what is achievable. In other words, treat the manufacturer specs as “this device will go no faster than…”.


Identify SSD

Start by identifying the exact SSD type by using lsscsi. Note that the disks we are going to test are connected by ATA transport type, therefore the maximum queue depth that each device will support is 32.

# lsscsi 
[1:0:0:0] cd/dvd QEMU QEMU DVD-ROM 2.5+ /dev/sr0
[2:0:0:0] disk ATA SAMSUNG MZ7LM1T9 404Q /dev/sda
[2:0:1:0] disk ATA SAMSUNG MZ7LM1T9 404Q /dev/sdb
[2:0:2:0] disk ATA SAMSUNG MZ7LM1T9 404Q /dev/sdc
[2:0:3:0] disk ATA SAMSUNG MZ7LM1T9 404Q /dev/

The marketing name for these Samsung SSD’s is “SSD 850 EVO 2.5″ SATA III 1TB

Identify device specs

The spec sheet for this ssd claims the following performance characteristics.

Workload (Max)SpecMeasured
Sequential Read (QD=8)540 MB/s534
Sequential Write (QD=8)520 MB/s515
Read IOPS 4KB (QD=32)98,00080,00
Write IOPS 4KB (QD=32)90,00067,000

Measurement script

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

Measured Results

The measured results are quite close to the figures claimed in the spec sheet. The differences between what I observed Vs the claimed performance is probably due to a modest 2.4Ghz in my server compared to a likely 3.0Ghz CPU used to generate the reference data.

Sequential Read. 1MB IO, QD=16, 531 MB/s

READ: bw=506MiB/s (531MB/s), 506MiB/s-506MiB/s (531MB/s-531MB/s), io=14.8GiB (15.9GB), run=30031-30031mse

Sequential Write. 1MB IO QD=16 515 MB/s

WRITE: bw=491MiB/s (515MB/s), 491MiB/s-491MiB/s (515MB/s-515MB/s), io=14.4GiB (15.5GB), run=30030-30030msec

Random Read 4KB IO QD=32, 80K

read: IOPS=79.5k, BW=310MiB/s (325MB/s)(9312MiB/30001msec)

Random Write 4KB IO QD=32, 67K

write: IOPS=67.1k, BW=262MiB/s (275MB/s)(7858MiB/30001msec)

CPU Is Intel 2.4 Ghz

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