[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-users] Block I/O questions


after doing a benchmark where Xen 2.0.7 was magnitudes of orders faster
than the native system, I have some questions about how Xen performs
block I/O.

The particular benchmark forks 100 processes, and each process writes a
file of 50 MB, writes it again, reads it, and reads it again. Because we
are doing that 100 times in parallel, I/O scheduling has a massive
effect on the results. (See below for the script.)

For a native system I measured:

- first write: 500 KB/s throughput per process (but sometimes 
  much less)
- second write: 460 KB/s
- first read: 80 KB/s
- second read: 80 KB/s

The Xen VM reversed things:

- first write: 100 KB/s
- second write: 400 KB/s
- first read: 410 KB/s
- second read: 410 KB/s

As you can see the VM is much faster reading the files. Do you have an
explanation for this?

The other surprising effect is that the first write (where the blocks
for the files are allocated) is slower in the VM.

I suppose Xen has additional I/O buffers. Can somebody describe how they
change I/O in general? Are the I/O requests batched or reordered?

Is there an impact on the safety of the disk data? Does buffering
increase the likeliness of filesystem corruption? Are I/O barriers

The script uses iozone (www.iozone.org). /Data is an empty ext3
partition stored in a physical partition.

while [ $n -lt 100 ]; do
  files="$files /Data/testfile.$n"
iozone -i 0 -i 1 -r 64k -s 50M -t 100 -e -F $files


P.S. I also ran this benchmark on ESX server. It crawls...

Gerd Stolpmann * Viktoriastr. 45 * 64293 Darmstadt * Germany 
gerd@xxxxxxxxxxxxxxxxx          http://www.gerd-stolpmann.de
Phone: +49-6151-153855                  Fax: +49-6151-997714

Xen-users mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.