Input/output operations per second or IOPS (IO/s), throughput (MB/s or MiB/s), and response time (ms) are the common performance measurements for storage devices, such disk drives or RAID sets.

IOPS measure is generally used to describe storage device capability for handling random small block (4 - 8 KB in size) input-output (IO) requests that are typical for on-line transaction processing (OLTP) applications, databases, etc.

Throughput is usually used to measure device performance for large block (64 KB and more) random or sequential operations such file transfer and video/audio streaming.

Response time is the time it takes for a storage device to process an input-output request.

Conversion between IOPS and throughput can be performed as follows:

IOPS = throughput / block_size

throughput = IOPS * block_size

Where:

block_size – amount of data transferred during a single IO operation.

Let's review the factors affecting performance of hard disk drives (HDD), also know as spinning disk drives.

The time it takes for a drive to process a single IO request can be described in the following simplified form:

Tio = Ta + Tl + Tt

Where:

Ta - access time (also known as seek time) is the time required for the head assembly to be positioned on the track that contain the requested sector(s). Drive specification sheets usually list three different access time parameters:

    full stroke - time to position to the last (innermost) track/cylinder;

    single track - time to move between adjacent tracks/cylinders;

    average access time.

Tl - rotational latency is the time between positioning the head on the required track and the moment the requested sector travels under the head. Rotational latency value falls in the range of 0 (zero) and the the time equal one revolution period of the platter. Average rotational latency is equal to one-half of the one revolution period.

Tt - transfer time is the time it takes to transfer the data between the disk media and the host interface. It can be estimates as:

Tt = block_size / Rs

Where:

block_size– amount of data transferred during a single IO operation.

Rs - sustained transfer rate. Sustained transfer rate values are also listed on the drive specification sheets.

We can calculate drive's average IO processing time Tio using average access time, average latency, and sustained transfer rate parameters from the specification sheet. Than we can estimate disk's IOPS capabilities as:

IOPS = 1 / Tio

Let's take Seagate Savvio 2.5” SAS 15K rpm drive as an example. The drive has average access time of 2.9 ms for reads and 3.3 ms for writes, average rotational latency of 2.0 ms, and sustained transfer rate in the range between 151 MB/s and 202 MB/s.

Using lower minimum and maximum sustained transfer rate numbers of 151 MB/s and 202 MB/s, as well as block size of 4 KB, we can calculate Savvio's average IO processing time for small block IO operations:

for reads with minimum transfer rate:
Ta= 2.9 ms; Tl= 2.0 ms; Tt= 4 / 151 = 0.027 ms; Tio= 2.9 + 2.0 + 0.027 = 4.927 ms

for reads with maximum transfer rate:
Ta= 2.9 ms; Tl= 2.0 ms; Tt= 4 / 202 = 0.02 ms; Tio= 2.9 + 2.0 + 0.02 = 4.92 ms

for writes with minimum transfer rate:
Ta= 3.3 ms; Tl= 2.0 ms; Tt= 4 / 151 = 0.027 ms; Tio= 3.3 + 2.0 + 0.027 = 5.327ms

for writes with maximum transfer rate:
Ta= 3.3 ms; Tl= 2.0 ms; Tt= 4 / 202 = 0.02 ms; Tio= 3.3 + 2.0 + 0.02 = 5.32ms

This gives us Savvio's IOPS numbers for random small block IO operations:

for reads with minimum transfer rate: IOPS= 1 / 4.927 = 203

for reads with maximum transfer rate: IOPS= 1 / 4.927 = 203

for writes with minimum transfer rate: IOPS= 1 / 5.327 = 188

for writes with maximum transfer rate: IOPS= 1 / 5.32 = 188