------------ Introduction ------------ This is the IOZone benchmark, compiled for BeOS DR8 and above. It's a simple benchmark for measuring sequential I/O performance, that tests your hard drive, controller, and filesystem for speed. I hope it will be useful to the engineers at Be who are busy redesigning the filesystem for DR9! -------- Contents -------- I've included two binaries, "iozone", and "iozone_mod". iozone is the original C-based source code that uses the POSIX read() and write() calls, and iozone_mod is a version I modified to use BeOS's BFile and BDirectory classes. The source code is included, in iozone.c, and iozone_mod.cpp respectively. Here are the commands I used to compile the binaries: $ mwcc -O7 -o iozone iozone.c $ mwcc -O7 -o iozone_mod iozone_mod.cpp You might expect the modified C++ version to be faster (because it uses the "native" Be API), but I was unable to measure a difference in speed between the two versions! This means that if you're porting a POSIX program to Be, there's probably no reason to spend time modifying it to use BFile. ------- Results ------- For your curiosity, here is the performance of my system, a Dual-66 MHz BeBox with 32MB RAM and a 1GB Quantum SCSI hard drive. The first parameter to iozone is the size of the file to create (in megabytes), and the second parameter is the block size (in bytes). As you can see, BeOS performs much better when reading and writing in large (64k) chunks than with a small block size like the default 512 bytes. Command Read (bytes/sec) Write (bytes/sec) ------- ---------------- ----------------- iozone 32 512 773910 909728 iozone 32 1024 950281 1102494 iozone 32 4096 1254324 1522502 iozone 32 16384 2834467 2718058 iozone 32 65536 3215874 3446428 And here are the results when I ran IOZone on my other system, a 486DX4/100 PC with 36MB RAM and a 1GB Quantum SCSI drive connected to an Adaptec VLB SCSI card running FreeBSD: Command Read (bytes/sec) Write (bytes/sec) ------- ---------------- ----------------- iozone 32 512 3039608 1808407 iozone 32 1024 3558382 2450066 iozone 32 4096 4157761 3904515 iozone 32 16384 4378152 4414149 iozone 32 65536 4554578 4530556 ----------- Conclusions ----------- This is a very simple, yet straightforward benchmark. It clearly shows that Be's I/O performance is acceptable at the higher block sizes, but could certainly stand to be improved, as comparison with my 486 indicates. This will be a good test to run on DR9 when it is released! Jake Hamby (jehamby@lightside.com)