This microbenchmark can be used to measure the performance and scalability of the block io layer in Linux. The microbenchmark performs a sequential read or readv test and supports multiple processes that can read from both raw devices and scsi devices. The O_DIRECT flag is supported for scsi devices.
We use it to compare :
* rawio mapped to scsi
devices
and direct io to scsi device
* readv writev
The microbenchmark has been enhanced to supports async io, file io, write and writev, and random io.
Here is a readme.
Here is the old microbenchmark source
(v 1.0.3)
gcc -O2 -D_GNU_SOURCE -o rawread rawread.c
Here is an interim source (v 1.1.1)
libaio is now required to build rawread. It can be obtained from
http://www.kernel.org/pub/linux/kernel/people/bcrl/aio/
Here is the current source (v
2.1.11)
libaio is now required to build rawread. It can be obtained from
http://www.kernel.org/pub/linux/kernel/people/bcrl/aio/
gcc -O2 -D_GNU_SOURCE -o -lpthread -laio rawread rawread.c