This actually turns out to be related to dd's default block size. By default, dd uses a block size of 512. The effect of this is that qemu fills the pipe buffer very quickly because dd just is submitting very small requests (that will require a RMW).
If you set an explict block size with dd (via bs=1M), you'll notice a significant improvement in throughput. So I think this turns out to be a libvirt issue, not a qemu issue. ** Changed in: qemu Status: Confirmed => Invalid -- virsh save is very slow https://bugs.launchpad.net/bugs/524447 You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. Status in QEMU: Invalid Status in “qemu-kvm” package in Ubuntu: Confirmed Bug description: As reported here: http://www.redhat.com/archives/libvir-list/2009-December/msg00203.html "virsh save" is very slow - it writes the image at around 1MB/sec on my test system. (I think I saw a bug report for this issue on Fedora's bugzilla, but I can't find it now...) Confirmed under Karmic.