> > Unfortunately, NBD add considerable overheads. I guess the socket > communications copies data. > > This is really unnecessary if I can write directly to the output stream. > > The disk is the bottleneck, not memory bandwidth. Hard disks only do > 10-100 MB/sec and SSDs only do a couple 100 MB/sec. Memory copy is > insignificant compared to the I/O activity required to copy out the entire > disk > image, not to mention delaying guest writes until we read the original data > from > the disk. > > Unless there's a concrete performance problem here this is premature > optimization.
I currently test with about 700MB read speed, and get a slow down by factor 1.7. So memory copy is very significant , or there is something wrong with nbd.c. RAID with normal HDs can easily give you 500MB/s, and RAID with multiple SSDs can give you more than 1000MB/s read speed. There are some high performance ipc libraries, for example the one from corosync: http://kernel.org/doc/ols/2009/ols2009-pages-61-68.pdf Such libraries tries to avoid copying data.