( http://nucwww.chem.sunysb.edu/htbin/software_list.cgi?package=ioperf )
THIS PAGE DOES NOT CONTAIN MEANINGFUL NUMERICAL RESULTS YET!!! THERE ARE AT LEAST TWO PROBLEMS WITH THE IOPERF NUMBERS TO BE RESOLVED (as described below). Once resolved, this page will likely be completely rewritten.
The original IOperf code would not compile:
[root@dh34 ioperf]# make
cc -lm -o Ioperf ioperf.c
ioperf.c: In function 'main':
ioperf.c:133: error: 'CLK_TCK' undeclared (first use in this function)
ioperf.c:133: error: (Each undeclared identifier is reported only once
ioperf.c:133: error: for each function it appears in.)
ioperf.c: In function 'get_timer':
ioperf.c:477: error: 'CLK_TCK' undeclared (first use in this function)
make: *** [Ioperf] Error 1
Comments in /usr/include/time.h and /usr/include/bits/time.h lead me to think that "CLK_TCK" is just an obsolete name for CLOCKS_PER_SEC, though this struck me odd, because ioperf code is also using CLOCKS_PER_SEC for CLK_SCALE.
I modified ioperf.h, changing
# define SCALE CLK_TCK
to
# define SCALE CLOCKS_PER_SEC
and it compiled, but there is clearly a problem with the real timing scale factor (perhaps simply off by 1 million?).
So for now, these "real time" results are obviously not realistic numbers, BUT, they are would probably be correct in relative (ratio) terms -- twice as fast is twice as fast. The CPU % is meaningless for the same reason.
Another limitation (and more important for our purposes) in the "stock" ioperf appears to be a 2GB file size limit. To get around this, I added "-D_FILE_OFFSET_BITS=64" to the CFLAGS line in the makefile. I was able to write a 39GB file after this, but there is an overflow at some point in one or more variables, because the printed filesize was -1989672960 in the standard output. (Even at 8GB, the file size overflow appears). While the html output has a different filesize that the standard output, it too appears to be incorrect above a certain point. For instance, look at the third example below, in which the file size should be 8GB, but is instead only ~4GB.
With these two oddities (wrong real times and file sizes), I don't see much point in generating a lot of results at this time.
JUNE 27 update. With some wanton changes of int, long int and size_t to 'long long int' in declarations and casting of the ioperf code, I was able to get correct file sizes everywhere (?) for a test with 8GB file size. This still leaves the timing issue unresolved, so the actual rates are still not meaningful, I don't think, but now perhaps the results will at least be able to be contrasted amongst the different filesystems for relative differences.
On to some results:
Ioperf -l 5 -s 100 -n 100000 -html -w -m eastwood-hda:
Block IO | Character | Random | ||||||||||||||
fwrite | fread | putc | getc | seek | ||||||||||||
Machine | KB | KB/sec Real | KB/sec CPU | %CPU | KB/sec Real | KB/sec CPU | %CPU | KB/sec Real | KB/sec CPU | %CPU | KB/sec Real | KB/sec CPU | %CPU | KB/sec Real | KB/sec CPU | %CPU |
eastwood-hda | 400000 | 372786579.68 | 141342.76 | 263746.51 | 2325581395.35 | 232558.14 | 1000000.00 | 275292498.28 | 40444.89 | 680660.70 | 507614213.20 | 50697.08 | 1001269.04 | 23418764.99 | 2341.88 | 1000000.00 |
eastwood-hda | 400000 | 376470588.24 | 141843.97 | 265428.39 | 2325581395.35 | 233236.15 | 997093.02 | 273130761.35 | 40120.36 | 680777.51 | 507292327.20 | 50664.98 | 1001268.23 | 23418764.99 | 2344.69 | 998800.96 |
eastwood-hda | 400000 | 377477194.09 | 142180.09 | 265503.81 | 2325581395.35 | 233009.71 | 998062.02 | 273473108.48 | 40053.40 | 682775.59 | 502512562.81 | 50209.21 | 1000845.49 | 23344123.51 | 2336.27 | 999200.64 |
eastwood-hda | 400000 | 377982518.31 | 142348.75 | 265541.52 | 2325581395.35 | 232558.14 | 1000000.00 | 273224043.72 | 40000.00 | 683062.62 | 500469189.87 | 50031.27 | 1000325.09 | 23320895.52 | 2332.09 | 999995.72 |
eastwood-hda | 400000 | 377073906.49 | 142450.14 | 264720.80 | 2322880371.66 | 232558.14 | 998843.93 | 273410799.73 | 39952.06 | 684352.77 | 499625281.04 | 49975.01 | 999763.80 | 23306980.91 | 2329.59 | 1000472.76 |
Ioperf -l 5 -s 100 -n 100000 -html -w -m newman-hda:
Block IO | Character | Random | ||||||||||||||
fwrite | fread | putc | getc | seek | ||||||||||||
Machine | KB | KB/sec Real | KB/sec CPU | %CPU | KB/sec Real | KB/sec CPU | %CPU | KB/sec Real | KB/sec CPU | %CPU | KB/sec Real | KB/sec CPU | %CPU | KB/sec Real | KB/sec CPU | %CPU |
newman-hda | 400000 | 349650349.65 | 140350.88 | 249125.87 | 2325581395.35 | 232558.14 | 1000000.00 | 268456375.84 | 41025.64 | 654362.42 | 506970849.18 | 50697.08 | 1000000.00 | 23141291.47 | 2308.66 | 1002369.67 |
newman-hda | 400000 | 351185250.22 | 141843.97 | 247578.81 | 2325581395.35 | 232558.14 | 1000000.00 | 263504611.33 | 40962.62 | 643481.34 | 506970849.18 | 50729.23 | 999366.29 | 23086583.92 | 2305.93 | 1001184.83 |
newman-hda | 400000 | 355977454.76 | 141843.97 | 251054.37 | 2330097087.38 | 233009.71 | 1000000.00 | 259852750.11 | 41025.64 | 633791.60 | 507185122.57 | 50718.51 | 1000000.54 | 23086583.92 | 2308.66 | 1000001.87 |
newman-hda | 400000 | 353904003.54 | 142095.91 | 249160.34 | 2325581395.35 | 232558.14 | 1000000.00 | 261865793.78 | 41025.64 | 638715.02 | 507292327.20 | 50729.23 | 1000000.40 | 23086583.92 | 2307.29 | 1000592.42 |
newman-hda | 400000 | 354421407.05 | 142146.41 | 249417.40 | 2322880371.66 | 232288.04 | 1000000.00 | 263608804.53 | 41017.23 | 643131.80 | 507356671.74 | 50748.54 | 999746.51 | 23097504.73 | 2307.57 | 1000947.87 |
(All this shows is that the two machines perform almost identically, as expected,since they are the same hardware.)
Ioperf -l 5 -s 100 -n 2000000 -html -w -m eastwood-hda
Block IO | Character | Random | ||||||||||||||
fwrite | fread | putc | getc | seek | ||||||||||||
Machine | KB | KB/sec Real | KB/sec CPU | %CPU | KB/sec Real | KB/sec CPU | %CPU | KB/sec Real | KB/sec CPU | %CPU | KB/sec Real | KB/sec CPU | %CPU | KB/sec Real | KB/sec CPU | %CPU |
eastwood-hda | 3805696 | 185888536.12 | 64921.46 | 286328.33 | 193546050.96 | 103697.44 | 186644.97 | 177961000.70 | 19129.87 | 930278.23 | 195073863.35 | 23687.89 | 823517.35 | 11054431.89 | 1105.44 | 1000000.00 |
eastwood-hda | 3805696 | 82291879.40 | 29158.53 | 282278.70 | 86875854.88 | 46547.99 | 186637.18 | 80702092.49 | 8594.50 | 939085.77 | 87483051.72 | 10636.85 | 822453.78 | 11054431.89 | 1105.31 | 1000118.98 |
eastwood-hda | 3805696 | 48867732.72 | 17233.71 | 283610.19 | 51358024.69 | 27474.19 | 186932.21 | 47592167.71 | 5070.20 | 938725.47 | 51647935.60 | 6283.02 | 822025.09 | 11033428.33 | 1103.21 | 1000118.75 |
eastwood-hda | 3805696 | 32029118.79 | 11267.06 | 284316.11 | 33571635.68 | 17943.67 | 187094.82 | 31230001.18 | 3316.26 | 941804.92 | 33758817.36 | 4104.79 | 822425.98 | 11039327.51 | 1103.87 | 1000059.31 |
eastwood-hda | 3805696 | 21913097.65 | 7686.38 | 285134.41 | 22880094.31 | 12236.46 | 186983.55 | 21257190.34 | 2260.60 | 940410.63 | 23025180.52 | 2798.51 | 822765.06 | 11040245.73 | 1103.97 | 1000047.45 |
No explanation why the Block IO and character results decreased so dramatically with each iteration... (FWIW, according to the ioperf man page, each iteration is an average of the current result with all previous results, so it would seem that the first iteration was much faster than subsequent iterations for some reason...) This may be a side effect of the incorrect filesize, since there is an overflowed variable going into the calculations.
June 27 update: at least the file sizes are now as expected with an 8GB file after some changes to make variables long long ints:
Block IO | Character | Random | ||||||||||||||
fwrite | fread | putc | getc | seek | ||||||||||||
Machine | KB | KB/sec Real | KB/sec CPU | %CPU | KB/sec Real | KB/sec CPU | %CPU | KB/sec Real | KB/sec CPU | %CPU | KB/sec Real | KB/sec CPU | %CPU | KB/sec Real | KB/sec CPU | %CPU |
newman-hda | 8000000 | 389863547.76 | 123057.99 | 316812.87 | 516295579.22 | 171710.67 | 300677.64 | 367073506.47 | 39414.69 | 931311.37 | 409563303.13 | 49200.49 | 832437.41 | 171026707.53 | 17102.67 | 1000000.00 |