Skip to main content

Running an I/O benchmark using IOMETER

The following document describes the methodology used at MFJ Associates for running a disk I/O benchmark.  This document assumes that the IOMETER software has been downloaded from www.iometer.org. IOMETER runs on Microsoft Windows as well as various flavors of Unix and Linux(referred to as *nix in this blog). It is made up of two components:
  1. iometer.exe a GUI program that only runs on Windows (which means you have to have at least 1 Windows desktop or server to run the GUI part)
  2. dynamo.exe or dynamo (on *nix) called the manager.
In order to run a benchmark the Windows computer running iometer.exe must have TCP connectivity with the computer(s) where the benchmark will be performed.  Both must be able to connect to one another.

How to run a benchmark

Here is a high level view of running a benchmark. A detailed explanation will follow.
  1. You need to start the iometer.exe program on the Windows computer.  This will start the dynamo.exe program on that same computer in order to be able to perform benchmarks on that Windows computer.
  2. Start the dynamo program on all computers (Windows or *nix) where you want to run a benchmark.  If you need to run benchmark on two Linux servers la and lb and 1 windows server wa then you must start the dynamo program on the la, lb and wa servers.
  3. When you have configured all the parameters for running the benchmark simply click on the start icon ()
  4. When the benchmark run time is reached (or you click the stop icon if the duration is specified as 0) then the result of the benchmark will be written into a csv file.
That's it.  Now for the details read on.

Start IOMETER.exe

After starting iometer.exe you will get the following window: In the topology window you should see under All Managers an icon with a plus sign corresponding to the Windows computer where you are running the iometer.exe.  This indicates that iometer.exe started the dynamo.exe on the Windows computer and that it has connected to the iometer GUI.  If you click on the plus sign you will see a list of workers, one for each CPU on the computer running the dynamo program (in this case the same Windows computer running the iometer.exe).  This means that there are up to so many workers potentially available to perform tests. The number of worker that will be utilized depends on the number of disk targets that are selected.  All disk targets will be distributed among the workers equally.  If there are 4 workers:
  • 1 disk, only 1 of 4 worker will be used
  • 2 disks, 2 of 4 workers will be used
  • 4 disks, all 4 workers will be used
  • 8 disks, all 4 workers will be used each using two disks


Start dynamo

Logon to each computer where you want to run a benchmark and start the dynamo program as follow:   dynamo -i iometer -m manager where iometer is the hostname or IP address of the computer running iometer that this instance of dynamo will try to connect to manager is the hostname or IP address of the computer running dynamo. This hostname or IP address will be used by the computer running the iometer program. Once you start a dynamo, you will see it appear in the topology list of iometer as ubuntu-precise in the screen shot below:

Configure the parameters

In order to run a benchmark, you must configure all the managers that will be used in the iometer topology window.  To do this you must click each manager in the topology and perform the following steps:
  1. click the Disk Targets tab and select the disks to use in the benchmark. Control click will select multiple disks or to select no disk, control click all selected disks to deselect them.  A disk is selected when it has a red x in the check box as in
  2. Select a maximum disk size of 2000 sectors
  3. Click the Access Specifications tab and click the global access specification called Default.  Click the Edit Copy button.
  4. In the Edit access Specification window, change the name to Default 4k
  5. Change the Transfer Request Size to 4 Kilobytes then click the OK button
  6. Back in the Access Specifications with the new Default 4k selected at the bottom of the list click the <<Add button. Click the "4 KiB; 100% Read; 0% random" access specification and add it by clicking the <<Add button. Do the same for the "256KiB; 100% Read; 0% random" access specification. You should end up with the following in the Assigned Access Specifications window:
  7. Click the Results Display tab.  Change the Update Frequency to 5 seconds.
  8. Click the Test Setup tab and type a test description.  Then select a 1 minute run time
Remember to perform each of those steps for each connected dynamo or manager.  Note that steps 3-5 only need to be done the first time.

Start the benchmark

Once all managers have been configured, you are ready to run the benchmark.  Please note that all workers on all managers will be running their first access specification at the same time, followed by their second access specification and so on.  If they are all hitting the same disk they will each interfere with one another.  On a production system this can provide comparable measures as all benchmark are equally affected by the other activities.  If you want to run them separately, just make sure that only 1 disk target is selected at a time. Since you have configured three access specification and a run time of 1 minutes, this means that the complete benchmark will take 3 minutes. When ready, click the start green flag. A dialog box will appear allowing you to specify the filename of the CSV result file.  Make sure you store it in a location and using a name that will reflect what the benchmark was about.  When you click the save button the benchmark will start.  Make sure you are on the Results Display tab to see the progress. This is what it will look like:


End of benchmark

When the benchmark has completed you can import it into Excel and select the top left cell of the first result (with the text 'Target Type) and shift click the bottom right cell of the last result. On the Excel Home tab in the Styles group select the Format as Table button  and click the Table Style Medium 2 and click OK on the following window making sure the My table has headers is selected as in:

This will create an Excel table that you can use to filter.  I usually filter the target types of ALL, MANAGER and DISK to gain an understanding.  You may want to remove the filters to look at detailed information. See the iometer User's Guide for a description of the metrics.  Please note that binary metrics(MiBps) versus decimal metrics(MBps) are defined in the table in the following web page

Other benchmarking tools

  1. fio benchmark for *nix and Windows
  2. diskspd from Microsoft that runs only on Windows

Comments

Unknown said…
how to set an unique single 8GB file for read and read benchmarking? thanks

Popular posts from this blog

Handling multipart form data in Spring 3.1

Introduction Multipart mime encoded is a format used to transmit binary and arbitrary data in 1 single HTTP request transaction. In this post, I will describe how to create and process multipart form data using Spring 3.1, the leading industry standard java application framework for creating Java web application.  I will start the discussion from the user perspective by talking about two main use cases and will expand it by describing how these two use cases translate into 7 possible application system use cases. Use Cases Here are some use cases of this feature: A browser submits or uploads a file to a web server using an HTML page. This is by far the most common use case of the multipart form data feature. A multipart is required because the form data and the file are both included in the request body. A java program (a java application or servlet instance) sends multipart form data to a web server (most likely a web service).  This is

Tutorial on how to write and run a javaFX 11 Spring Boot program using Eclipse

Since the decoupling of javaFX from the JDK (see http://openjfx.io ) it has become somewhat of a challenge to use javaFX with the new module capability since java 9.  This tutorial is a brief roadmap between a java 8 javafx to the java 11 version.  All code for this sample resides in https://github.com/marioja/javafx  and can be imported into eclipse and should run as is.  You can also do this manually following these instructions. First you need to use an eclipse that supports the java 11 execution environment (Eclipse 2018-12 at the time of this writing).  Then you need to make sure you have a java 11 jdk installed(11.0.2 at the time of this writing).  I downloaded openjdk11  and unzipped into a folder on my home directory (user profile on windows).  Lets call this directory jdk-11.0.2.  You should add the eclipse -vm argument in the eclipse.ini file  to select jdk-11.0.2. Start eclipse and create a brand new workspace (one that does not exist).  I called it javafx-tutorial.  If

Put your WARs on a diet with Maven: Maven and skinny wars!

I have seen a lot of confusion and misunderstanding on what is and why use a java enterprise concept called skinny war . In simple terms , a skinny war is a WAR where some of its dependencies are moved from the WAR module WEB-INF/lib to the EAR lib folder .   This post is specifically written to deal with skinny wars and does not explain or go into details which jars must be in the WAR class loader and which one do not have to . It is assumed that the reader is familiar with this concept and the concept of the WAR class loader versus the application class loader . Suffice it to say that typically, JAR that must be scanned by CDI usually belongs in the WAR class loader . Web fragments and jars with tag libraries are other candidates . Also, all test and provided scope artifacts must be specified in the WAR module as having maven remove them from the WAR does not make sense as they were never to be put there and having them in a deps POM file does not work . They will not be e