From Greg Porter's Wiki
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).
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.
Tell the disk worker to use an "Access Specification" (test pattern). I use the "All in one" test pattern.
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.
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.
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.
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.
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... 18.104.22.168 Connecting to prdownloads.sourceforge.net|22.214.171.124|: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... 126.96.36.199 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... 188.8.131.52 Connecting to superb-sea2.dl.sourceforge.net|184.108.40.206|: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 &  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.
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.
Iometer on Linux!