hdparm - A Simple Storage Benchmark

Benchmarking is hard.

This article isn’t about creating traditional benchmark data because that’s hard. It’s much more work than my typical need which is, “Nice! A new laptop. I wonder how fast the disc[sic] is”. Yeah, I know, I haven’t had a hard disk in a laptop for a while but old habits die hard.

You have plenty of options for creating getting really nice benchmark info such as the excellent fio but if I have to read a man page and some internet guides then it isn’t what I’m looking for.

Enter hdparm.

This is a tool for collecting and manipulating the low-level parameters of a SATA/PATA/SAS storage devices. It’s a very powerful tool to tinker with the on-board setting of your drive and I would recommend caution if you intend to make any changes as you can cause permanent damage or data loss.

In addition to the reading and modifying settings it contains a benchmark mode. When haparm is run in benchmark mode it will (non-destructively) write to the drive for three seconds ignoring the cache and file system. When it’s done it will print the total amount of data written and a data/sec amount.

The full command is very simple and has the following syntax:

hdparm -t /dev/<DEVICE>

Note, use the device rather than a partition as hdparm ignores partitions and file systems.

Here it is benchmarking the NVME SDD drive on my laptop:

$ sudo hdparm -t /dev/nvme0n1

/dev/nvme0n1:
 Timing buffered disk reads: 4092 MB in  3.00 seconds = 1363.77 MB/sec

And here is the DigitalOcean VM droplet that hosts this site:

$ sudo hdparm -t /dev/vda

/dev/vda:
 Timing buffered disk reads: 1236 MB in  3.00 seconds = 411.90 MB/sec

If hdparm isn’t included in your distro then it’s only an 80KB download from the default repos without any dependencies.