
On 10/25/2010 08:06 AM, Richard W.M. Jones wrote:
Only step 4 is timed. I ran the program against test.img prepared in 4 different ways:
1. A sparse raw file: 15.3 seconds truncate --size 300M test.img 2. A preallocated raw file: 14.8 seconds fallocate -l 300M test.img 3. A sparse qcow2 file: 223.0 seconds qemu-img create -f qcow2 test.img 300M 4. A metadata preallocated qcow2 file: 14.5 seconds qemu-img create -f qcow2 -o preallocated=metadata test.img 300M
libvirt's qemu driver doesn't currently preallocate qcow2 metadata when creating a new image. Given the tiny disk space overhead of the metadata (0.02%) and the small processing overhead of pre-creation relative to subsequent creation on-the-fly, I suggest that the libvirt qemu driver is updated to pre-allocate metadata by default.
Thoughts?
Your test might run faster if you did:
$g->copy_size ("/dev/zero", "/test", <size of file>);
However I think making the change is a no-brainer. We should add this flag by default.
Is this something that we should just globally enable if qemu supports it, or do we need some XML tunable to allow someone to skip the pre-allocation for some reason? -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org