Testing IO performance in Linux

deeplovepan picture deeplovepan · Jul 29, 2009 · Viewed 76.3k times · Source

How do I test IO performance in Linux?

Answer

dmeister picture dmeister · Jul 29, 2009

IO and filesystem benchmark is a complex topic. No single benchmarking tool is good in all situations. Here is a small overview about different benchmarking tools:

Block Storage:

  • IOMeter - Highly customizable and allows to coordinate multiple clients. Needs a Windows PC for the coordination application. Developed by Intel. On Linux, take maximum rates of older (at least 2006.07.27 and earlier) with a pinch of salt because the submission method was not optimal.

File System (synthetic):

  • FFSB - Flexible Filesystem Benchmark. Very neat benchmarking for Linux. Good customization of workload. NFS benchmarking (net-ffsb) a bit unsound.
  • Filebench - Extremely powerful, but originally developed for Solaris. Linux support isn't good.
  • sysbench - Mainly a DB benchmarking tool, but also basic filesystem benchmarking tool.
  • bonnie - Seems to be obsolete.
  • bonnie++ - C++ port of bonnie. Easy, but seems not to be very customizable.

File System (workload):

  • Postmark - Simulates the IO behavior of a mail server. Too small to stress good IO systems.

Stony Brook University and IBM Watson Labs have published a highly recommended journal paper in the "Transaction of Storage" about file system benchmarking, in which they present different benchmarks and their strong and weak points: A nine year study of file system and storage benchmarking. The article clearly points out that the results of most benchmarks at least questionable.


A note: Is the question programming related? Maybe not, but maybe it is. I spend a lot of time benchmarking the IO performance of the systems I develop. At least for me, questions about how to benchmarking these things is highly programming related. Please: Do not close all questions that are not development/programming related from your point of view. The point of view of other developers might be different.