Path: utzoo!utgpu!news-server.csri.toronto.edu!rutgers!usc!elroy.jpl.nasa.gov!jarthur!uunet!virtech!cpcahil From: cpcahil@virtech.uucp (Conor P. Cahill) Newsgroups: comp.unix.sysv386 Subject: Re: Disk benchmark (long) Message-ID: <1990Oct15.233517.19388@virtech.uucp> Date: 15 Oct 90 23:35:17 GMT References: <1990Oct9.015948.551@jdyx.UUCP> <1990Oct12.231159.23105@ico.isc.com> <1990Oct13.032355.3176@jdyx.UUCP> <4190@segue.segue.com> <1990Oct15.091904.5439@jdyx.UUCP> Reply-To: cpcahil@virtech.UUCP (Conor P. Cahill) Distribution: usa Organization: Virtual Technologies Inc., Sterling VA Lines: 27 In article <1990Oct15.091904.5439@jdyx.UUCP> shawn@jdyx.UUCP (Shawn Hayes) writes: > I've tried modifying the benchmark to write/read from the raw-disk >interface, but I had some problems with it. I kept getting phys-io errors >in my tests. If you've got a sample of code that handles raw-disk io I'd be I didn't look at the benchmark that you posted, but to read/write from a raw device all you need to do is write the data in whole blocks to whole block boundaries. For most systems the block size is 512. For some (like a gould powernode) it is 1K. If you always write it in multiples of 1K you satisfy both systems. There is also an upper limit for the size of a single i/o on the raw deivce on some systems (Perkin-Elmer has a limit of around 400K). The part about "write to whole block boundries" means that a given write must begin at the start of a disk block. You cant do the following: lseek(fd,5,0); write(fd,block,blocksize); Unless, of course, the block size for that device is 5. -- Conor P. Cahill (703)430-9247 Virtual Technologies, Inc., uunet!virtech!cpcahil 46030 Manekin Plaza, Suite 160 Sterling, VA 22170