Dig the IOPS

This resource was originally created by user: Davvo on the TrueNAS Community Forums Archive. Please DM this account or comment in this thread to claim it.

I get the feeling that most of us (myself included) rely too much on the 250 IOPS value used as reference in iX’s ZFS Pool White Paper, so I wrote this bit in order to clarify things a tad.

IOPS stands for input/output operations per second and represents how many read and write operations a device can do in a second. It is calculated using the following formula:

IOPS = 1000 / (Average Seek Time + Average Latency)
each value is expressed in milliseconds (ms)

If the drive is spinning rust (HDD) our IOPS value is dependent on its rotational speed because the latency is the time it takes for the disk platter to spin halfway around.
The latency is calculated by dividing 30 seconds by the RPM of the disk and multiplying the result by 1,000 milliseconds.

Latency = (30 / RPM) * 1,000

However, a SSD does not have rotating platters and as such their latency drops significantly: just put a 0.1 ms in the IOPS formula and feel the speed.

The Seek Time is the time it takes for the HDD’s head to reach the area on the disk upon which that data is stored. I’m not privy to how the process is performed in a SSD so just know that compared to spinning rust it’s way faster.

Both Average Seek Time and Average Latency are values that the manufacturer of the drive should give you but aren’t generally included in the standard information for the common user, and in order to find them you will need to dig a bit; regarding Seagate’s Ironwolf HDDs, I found those values in the product manual.​

Generally a HDD will have an IOPS range of 55-180, while a SATA SSD will have an IOPS from 3,000 to 40,000 and a NVMe SSD will be able to reach from 100,000 to 500,000 IOPS.

Here I am.

1 Like

And there you go.