Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am in the process of moving applications running on old Linux machines onto VMs. As part of this, I need to justify the VMs have at least the capacity (i.e. CPU speed, RAM, disk, disk speed, network speed...), otherwise the moves will slow the applications down.

So, as part of that, I need a way of profiling disk performance. I understand performance is partially application specific (i.e. amounts and relative ratios of sequential/random reads/writes and so on).

I understand there is the hdparam -t command, which gives a time to read sequentially from the first part of a disk. However, is there a tool that'll give a disk a workout of sequential/random activities and some kind of score? Are there any better disk performance tools?

share|improve this question
up vote 4 down vote accepted

There are many, but I'll be talking about just two.


IOMeter is a benchmarking tool that is very featured. You frequently find it being used by the major benchmarking sites when discussing performance of new storage systems. Anandtech used it for ages, and may still do so as a tool in their overall benchmarking suite.


My personal favorite, IOZone has fewer features than IOMeter but it easier to use. You can get a reasonably good benchmark with very few flags, and can tune it to get exactly what you're looking for. It also has a throughput-test mode where it'll spawn multiple simultaneous testing threads so you can get an idea of the differences between one big process hammering storage, and lots of processes hammering storage.

Both of these tools blow hdparm -t out of the water when it comes to relevancy. HDParm doesn't deal with enough data to not fully exclude system effects of memory.

When benchmarking virtual spaces, be aware that storage performance is by necessity much less predictable than it is on dedicated storage. Both of these tests can saturate the I/O channel between you and storage, which in turn means that some other VM experiencing high I/O can throw off your numbers, and your benchmarking throw off theirs in return.

IOZone, as I said, is easy to use. This will give you a real solid IO workout:

iozone -a -s 8G

That'll do a full benchmarking series on an 8GB file. You want the file to be larger than RAM in the box so may be smaller or larger depending on what you're doing.

share|improve this answer

The command line utility bonnie++ does a pretty good job of profiling hard drive IO performance in a standard enough way that is is useful for comparing across machines, inside and out of virtual environments, and as you change hardware specs.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.