[comp.arch] IOStone

becker@iris.ucdavis.edu (Jeffrey Becker) (04/11/90)

Hi. We have just completed a new release of the IOSTONE file system
performance benchmark program. It is a set of 'C' routines designed to
provide a comprehensive measure, including components of disk
performance, CPU performance on file system tasks, and buffer cache
performance. If you are interested in receiving the code, please send
me e-mail. We are anxious to hear about any feedback you might have,
as well as IOSTONE performance results from your systems.  Thanks.

-jeff

uppal@hpindda.HP.COM (Sanjay Uppal) (04/13/90)

Could you give us some context for this "new release" please ?
Is this one of the benchmarks SPEC is considering for IO performance ?
Does it do remote as well as local file/disk performance ?
Is it limited to UNIX systems ? How does it compare to existing
IO benchmarks ?


Sanjay Uppal <uppal> 
(NN9T, VU2SMT)		phone:	(408) 447-3864
Hewlett-Packard (IND)	uucp: ...!hplabs!hpda!uppal
NS     		arpa: uppal%hpda@hplabs.hp.com

becker@iris.ucdavis.edu (Jeffrey Becker) (10/17/90)

In article <143502@@sun.Eng.Sun.COM>, lm@@slovax.Sun.COM (Larry McVoy) writes:
> In article <2387@@van-bc.wimsey.bc.ca> jtc@@van-bc.wimsey.bc.ca (J.T. Conklin) writes:
> >In article <14900016@@hpdmd48.boi.hp.com> sritacco@@hpdmd48.boi.hp.com (Steve Ritacco) writes:
> 
> IOstone is misnamed and misleading.  It ought to be called "cachestone" or
> "buffer cachestone".  It does *not* measure I/O performance.  It measures
> cache performance.

We are sorry that you were mislead.  We would like to clarify a few
points:

1.  IOStone was designed to measure IO system performance on REAL SYSTEM
    WORKLOADS.  Consequently, our synthetic workloads are derived 
    from REAL PROGRAM TRACES.  You point out our program performs well
    with a large disk cache.  We completely agree with you.
    However, note that IO system workloads also benefit greatly from
    large disk caches.

2.  IOStone was designed to measure TOTAL IO SYSTEM PERFORMANCE.
    We do not desire to measure the performance of individual components 
    of the IO system performance such as the disk, controller or 
    the I/O channel alone.  Rather, we want to know how these perform 
    in conjunction with the other parts of the I/O SYSTEM, such as
    the cpu and the operating system. 

3.  We designed IOStone to be as simple to use and portable as
    possible.  We do not claim it is the MOST accurate measure
    of IO performance that can be constructed, but we do feel
    that it achieves a good compromise between portability,
    simplicity and accuracy.  

We feel that IOStone is the best widely used indicator of IO system
performance that is currently available.  

We do not mind criticism, but we prefer it to be CONSTRUCTIVE!
Other postings in this debate have mentioned the great difficulties 
inherent in producing a comprehensive IO system metric.  Please
consider these issues carefully before launching into another tirade.
We welcome any CONSTRUCTIVE SUGGESTIONS you might have in designing an
IO system metric.

If you would like a free copy of the IOStone code or a copy of our
Computer Architecture News (June 90) article,  
send email to becker@iris.ucdavis.edu

						Jeff Becker
						Arvin Park

staff@cadlab.sublink.ORG (Alex Martelli) (10/19/90)

becker@iris.ucdavis.edu (Jeffrey Becker) writes:
	...
>We welcome any CONSTRUCTIVE SUGGESTIONS you might have in designing an
>IO system metric.

I have one, and as a beta-site for IOstone made it (but never got any
feedback about it, nor about all I reported - maybe my mail was flakier
than usual): do NOT place open() and close() in a tight inner loop!!!

Do the system-traces show that io-intensive programs open() and close()
a file each time they need to read()/write() a few hundreds or thousands
bytes from/to it...?  If so, they look suspiciously like NFS-based I/O
to me, rather than 'real' disk I/O!-)

Then again, maybe the final IOstone does NOT have the inner-loop open()
and close(); although I didn't hear anything from you about this point,
surely I wasn't the only one to make it - it's a rather clear one.

I do not have the hard data to back this opinion up, but I believe 
that open() and close() are quite a bit less frequent than read() and
write(), so it woule be quite reasonable to accept some performance 
hit in the former calls if it bought you a somewhat smaller increase
in the latter ones... but such a design would lead to poor IOstone
numbers (in the 'beta' release, which is all I was able to see).

Alex Martelli - CAD.LAB s.p.a., v. Stalingrado 45, Bologna, Italia
Email: (work:) staff@cadlab.sublink.org, (home:) alex@am.sublink.org
Phone: (work:) ++39 (51) 371099, (home:) ++39 (51) 250434; 
Fax: ++39 (51) 366964 (work only; any time of day or night).
-- 
Alex Martelli - CAD.LAB s.p.a., v. Stalingrado 45, Bologna, Italia
Email: (work:) staff@cadlab.sublink.org, (home:) alex@am.sublink.org
Phone: (work:) ++39 (51) 371099, (home:) ++39 (51) 250434; 
Fax: ++39 (51) 366964 (work only; any time of day or night).

lm@slovax.Sun.COM (Larry McVoy) (10/23/90)

In article <7834@ucdavis.ucdavis.edu> becker@iris.ucdavis.edu (Jeffrey Becker) writes:
>In article <143502@@sun.Eng.Sun.COM>, lm@@slovax.Sun.COM (Larry McVoy) writes:
>> In article <2387@@van-bc.wimsey.bc.ca> jtc@@van-bc.wimsey.bc.ca (J.T. Conklin) writes:
>> >In article <14900016@@hpdmd48.boi.hp.com> sritacco@@hpdmd48.boi.hp.com (Steve Ritacco) writes:
>> 
>> IOstone is misnamed and misleading.  It ought to be called "cachestone" or
>> "buffer cachestone".  It does *not* measure I/O performance.  It measures
>> cache performance.
>
>We feel that IOStone is the best widely used indicator of IO system
>performance that is currently available.  

Widely used?  By whom?

>						Jeff Becker
>						Arvin Park

Perhaps you would care to comment on why this benchmark was rejected as
an addition to the standard SPEC benchmarks?   Especially in light of the
fact that SPEC would *love* to add an IO benchmark to their suite that
does what you claim yours does.

Come on guys, it's obvious that you blew it with this benchmark.  Instead of
arguing endlessly about how great it is, why don't you go off and try again?
---
Larry McVoy, Sun Microsystems     (415) 336-7627       ...!sun!lm or lm@sun.com

davidsen@crdos1.crd.ge.COM (Wm E Davidsen Jr) (10/23/90)

In article <144018@sun.Eng.Sun.COM> lm@sun.UUCP (Larry McVoy) writes:

| Perhaps you would care to comment on why this benchmark was rejected as
| an addition to the standard SPEC benchmarks?   Especially in light of the
| fact that SPEC would *love* to add an IO benchmark to their suite that
| does what you claim yours does.

  There are many possible reasons, most of which are related to the fit
between IOstone and what SPEC wants to include as an IO benchmark. My
impression is that they want something to measure the performance of the
disk drives rather than the effective performance as seen by a typical
program. This is undoubtedly only part of the reason.

| Come on guys, it's obvious that you blew it with this benchmark.  Instead of
| arguing endlessly about how great it is, why don't you go off and try again?

  The nice thing about this is that you have such a detached attitude
and have presented a great list of technical flaws ;-) IOstone returns
results which match *in ratio* measurements of production IO bound
programs. Therefore many of us find the results useful for comparing
machine to one another as platforms for running that load.
-- 
bill davidsen	(davidsen@crdos1.crd.GE.COM -or- uunet!crdgw1!crdos1!davidsen)
    VMS is a text-only adventure game. If you win you can use unix.

lm@slovax.Sun.COM (Larry McVoy) (10/24/90)

In article <2783@crdos1.crd.ge.COM> davidsen@crdos1.crd.ge.com (bill davidsen) writes:
>In article <144018@sun.Eng.Sun.COM> lm@sun.UUCP (Larry McVoy) writes:
>| Come on guys, it's obvious that you blew it with this benchmark.  Instead of
>| arguing endlessly about how great it is, why don't you go off and try again?
>
>  The nice thing about this is that you have such a detached attitude
>and have presented a great list of technical flaws ;-) IOstone returns
>results which match *in ratio* measurements of production IO bound
>programs. Therefore many of us find the results useful for comparing
>machine to one another as platforms for running that load.

Your statment that IOstone matches real programs is unsubstantiated.  
I have not been able to find any such program.

You want to understand, apparently, why I don't like this benchmark.
OK, here's why.  IOstone claims to measure IO performance, not cache
performance.  It explicitly tries to clear the cache but fails to do so
in the face of large caches such as those provided by SunOS, Mach, and
Multics.  This gives us results that can not be considered apples to
apples comparisons.

It would be OK if the designers understood the differences between
various caching systems and were trying to measure those differences.
If they were trying to do that they could have done so much more
effectively by

	#!/bin/sh

	SIZE=1024
	while true
	do	BS=1024
		COUNT=`expr $SIZE / $BS`
		dd if=/dev/zero of=/tmp/XXX bs=$BS count=$COUNT > /dev/null
		if [ $? -ne 0 ]
		then	echo can\'t write the file, probably too big.
			exit 0
		fi
		time dd if=/tmp/XXX of=/dev/null > /dev/null
		SIZE=`expr $SIZE * 2`
	done

And printed a graph of machine, filesize, time.  This would clearly show
"who's got a big one" in terms of caches, that is :-)


They showed up at Sun one day and wanted to talk to the file system people
about our "buffer cache" and how it managed to work so fast.  They didn't
realize that anything but buffer cache based file systems existed.  They
*designed in* knowledge of the buffer cache.   They claim their system is
based in file system traces.  I'd like to see the traces.  I'd like to see
the user program that goes out and tries to clear the cache before running.
I've taken lots of file system traces and the traces that I've seen don't
like anything like the IO that results from running IOstone.

If you really trust this benchmark, go buy Suns.  Suns look fantastic
under this benchmark.  Don't blame me when you try out your new Sun and
find that, surprise, it is not 100X faster after all.

I'm fighting this benchmark because it gives you some information and
tells you how that information is to be interpreted.  In particular,
it tells you about data movement and calls that data movement IO rates.

The data that it is moving on some machines may be IO, but on Sun machines
it is almost always data from the cache.  I don't call data in the cache
IO; maybe you do.

If you want an example of a much more reasonable IO benchmark, and dd just
doesn't cut it for you, then take a look at Tim Bray's benchmark, bonnie.
That benchmark measures IO rates.

If you want a benchmark that measures cache hits versus cache misses, you
can do better than IOstone.  You could run MusBus or any number of
light weight multi user benchmarks.  They do a fairly good job of
measuring your caching / paging / swapping system.  
---
Larry McVoy, Sun Microsystems     (415) 336-7627       ...!sun!lm or lm@sun.com

gillies@m.cs.uiuc.edu (10/24/90)

In all this IOStone talk, I only hear about disk performance and disk
cacheing.  That is not enough.

Paging is important
Network throughput is important
Serial I/O (like a 56Kbaud download from another machine) is
   important.
High Bandwidth Display is *very* important.

In fact, it's my impression that manufacturers are MORE likely to
screw up these other areas, rather than disk I/O.  There seems to be
more disk I/O standardization (SCSI, Unix, stdio.h) than ethernet,
video display, or serial line driver interface standardization.

Are these other IO performances tested by IOStone?


Don W. Gillies, Dept. of Computer Science, University of Illinois
1304 W. Springfield, Urbana, Ill 61801      
ARPA: gillies@cs.uiuc.edu   UUCP: {uunet,harvard}!uiucdcs!gillies

lm@slovax.Sun.COM (Larry McVoy) (10/25/90)

In article <3300200@m.cs.uiuc.edu> gillies@m.cs.uiuc.edu writes:
>
>In all this IOStone talk, I only hear about disk performance and disk
>cacheing.  That is not enough.
>
>Paging is important
>Network throughput is important
>Serial I/O (like a 56Kbaud download from another machine) is
>   important.
>High Bandwidth Display is *very* important.
>
>In fact, it's my impression that manufacturers are MORE likely to
>screw up these other areas, rather than disk I/O.  There seems to be
>more disk I/O standardization (SCSI, Unix, stdio.h) than ethernet,
>video display, or serial line driver interface standardization.
>
>Are these other IO performances tested by IOStone?

Nope.  IOstone does not even pretend to deal with these areas.  It pretends
to deal with only disk I/O and doesn't do that right.  

	translate("IOstone")
	{
		return ("CacheStone");
	}

Now I don't like IOstone, for reasons that have been widely discussed and 
confirmed by others in private mail (thanks guys), so you may want to hear
it from the authors.  But they'll tell you it is just a disk benchmark.

---
Larry McVoy, Sun Microsystems     (415) 336-7627       ...!sun!lm or lm@sun.com