I have an application that requires reading from the disk at a high
thruput. The disks I have are in a RAID0 configuration. The disks are
all Ultra 320 and I am using an HP 6402 RAID Controller with a 256K
stripe size. The system is a dual CPU (Xeon 3Ghz) ML 350 server with
hyper threading enabled.
I have a test client that performs random and sequential reads (it is
based on the bonnie code and can be attached if anyone wants it).
I have some puzzling results and for random reads I find the thruput
Please can anyone suggest any tuning parameters that I may be missing
or any insight into this poor performance.
The linux I am using is kernel 2.6.3.
The file size is 3.7GB and the RAM size is 1GB.
Results with a read size of 256K:
1. Seq fread() Read thruput = 1.5Gbps
2. Seq sendfile() (read size 8K) Read thruput = 904Mbps
3. Req mmap()/mlock() Read thruput = 500Mbps
4. Random fread() with a stride size of 512K Read thruput = 496Mbps
5. Random sendfile() (read size 8K) with a stride size of 512K Read
thruput = 312Mbps - this number tends to vary a lot for some reason
over multiple runs.
6. Random mmap/mlock() with a stride size of 512K Read thruput =
All of the above is with a single thread/process doing the reading.
This same configuration handles a random file read thruput of 600Mbps