Debug School

Cover image for IOMeter
Suyash Sambhare
Suyash Sambhare

Posted on

IOMeter

Iometer is an I/O subsystem measurement and characterization tool for single and clustered systems.

Iometer is both a workload generator (that is, it performs I/O operations in order to stress the system) and a measurement tool (that is, it examines and records the performance of its I/O operations and their impact on the system). It can be configured to emulate the disk or network I/O load of any program or benchmark, or can be used to generate entirely synthetic I/O loads. It can generate and measure loads on single or multiple (networked) systems.

Iometer consists of two programs, Iometer and Dynamo.

  1. Iometer is the controlling program. Using Iometer’s graphical user interface, you configure the workload, set operating parameters, and start and stop tests. Iometer tells Dynamo what to do, collects the resulting data, and summarizes the results in output files. Only one copy of Iometer should be running at a time; it is typically run on the server machine.
  2. Dynamo is the workload generator. It has no user interface. At Iometer’s command, Dynamo performs I/O operations and records performance information, then returns the data to Iometer. There can be more than one copy of Dynamo running at a time; typically one copy runs on the server machine and one additional copy runs on each client machine. Dynamo is multithreaded; each copy can simulate the workload of multiple client programs. Each running copy of Dynamo is called a manager; each thread within a copy of Dynamo is called a worker.

Running Iometer

To run Iometer, double-click on Iometer.exe. The Iometer GUI appears, and Iometer starts one copy of Dynamo on the same machine.
You can also start Iometer and immediately load a saved setup file by double-clicking on an .icf file, dragging an .icf or.txt file to the Iometer.exe icon, or specifying an .icf or.txt file as a command-line argument. For example:
C:> iometer myconfig.icf
If other machines will be used during testing, start a copy of Dynamo on each, providing the name of the machine running Iometer as a command-line argument. For example:
C:> dynamo IOServer
You do not need to start more than one copy of Dynamo on any one machine. To increase the number of workers on a machine, use Iometer to start additional worker threads within that machine’s single copy of Dynamo.
See the Iometer Command Line Options section for more details.
You can start Iometer in "batch mode" by using command line parameters to specify both a configuration file and a results file. This allows Iometer to complete a series of tests and record the results without any user interaction. For example:
C:> iometer /c bigtest.icf /r bigtest_results.csv

IOMETER

Test disk performance:

• Double-click on Iometer.exe. The Iometer main window appears, and a Dynamo workload generator is automatically launched on the local computer.
• Click on a manager (the name of the local computer) in the Topology panel on the left side of the Iometer window. The manager’s available disk drives appear in the Disk Targets tab. Blue icons represent physical drives; they are only shown if they have no partitions on them. Yellow icons represent logical (mounted) drives; they are only shown if they are writable. A yellow icon with a red slash through it means that the drive needs to be prepared before the test starts; see the Disk Targets Tab — Reference section for more information on preparation.
• In the Disk Targets tab, select a disk or disks to use in the test (use Shift-click and Control-click to select multiple disks). The selected disks will be automatically distributed among the manager’s workers (threads).
• Switch to the Access Specifications tab. Double-click on “Default” in the Global Access Specifications list (the one with the globe icon). The Edit Access Specification dialog appears.
• The Edit Access Specification dialog shows you how the disk will be accessed. The default is 2-Kilobyte random I/Os with a mix of 67% reads and 33% writes, which represents a typical database workload. You can leave it alone or change it. Press OK to close the dialog when you are through.
 For maximum throughput (Megabytes per second), try changing the Transfer Request Size to 64K, the Percent Read/Write Distribution to 100% Read, and the Percent Random/Sequential Distribution to 100% Sequential.
 For the maximum I/O rate (I/O operations per second), try changing the Transfer Request Size to 512 bytes, the Percent Read/Write Distribution to 100% Read, and the Percent Random/Sequential Distribution to 100% Sequential.
• Switch to the Results Display tab. Set the Update Frequency to 10 seconds.
• Press the Start Tests button (green flag). A standard Save File dialog appears. Select a file to store the test results (default results.csv).
• After 10 seconds the first test results appear in the Results Display tab, and they are updated every 10 seconds after that. Press the button to the left of each bar chart for a menu of the different results you can display. You can also drag a worker or manager from the Topology panel to a bar chart to see the results of just that worker or manager.
• Press the Stop Test button (stop sign). The test stops and the final results are saved in the results.csv file. This is a comma-separated text file that can be viewed in any text editor or imported into a spreadsheet.
To test network performance between two computers (A and B):
• On computer A, double-click on Iometer.exe. The Iometer main window appears and a Dynamo workload generator is automatically launched on computer A.
• On computer B, open an MS-DOS Command Prompt window and execute Dynamo, specifying computer A’s name as a command line argument. For example:
C:\> dynamo computer_a
• On computer A again, note that computer B has appeared as a new manager in the Topology panel. Click on it and note that its disk drives appear in the Disk Targets tab.

• With computer B selected in the Topology panel, press the Start Network Worker button (picture of network cables). This creates a network server on computer B.
• With computer B still selected in the Topology panel, switch to the Network Targets tab, which shows the two computers and their network interfaces. Select one of computer A’s network interfaces from the list. This creates a network client on computer A and connects the client and server together.
• Switch to the Access Specifications tab. Double-click on “Default” in the Global Access Specifications list. In the Edit Access Specification dialog, specify a Transfer Request Size of 512 bytes. Press OK to close the dialog.
• Switch to the Results Display tab. Set the Update Frequency to 10 seconds.
• Press the Start Tests button. Select a file to store the test results. If you specify an existing file, the new results will be appended to the existing ones.
• Watch the results in the Results Display tab.

• Press the Stop Test button to stop the test and save the results.

To import a results.csv file into a Microsoft* Access* database using the Import Wizard:
• Double-click on Wizard.mdb to open Access. (If you use Access 2000, you will be notified that the database is not in Access 2000 format. It does not have to be in order to perform the import.) The first page of the wizard appears.
• Specify the results file to import. Use the Browse button to locate it if it isn’t in the same directory as the Wizard.mdb file. Press Next.
• Select the test(s) from the file that you want to import. Press Next.
• Select “Create a new database.” Press Next.
• Specify the new .mdb file to import into. This must be a different file from Wizard.mdb. Press Next.
• Review your settings and press Finish. The results are imported into the specified database.
To graph imported results into a Microsoft Excel* spreadsheet using the Graph Wizard:
• Open Wizard.mdb in Access, if necessary.
• Click the Graph Data button.
• Specify the database file that contains your imported data. This must be a database produced by the Import Wizard. Press Next.
• Select the test(s) from the database that you want to graph. Press Next.
• This list shows predefined graph types that you can use. Press New to define a new graph type.
• Select the “# Disks” database field to graph on the X axis. Press Next.
• Type a name to label the X axis, or accept the field name as the default. Press Next.
• Check “Allow multiple Y values.” Select the “IOps” and “MBps” database fields to graph on the Y axis. Press Next.
• Click on the MBps field and press “Edit selected label.” Click “Right axis” to graph this field on the right axis of the graph. Change the name to be displayed on the Y axis label if you like. Press OK, then Next.
• The grouping criterion can be used to group the data into several distinct lines on the graph. For now, leave “None” selected. Press Next.
• Leave the grouping criterion label blank. Press Next.
• Type a name for the graph type you have just defined, or accept the default. Press Next.

• You have now defined a new graph type that you can edit or re-use in the future. Select it from the list (if it isn’t already selected). Press Next.
• Specify an .xls file to receive the graph. This can be a new or existing file; if the file exists, the graph will be added to it. Press Next.
• Review your settings and press Finish. The graph is created in the specified spreadsheet. (If you just imported the results from one or two tests, it is probably a very boring graph with only one or two points! The Graph Wizard is most useful in graphing the results of multiple tests against each other.)

NOTE
If the total number of outstanding I/Os in the system is very large, Iometer or Windows may hang, thrash, or crash. The exact value of “very large” depends on the disk driver and the amount of physical memory available. This problem is due to limitations in Windows and some disk drivers, and is not a problem with the Iometer software. The problem is seen in Iometer and not in other applications because Iometer makes it easy to specify a number of outstanding I/Os that is much larger than typical applications produce.

When testing network I/O, the total IOps and MBps values for a manager or “All Managers” include both network servers and the corresponding network clients. For example, suppose a network server on one manager is writing 8 MBps to its client on another manager, which is reading 8 MBps. In this case, the “All Managers” value for total MBps will be 16 MBps (even though only 8 MBps is flowing across the network). You can determine the actual total throughput by examining the I/O of only one worker at a time, or by examining only reads or only writes.

IOMeter

Network servers and network clients are both referred to as network workers.

Iometer starts a single manager, on the same machine as Iometer, when it starts up. To add a manager on the same machine as Iometer, press the Start New Manager button on the toolbar. To add a manager on another machine, start Dynamo on the desired machine, providing the name of the machine running Iometer as a command-line argument (as described under Running Iometer above); additional managers can be started before or after Iometer. To remove a manager, click on the manager and press the Disconnect button on the toolbar; this terminates the specified Dynamo process. To remove all managers, click on “All Managers” and press the Disconnect button on the toolbar.
By default, each manager starts off with one disk worker for each processor on the manager’s machine. To add a worker to a manager, click on the manager or any of its workers and press the Start Disk Worker or Start Network Worker button on the toolbar. To remove a worker, click on the worker and press the Disconnect button on the toolbar.
By default, each manager has the same name as the machine on which it is running, and each worker has the name “Worker n.” You can change the name of a manager or worker by clicking on the name when the manager or worker is selected (you will have to wait a moment for the name to highlight). The name of “All Managers” cannot be changed.
At most one list item (manager, worker, or “All Managers”) can be selected at a time. The settings for the selected worker or the selected manager’s or managers’ workers are shown in the Disk Targets, Network Targets, and Access Specifications tabs.
Right-clicking on a manager pops up a menu with one item: “Refresh Target Lists.” Selecting this item causes the manager to update its lists of disks and network interfaces. You can use this to update Iometer’s view of the manager if the target status for a manager changes (for example, if you create an iobw.tst file or mount a logical disk)

The Disk Targets tab lets you see and control the disks used by the disk worker(s) currently selected in the Topology panel. You can control which disks are used, how much of each disk is used, the maximum number of outstanding I/Os per disk for each worker, and how frequently the disks are opened and closed.

If a disk worker is selected in the Topology panel, that worker’s current configuration is displayed in the Disk Targets tab; any changes you make affect only that worker. If a manager or “All Managers” is selected, the disk workers’ common configuration is displayed: controls (other than Target assignments) for which all workers have the same setting show that setting, while controls for which not all workers have the same setting are blank. Any changes you make in the Disk Targets tab are applied to all of the selected manager or managers’ workers.
If a network worker is selected in the Topology panel, the Disk Targets tab is disabled. Clicking on a network worker while the Disk Targets tab is displayed automatically switches to the Network Targets tab. The same applies to a manager that has no disk workers, or “All Managers” if no manager has any disk workers.

Targets

The Targets list displays the disk drives available to the worker or manager selected in the Topology panel. Disks that are selected (checked) in the Targets list will be used by the worker(s) during the test.

Yellow disk icons represent logical drives (i.e. those with a drive letter). They are shown only if they are writable. Disk workers access logical drives by reading and writing a file called iobw.tst in the root directory of the drive. If this file exists, the drive is shown with a plain yellow icon; if the file does not exist, the drive is shown with a red slash through the icon. (If this file exists but is not writable, the drive is considered read-only and is not shown at all.)
If you select a drive that does not have an iobw.tst file, Iometer will begin the test by creating this file and expanding it until the drive is full (this is shown as “Preparing Drives” in the status bar). You can change the size of this file to control how much of the disk Iometer can use by setting the Maximum Disk Size control to the desired size (in sectors).
Blue disk icons represent physical drives. They are shown only if they contain nothing but free space (no defined partitions). Disk workers access physical drives by writing direct to the raw disk. Physical drives do not use an iobw.tst file. Running with physical drives is recommended.
You can select any number of drives; by default, no drives are selected. Click on a single drive to select it; Shift-click to select a range of drives; Control-click to add a drive to or remove a drive from the current selection. You can also use the arrow keys, Home and End keys, and the space bar to move the highlight and select/deselect disks, or press to select all drives (this requires the keyboard focus to be in the Disk Targets tab).
• If a disk worker is selected in the Topology panel, the Targets list displays the disks available to that worker. Drives that you select in the Targets list are used by that worker during the test.
• If a manager is selected in the Topology panel, the Targets list displays the disks available to that manager. Drives that you select in the Targets list are used by that manager’s disk workers during the test. (Network workers are not affected.) The selected drives are distributed in a round-robin fashion among the manager’s disk workers; any previous drive assignments for those workers are replaced by the new assignment. For example, suppose the selected manager has four disk workers and you select seven drives. In this case, drives 1 and 5 will be used by Worker 1; drives 2 and 6 will be used by Worker 2, drives 3 and 7 will be used by Worker 3, and drive 4 will be used by Worker 4.

Note that if you click on a manager, the selected disks for that manager’s workers are shown only if the drives are distributed among the workers in a round-robin fashion. If this is not the case, all the check boxes are gray, and you must click on an individual worker to see its selected disks.
• If “All Managers” is selected in the Topology panel, the Targets list is disabled.

Maximum Disk Size

The Maximum Disk Size control specifies how many disk sectors are used by the selected worker(s). The default is 0, meaning the entire disk or \iobw.tst file (beginning with the Starting Disk Sector). If you specify a value other than zero,
Iometer uses the specified number of 512-byte disk sectors, beginning with the Starting Disk Sector. If the specified value would extend beyond the end of the disk or file, it is silently ignored, and the default of 0 is used.

For example, if Starting Disk Sector is 5 and Maximum Disk Size is 10, the selected worker(s) will use sectors 5-14 of the disk or \iobw.tst file.

When preparing an unprepared logical drive (that is, the iobw.tst file does not exist), Iometer uses the sum of the values of the Maximum Disk Size + Starting Disk Sector controls as an upper bound on the size of iobw.tst. The iobw.tst file is created with this size (or available space, if smaller). If the file already exists (the drive has already been prepared), changing this control will not resize iobw.tst.
NOTE:
When two or more workers are assigned to the same unprepared logical drive, the Maximum Disk Size + Starting Disk Sector of the first worker [KB2] determines the size of iobw.tst.

Starting Disk Sector

The Starting Disk Sector control specifies the lowest-numbered disk sector used by the selected worker(s) during the test. The default is 0, meaning the first 512-byte sector in the disk or \iobw.tst file.

# of Outstanding I/Os

The # of Outstanding I/Os control specifies the maximum number of outstanding asynchronous I/O operations per disk the selected worker(s) will attempt to have active at one time. (The actual queue depth seen by the disks may be less if the operations complete very quickly.) The default value is 1.
Note that the value of this control applies to each selected worker and each selected disk. For example, suppose you select a manager with 4 disk workers in the Topology panel, select 8 disks in the Disk Targets tab, and specify a # of Outstanding I/Os of 16. In this case, the disks will be distributed among the workers (2 disks per worker), and each worker will generate a maximum of 16 outstanding I/Os to each of its disks. The system as a whole will have a maximum of 128 outstanding I/Os at a time (4 workers * 2 disks/worker * 16 outstanding I/Os per disk) from this manager.
This control can be overridden by the # of Outstanding I/Os control group in the Test Setup tab (depending on the Cycling Options).

NOTE
If the total number of outstanding I/Os in the system is very large, Iometer or Windows may hang, thrash, or crash. The exact value of “very large” depends on the disk driver and the amount of physical memory available. This problem is due to limitations in Windows and some disk drivers, and is not a problem with the Iometer software. The problem is seen in Iometer and not in other applications because Iometer makes it easy to specify a number of outstanding I/Os that is much larger than typical applications produce.

Test Connection Rate

The Test Connection Rate control specifies how often the worker(s) open and close their disk(s). The default is off, meaning that all the disks are opened at the beginning of the test and are not closed until the end of the test. If you turn this control on, you can specify a number of transactions to perform between opening and closing. (A transaction is an I/O request and the corresponding reply, if any; see the Reply field in the Edit Access Specification dialog for more information).
If Test Connection Rate is on, the worker opens all its disks at the beginning of the test. When the specified number of transactions has been performed to a particular disk, that disk is closed, and is re-opened again just before the next I/O to the disk. The number of transactions can be zero, in which case the worker just opens and closes the disks repeatedly.
Each open + transactions + close sequence is called a connection. The time from the initiation of the open to the completion of the corresponding close is recorded for each connection, and the maximum and average connection time and the average connections per second are reported.

Ref: https://iometer.org

Top comments (0)