z'mIO is mainly a block device benchmark with emphasis on asynchronous I/O in the linux kernel. The benchmark also works on regular files. The linux libaio API is used instead of the POSIX aio interface due to the low queue depths of the linux POSIX aio implementation. If you don't have the libaio header files installed, you should put libaio.h in the benchmark directory and execute: make nompi_nolibaio For more information execute: ./zmIO --help -------------------------------------------------------------------------------- Usage: z'mIO -- Raw device Benchmark options: --system filename: System's configuration file --sequent "f:no/"|operations|"unit:B": Sequential access pattern --strided "f:no/"|operations|"unit:B": Strided access pattern --random "f:no/"|operations|"unit:B": Random access pattern A pattern has frequency no% [1,100], request size B bytes. Operations are defined per pattern and are: r=read, w=write, rw=read-write, rr=re-read, ww=re-write operations="r:no/w:no/rw:no/rr:no/ww:no": frequency no% [1, 100] --time value: Time limit of benchmark's execution in seconds --io_out value: Number of I/O outstanding requests --direct value: Direct I/O (0: not set / 1:set) --sync value: Synchronous I/O (0: not set / 1:set) --file value: File I/O instead of block device I/O (0: not set / 1:set) --touch value: Touch data-buffer at every I/O (0: not set / 1:set) --help: Print options usage and exit The system configuration file has one line per thread accessing a device/file: hostname.mydomain.com filename =============================================================================== Example =============================================================================== System configuration file with name myconf and contents: localhost /dev/sda Command line with parameters: ./zmIO --system myconf --sequent "f:50/r:100/unit:65536" --random "f:50/r:30/w:70/unit:4096" --direct 1 --time 30 --io_out 64 In this run, one thread opens block device /dev/sda for direct I/O. Total run time of the experiment is 30 seconds. There are at most 64 outstanding I/Os in the device queue. There is 50% chance for an operation to be either sequential or random. In the sequential case streaming reads of 64KB are performed. In the random case, there is 30% reads and 70% writes for 4KB accesses.