HowTo:iometer

From Greg Porter's Wiki

Jump to: navigation, search

Contents

Beginner's Guide to iometer

For now, read the manual.

"Iometer is an I/O subsystem measurement and characterization tool for single and clustered systems. It was originally developed by the Intel Corporation and announced at the Intel Developers Forum (IDF) on February 17, 1998 - since then it got wide spread within the industry.

Meanwhile Intel has discontinued to work on Iometer and it was given to the Open Source Development Lab (OSDL). In November 2001, a project was registered at SourceForge.net and an initial drop was provided. Since the relaunch in February 2003, the project is driven by an international group of individuals who are continuesly improving, porting and extend the product."

Iometer rhymes with thermometer.

Getting Started (Iometer on Windows)

The simplest case is to use Iometer on the Windows host that has the disks to test. In this case, you'll be running the Iometer GUI on the Windows host, as well as the Dynamo workload generator on the same host.

The Windows installer will install both pieces, Iometer (GUI) and Dynamo (workload generator).

Get Iometer here. Install it.

On Windows Server 2008, make sure to right-click and "Run as administrator" or Iometer misbehaves. Note that it is "normal" for Iometer to mysteriously open a command prompt window. This is the "Dynamo" process that actually does the disk I/O. Leave this window alone (you can minimize it).

Make sure to run Iometer as administrator.

Configuring Iometer

The basic idea here is to set up one "disk worker" the way you want it, and then clone that worker a number of times. Iometer by default opens 8 disk workers. Delete them all but one with the "Disconnect Selected Worker" button on the top bar.

Once you have just one disk worker, target a "physical" drive (no drive letter) if possible. Just click the check box on the drive you want to target.

Setting up the first worker, pick the target drive.

Tell the disk worker to use an "Access Specification" (test pattern). I use the "All in one" test pattern.

Tell the worker to use "All in one".

Once the first worker is set up, then click the "Start a Duplicate of This Worker" button over and over again to clone the worker. More is better. I use 10 disk workers.

Clone the first worker 9 times.

Click the "Save Test Configuration File" button to save your set up for future runs. I make an Iometer folder in My Documents to hold Iometer files.

Save your set up.

Start the Test Run

When you're ready, start the test by clicking the "Start Tests" button. It will prompt for a filename to save the results in.

Save your results.

Usage Notes

Don't pay any attention to the numbers until it runs for a while, a half hour or longer. There's all sorts of ram caching whatever going on, so it reports falsely high for a while. If you watch it run, you'll see it start off reporting very large numbers, and they slowly get smaller, and smaller, and smaller. Don't pay any attention to the numbers until they stabilize, might be 30+ minutes.

Waiting a while is even more important when benchmarking a solid state drive (SSD). Benchmarking these is notoriously inaccurate, basically because SSD makers know you’re going to do it, and tweak the SSD’s so they behave very well in the first few minutes. They know the average person will probably do some quickie benchmark on the SSD in the first few minutes of use, so they make sure the SSD is configured to respond quickly during initial use.

You can get past this by running the benchmark for a few hours, at least 8 hours or overnight. If you watch the results over time, you’ll see the SSD performance drop by 50% or more from the initial numbers. Of course the initial numbers are what the manufacturer puts in the specs and on the box. Basically, they lie.

Live results.

Iometer on Linux

Iometer has 2 basic pieces, Iometer and Dynamo. The GUI (Iometer) is run on a Windows host. It is possible to load the Dynamo workload generator on another host, say a Linux host. In this case, the Linux host running Dynamo is the machine under test, and the Windows host running the Iometer GUI is just reporting the numbers.

Get Iometer on Windows

Same steps as above. The Iometer GUI has to be run on Windows. So if a Linux host has the disks you want to test, you'll have to have 2 hosts, one Windows host to run the Iometer GUI on, and the Linux host(s) to test the disks on.

Get Dynamo for Linux

I successfully did this on 32 bit CentOS 5.4. It was straightforward. Hopefully it will work on your distro of choice. The basic steps are: Get the tarball and unpack the tarball.

Figure out first where you want to put iometer. I decided to put it in /opt. I downloaded the binary Linux tarball in opt and unpacked it.

[root@crimson ~]# cd /opt
[root@crimson opt]# ls
[root@crimson opt]# wget http://prdownloads.sourceforge.net/iometer/iometer-2006_07_27.linux.i386-bin.tgz
--2010-11-22 09:51:16--  http://prdownloads.sourceforge.net/iometer/iometer-2006_07_27.linux.i386-bin.tgz
Resolving prdownloads.sourceforge.net... 216.34.181.59
Connecting to prdownloads.sourceforge.net|216.34.181.59|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://downloads.sourceforge.net/project/iometer/iometer-stable/2006-07-27/iometer-2006_07_27.linux.i386-bin.tgz [following]
--2010-11-22 09:51:16--  http://downloads.sourceforge.net/project/iometer/iometer-stable/2006-07-27/iometer-2006_07_27.linux.i386-bin.tgz
Resolving downloads.sourceforge.net... 216.34.181.59
Reusing existing connection to prdownloads.sourceforge.net:80.
HTTP request sent, awaiting response... 302 Found
Location: http://superb-sea2.dl.sourceforge.net/project/iometer/iometer-stable/2006-07-27/iometer-2006_07_27.linux.i386-bin.tgz [following]
--2010-11-22 09:51:16--  http://superb-sea2.dl.sourceforge.net/project/iometer/iometer-stable/2006-07-27/iometer-2006_07_27.linux.i386-bin.tgz
Resolving superb-sea2.dl.sourceforge.net... 209.160.57.180
Connecting to superb-sea2.dl.sourceforge.net|209.160.57.180|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 82634 (81K) [application/octet-stream]
Saving to: `iometer-2006_07_27.linux.i386-bin.tgz'

100%[======================================>] 82,634       515K/s   in 0.2s    

2010-11-22 09:51:16 (515 KB/s) - `iometer-2006_07_27.linux.i386-bin.tgz' saved [82634/82634]

[root@crimson opt]# gunzip iometer-2006_07_27.linux.i386-bin.tgz 
[root@crimson opt]# tar -xvf iometer-2006_07_27.linux.i386-bin.tar 
iometer-2006_07_27.linux.i386-bin/
iometer-2006_07_27.linux.i386-bin/src/
iometer-2006_07_27.linux.i386-bin/src/iomtr_kstat/
iometer-2006_07_27.linux.i386-bin/src/iomtr_kstat/iomtr_kstat.h
iometer-2006_07_27.linux.i386-bin/src/iomtr_kstat/Makefile-Linux24
iometer-2006_07_27.linux.i386-bin/src/iomtr_kstat/Makefile-test
iometer-2006_07_27.linux.i386-bin/src/iomtr_kstat/load26.sh
iometer-2006_07_27.linux.i386-bin/src/iomtr_kstat/Makefile-Linux26
iometer-2006_07_27.linux.i386-bin/src/iomtr_kstat/load24.sh
iometer-2006_07_27.linux.i386-bin/src/iomtr_kstat/iomtr_kstat.c
iometer-2006_07_27.linux.i386-bin/src/iomtr_kstat/test.c
iometer-2006_07_27.linux.i386-bin/src/iomtr_kstat/unload.sh
iometer-2006_07_27.linux.i386-bin/src/iomtr_kstat/README.first
iometer-2006_07_27.linux.i386-bin/src/iomtr_kstat/INSTALL
iometer-2006_07_27.linux.i386-bin/src/dynamo
iometer-2006_07_27.linux.i386-bin/src/scripts/
iometer-2006_07_27.linux.i386-bin/src/scripts/iom-indent
iometer-2006_07_27.linux.i386-bin/src/scripts/ccntmknod.README
iometer-2006_07_27.linux.i386-bin/src/scripts/ccntmknod
iometer-2006_07_27.linux.i386-bin/CREDITS
iometer-2006_07_27.linux.i386-bin/CHANGELOG
iometer-2006_07_27.linux.i386-bin/README
iometer-2006_07_27.linux.i386-bin/DEVGUIDE
iometer-2006_07_27.linux.i386-bin/LICENSE
[root@crimson opt]# cd iometer-2006_07_27.linux.i386-bin
[root@crimson iometer-2006_07_27.linux.i386-bin]# 
[root@crimson iometer-2006_07_27.linux.i386-bin]# ls
CHANGELOG  CREDITS  DEVGUIDE  LICENSE  README  src
[root@crimson iometer-2006_07_27.linux.i386-bin]# cd src
[root@crimson src]# ls -al
total 156
drwxrwxr-x 4 portergl portergl   4096 Sep 29  2006 .
drwxrwxr-x 3 portergl portergl   4096 Sep 29  2006 ..
-rwxrwxr-x 1 portergl portergl 117864 Sep 29  2006 dynamo
drwxrwxr-x 2 portergl portergl   4096 Sep 29  2006 iomtr_kstat
drwxrwxr-x 2 portergl portergl   4096 Sep 29  2006 scripts

That's it (at least on 32 bit CentOS 5.4). You now have a ready to run dynamo executable.

Configure or disable firewalls

The Dynamo executable on your Linux host under test is going to be commanded by, and report numbers to, the Windows host running Iometer across the network. Obviously, the network ports used for this need to be open. Dynamo uses random high ports. I fiddled a bit with trying to appropriately open the right ports, and then gave up. I just flat turned all firewalls off, both the host firewall on my Linux host (I used 'service iptables stop') as well as the host firewall on Windows.

Start the iometer GUI on the Windows reporting host

Just start Iometer. The GUI will start and wait for Dynamo exectutables to connect to it.

Start dynamo on the Linux host under test

Easy. At a minimum you need to specify 2 parameters. You need to tell Dynamo the name or IP of the Windows host running Iometer (-i) and the name to use for the Linux host under test (-m). In the example below, my Windows host is maroon, and the Linux host under test is crimson.

When it starts, you'll get some whining like "Fail to open kstat device file. You can ignore this warning unless you are running dynamo on XSCALE CPU." I ignored this.

[root@crimson src]# ./dynamo -i maroon  -m crimson &
[1] 4960
[root@crimson src]# Fail to open kstat device file. You can ignore this warning
unless you are running dynamo on XSCALE CPU.

Command line parameter(s):
   Looking for Iometer on "maroon"

Sending login request...
   crimson.csc.calpoly.edu
   crimson (port 54781)
Successful PortTCP::Connect
  - port name: maroon

*** If dynamo and iometer hangs here, please make sure
*** you use a correct -m <manager_computer_name> that
*** can ping from iometer machine. use IP if need.
   Login accepted.
Reporting drive information...
Set_Sizes: Open on "/sys/iobw.tst" failed (error Permission denied).
Set_Sizes: Open on "/dev/shm/iobw.tst" failed (error Invalid argument).
Set_Sizes: Open on "/proc/sys/fs/binfmt_misc/iobw.tst" failed (error Permission denied).
  Physical drives (raw devices)...
Set_Sizes: Open on "/dev/dm-0" failed (error No such file or directory).
Set_Sizes: Open on "/dev/dm-1" failed (error No such file or directory).
Reporting TCP network information...
   done.

Command the Linux host under test with iometer on Windows

If it all is working, it should work exactly like above. The only difference now is that you'll see a Dynamo manager and worker(s) on the Linux host, in addition to a manager on the Windows host running Iometer. You can configure and run tests on the remote Linux host just as you did above on the local Windows host.

Command your Linux host under test from Windows.

When you configure your workers and start the test, you may get an error dialog like this. I picked "Yes" and ignored it. My tests seemed to run fine anyway.

Ignore this error.

Iometer on Linux!

Linux host under test.
Personal tools