Tracing qemu-img calls when creating a new disk image from virt-manager:
Before change the qemu-img that libvirt emits due to the XML from virt-manager
is:
$ /usr/bin/qemu-img create -f qcow2 -o
preallocation=falloc,compat=1.1,lazy_refcounts
/var/lib/libvirt/images/ubuntu20.04.qcow2 26214400K
And as we know from before, if you run that on ZFS that is slower than
one would hope.
Trying the libvirt build from the PPA.
4 0 162200 142352 20 0 163100 5120 poll_s Sl ? 0:03 \_
/usr/bin/qemu-img create -f qcow2 -o
preallocation=falloc,compat=1.1,lazy_refcounts
/var/lib/libvirt/images/ubuntu20.04-b.qcow2 26214400K
That is still as slow since it is the same qemu-img call.
Despite [1] being applied.
Actually looking at it more critically
Let's check what happens in that function
break on virStorageBackendCreateQemuImgCmdFromVol in gdb with source and debug
symbols from the PPA in place.
Thanks to the compiler we don't see a lot:
(gdb) p info
$1 = {format = <optimized out>, type = 0x7fb98e58bdbc "qcow2", inputType =
<optimized out>, path = <optimized out>, size_arg = <optimized out>, allocation
= <optimized out>,
encryption = <optimized out>, preallocate = <optimized out>, compat =
<optimized out>, features = <optimized out>, nocow = <optimized out>,
backingPath = <optimized out>,
backingFormat = <optimized out>, inputPath = <optimized out>, inputFormatStr
= <optimized out>, inputFormat = <optimized out>, secretAlias = <optimized out>}
b virStorageBackendCreateQemuImgCmdFromVol
b storageBackendCreateQemuImgOpts
b storageBackendCreateQemuImgSetOptions
b ../../../src/storage/storage_util.c:712
712 if (info->preallocate) {
713 if (info->size_arg > info->allocation)
714 virBufferAddLit(&buf, "preallocation=metadata,");
715 else
716 virBufferAddLit(&buf, "preallocation=falloc,");
(gdb) p info->preallocate
$1 = <optimized out>
(gdb) p info->size_arg
$2 = <optimized out>
(gdb) p info->allocation
$3 = <optimized out>
Hrm, this needs an -O0 build or I'll go crazy
[1]: https://libvirt.org/git/?p=libvirt.git;a=commit;h=81a3042a12c7c06
--
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to zfs-linux in Ubuntu.
https://bugs.launchpad.net/bugs/1847105
Title:
very slow disk creation, snapshotting
Status in virt-manager:
Fix Released
Status in Native ZFS for Linux:
New
Status in libvirt package in Ubuntu:
Triaged
Status in virt-manager package in Ubuntu:
Triaged
Status in zfs-linux package in Ubuntu:
New
Status in libvirt source package in Bionic:
Invalid
Status in virt-manager source package in Bionic:
Invalid
Status in zfs-linux source package in Bionic:
Won't Fix
Status in libvirt source package in Disco:
Won't Fix
Status in virt-manager source package in Disco:
Won't Fix
Status in zfs-linux source package in Disco:
Won't Fix
Status in libvirt source package in Focal:
Triaged
Status in libvirt source package in Groovy:
Triaged
Bug description:
This is a regression in eoan for me. I use virt-manager to create vms,
and I noticed that creating one now takes more than a minute.
Looking at the process listing while the backing disk is being created, I see
this qemu-img command line:
15658 ? Ssl 0:00 /usr/sbin/libvirtd
23726 ? Sl 0:04 \_ /usr/bin/qemu-img create -f qcow2 -o
preallocation=falloc,compat=1.1,lazy_refcounts
/var/lib/libvirt/images/live-server.qcow2 41943040K
If I run qemu-img with that preallocation parameter set, even on
bionic, then it also takes a very long time.
On eoan, for comparison:
andreas@nsn7:~$ time qemu-img create -f qcow2 no-prealloc-image.qcow2 40G
Formatting 'no-prealloc-image.qcow2', fmt=qcow2 size=42949672960
cluster_size=65536 lazy_refcounts=off refcount_bits=16
real 0m0,016s
user 0m0,010s
sys 0m0,006s
andreas@nsn7:~$ qemu-img info no-prealloc-image.qcow2
image: no-prealloc-image.qcow2
file format: qcow2
virtual size: 40G (42949672960 bytes)
disk size: 17K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
andreas@nsn7:~$ du -hs no-prealloc-image.qcow2
17K no-prealloc-image.qcow2
andreas@nsn7:~$
and now with preallocation=falloc:
andreas@nsn7:~$ time qemu-img create -f qcow2 -o preallocation=falloc
with-prealloc-image.qcow2 40G
Formatting 'with-prealloc-image.qcow2', fmt=qcow2 size=42949672960
cluster_size=65536 preallocation=falloc lazy_refcounts=off refcount_bits=16
real 1m43,196s
user 0m3,564s
sys 1m26,720s
andreas@nsn7:~$ qemu-img info with-prealloc-image.qcow2
image: with-prealloc-image.qcow2
file format: qcow2
virtual size: 40G (42949672960 bytes)
disk size: 2.7M
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
andreas@nsn7:~$ du -hs with-prealloc-image.qcow2
2,8M with-prealloc-image.qcow2
andreas@nsn7:~$
ProblemType: Bug
DistroRelease: Ubuntu 19.10
Package: libvirt-daemon 5.4.0-0ubuntu5
ProcVersionSignature: Ubuntu 5.3.0-13.14-generic 5.3.0
Uname: Linux 5.3.0-13-generic x86_64
NonfreeKernelModules: zfs zunicode zavl icp zcommon znvpair
ApportVersion: 2.20.11-0ubuntu7
Architecture: amd64
Date: Mon Oct 7 11:36:03 2019
InstallationDate: Installed on 2019-10-07 (0 days ago)
InstallationMedia: Ubuntu 19.10 "Eoan Ermine" - Beta amd64 (20191006)
SourcePackage: libvirt
UpgradeStatus: No upgrade log present (probably fresh install)
modified.conffile..etc.libvirt.nwfilter.allow-arp.xml: [inaccessible: [Errno
13] Permission denied: '/etc/libvirt/nwfilter/allow-arp.xml']
modified.conffile..etc.libvirt.nwfilter.allow-dhcp-server.xml: [inaccessible:
[Errno 13] Permission denied: '/etc/libvirt/nwfilter/allow-dhcp-server.xml']
modified.conffile..etc.libvirt.nwfilter.allow-dhcp.xml: [inaccessible: [Errno
13] Permission denied: '/etc/libvirt/nwfilter/allow-dhcp.xml']
modified.conffile..etc.libvirt.nwfilter.allow-incoming-ipv4.xml:
[inaccessible: [Errno 13] Permission denied:
'/etc/libvirt/nwfilter/allow-incoming-ipv4.xml']
modified.conffile..etc.libvirt.nwfilter.allow-ipv4.xml: [inaccessible: [Errno
13] Permission denied: '/etc/libvirt/nwfilter/allow-ipv4.xml']
modified.conffile..etc.libvirt.nwfilter.clean-traffic-gateway.xml:
[inaccessible: [Errno 13] Permission denied:
'/etc/libvirt/nwfilter/clean-traffic-gateway.xml']
modified.conffile..etc.libvirt.nwfilter.clean-traffic.xml: [inaccessible:
[Errno 13] Permission denied: '/etc/libvirt/nwfilter/clean-traffic.xml']
modified.conffile..etc.libvirt.nwfilter.no-arp-ip-spoofing.xml:
[inaccessible: [Errno 13] Permission denied:
'/etc/libvirt/nwfilter/no-arp-ip-spoofing.xml']
modified.conffile..etc.libvirt.nwfilter.no-arp-mac-spoofing.xml:
[inaccessible: [Errno 13] Permission denied:
'/etc/libvirt/nwfilter/no-arp-mac-spoofing.xml']
modified.conffile..etc.libvirt.nwfilter.no-arp-spoofing.xml: [inaccessible:
[Errno 13] Permission denied: '/etc/libvirt/nwfilter/no-arp-spoofing.xml']
modified.conffile..etc.libvirt.nwfilter.no-ip-multicast.xml: [inaccessible:
[Errno 13] Permission denied: '/etc/libvirt/nwfilter/no-ip-multicast.xml']
modified.conffile..etc.libvirt.nwfilter.no-ip-spoofing.xml: [inaccessible:
[Errno 13] Permission denied: '/etc/libvirt/nwfilter/no-ip-spoofing.xml']
modified.conffile..etc.libvirt.nwfilter.no-mac-broadcast.xml: [inaccessible:
[Errno 13] Permission denied: '/etc/libvirt/nwfilter/no-mac-broadcast.xml']
modified.conffile..etc.libvirt.nwfilter.no-mac-spoofing.xml: [inaccessible:
[Errno 13] Permission denied: '/etc/libvirt/nwfilter/no-mac-spoofing.xml']
modified.conffile..etc.libvirt.nwfilter.no-other-l2-traffic.xml:
[inaccessible: [Errno 13] Permission denied:
'/etc/libvirt/nwfilter/no-other-l2-traffic.xml']
modified.conffile..etc.libvirt.nwfilter.no-other-rarp-traffic.xml:
[inaccessible: [Errno 13] Permission denied:
'/etc/libvirt/nwfilter/no-other-rarp-traffic.xml']
modified.conffile..etc.libvirt.nwfilter.qemu-announce-self-rarp.xml:
[inaccessible: [Errno 13] Permission denied:
'/etc/libvirt/nwfilter/qemu-announce-self-rarp.xml']
modified.conffile..etc.libvirt.nwfilter.qemu-announce-self.xml:
[inaccessible: [Errno 13] Permission denied:
'/etc/libvirt/nwfilter/qemu-announce-self.xml']
modified.conffile..etc.libvirt.qemu.conf: [inaccessible: [Errno 13]
Permission denied: '/etc/libvirt/qemu.conf']
modified.conffile..etc.libvirt.qemu.networks.default.xml: [inaccessible:
[Errno 13] Permission denied: '/etc/libvirt/qemu/networks/default.xml']
To manage notifications about this bug go to:
https://bugs.launchpad.net/virt-manager/+bug/1847105/+subscriptions
--
Mailing list: https://launchpad.net/~kernel-packages
Post to : [email protected]
Unsubscribe : https://launchpad.net/~kernel-packages
More help : https://help.launchpad.net/ListHelp