Because EBS disks are shared, their speeds can vary greatly.
"It feels a bit like trying to clock the speed of passing cars with a radar gun
from the back of a rampaging bull."
heroku.com
Most people make use of EBS to persist data,
so this is an important part of the
performance picture.
Measuring only end-to-end performance does not provide enough information
to evaluate the speed offered by a cloud vendor.
So lower-level measurements are necessary on an on-going basis.
heroku.com reports that "Under perfect circumstances a totally untweaked
EBS drive running an ext3 filesystem will get you about
80kb read or write throughput and 7,000 seeks per second.
Two disks in a RAID 0 configuration will get you about
140kb read or write and about 10,000 seeks per second."
Anecdotal comments are that EBS performance maxes out at 20 to 30 disks,
not at the 40 disk limit.
RAID Chunk size
of 256k seemed to be the sweet spot.
This makes a (shockingly) HUGE difference in performance.
Read ahead buffer on the raid of 64k (from 256 bytes)
made a HUGE difference.
Filesystem JFS
(IBM's journaled file system open-source technology)
and
XFS
improves performance more with EBS than the default EXT3 on dedicated servers.
IO scheduler deadline or cfq (but not noop)
improved performance (but not as much as thought).
Among the
IO Benchmarks:
-
bonnie++ by Russell Coker (download)
conducts simple tests of hard drive and file system performance.
The program now has a -b option to cause a fsync()
after every write (and a fsync() of the directory after file create or delete).
Blocking writes is useful to test performance of mail or database servers.
Random Seeks and Random Create are more critical performance metrics
than Sequential Output, Sequential Input, or Sequential Create.