Technical and installation information on io_profileio_profile works by measuring the time it takes to perform a large number of open-seek-read(or write)-close cycles at random locations in a set of files chosen at random. It makes these measurements scanning the I/O size exponentially from a minimum to a maximum value. Here's the simplest example of how you would run io_profile:
[bill@linus sda3]$ io_profile
IO profile test parameters
--------------------------Date: Sun Mar 7 17:12:11 2004
Location: linus:/mnt/sda3
File mode: Multi-file filesystem, 3 levels, 4 files per level
Synch mode: Using libc with no buffering
File size: 4194304 bytes
Reads (Writes) from 2 to 65536 bytes
Repetitions per read (write) size: 1000
...
Conducting write test...
I/O size [bytes], operations, time [s], throughput [bytes/s], I/O rate [1/s]
2,1000,0.078000,25641.025641,12820.512821
4,1000,0.176000,22727.272727,5681.818182
8,1000,0.075000,106666.666667,13333.333333
16,1000,0.073000,219178.082192,13698.630137
32,1000,0.072000,444444.444444,13888.888889
64,1000,0.073000,876712.328767,13698.630137
...
65536,983,1.037000,62123324.975892,947.926712
Done with write test
Conducting read test...
I/O size [bytes], operations, time [s], throughput [bytes/s], I/O rate [1/s]
2,1000,0.061000,32786.885246,16393.442623
4,1000,0.061000,65573.770492,16393.442623
8,1000,0.061000,131147.540984,16393.442623
16,1000,0.065000,246153.846154,15384.615385
32,1000,0.061000,524590.163934,16393.442623
64,1000,0.061000,1049180.327869,16393.442623
...
65536,985,0.864000,74714074.074074,1140.046296
Done with read test
After repeating the test parameters, the output is a simple list of comma-separated records of measured throughput vs. I/O size. This output can be easily redirected to a file for input into your favorite spreadsheet or plotting program.
Options:
-s single file mode (default is filesystem)
-b use low-level I/O to bypass the cache
-r only test reads from an existing file (system)
-v print version and exit
-h print this help
-m min_io minimum I/O in bytes
-M max_io maximuim I/O in bytes
-n reps repetitions at each io size
-l file_len length of each test file in bytes
io_profile is different from other I/O performance benchmarks because:
- It is easy to use and to understand what it measures.
- It works the same way on Windows, Solaris, and Linux systems.
- It measures performance of the whole I/O stack from the application's perspective, not the kernel's perspective, not a device's perspective.
- It can be used on any volume witha filesystem, including NFS/CIFS mounts, USB drives, removable media, locally attached or SAN disks, managed volumes, even USB memory sticks.
- It can be used to measure performance with and without the influence of the Operating System's buffer cache (where this is supported).
- It can be used to test the performance of a filesystem by operating on a single file or on a set of files organized in a hierarchical filesystem.
- It is distributed under the GNU Public License.
Some of the things you can do with io_profile:
- Compare the performance of NAS/DAS/SAN or SCSI/IDE storage options in an I/O size regime that is relevant to the application this storage will support.
- Test vendor performance claims in terms that are meaningful to your application.
- Measure the effect of tuning and configuration changes.
- Measure the effect of filesystem fragmentation/defragmentaton.
- Measure the effect of the buffer cache with different memory configurations.
- Measure the effect adding and removing storage virtualization layers.
- Measure the effect of using partitions on the inner/outer edges of a disk.
- Monitor an I/O stack for changes in quality of service.
How to get involved
If you would like to contribute to io_profile development, please contact us.
Download io_profile
|