
On Tue, Sep 05, 2023 at 15:57:20 +0100, João Vilaça wrote:
Hello,
I'm using https://gitlab.com/libvirt/libvirt-go-module and executing 'GetJobStats' to get information about the progress of a VM with a disk migration in KubeVirt. Everything works correctly and the migration is successful, with the disk correctly copied.
Across multiple executions of 'GetJobStats' while copying the disk, I get the information about data:
*DataTotal:151592960 DataProcessedSet:true DataProcessed:163080901 DataRemainingSet:true DataRemaining:266240*
about disk total values:
*DiskTotal:21037056 DiskProcessedSet:true DiskProcessed:13631488 DiskRemainingSet:true DiskRemaining:7405568*
but '*DiskBpsSet:false *' and '*DiskBps:0 *' are always false and 0.
Even when I run 'virsh domjobinfo', I get Data and File absolute values, but not the throughput. Is QEMU not reporting this data? Can this be a bug?
This data was available with the old-style disk migration where disk data was migrated over the migration stream. As that was deprecated by qemu, libvirt switched to a new approach where we migrate the disks by using NBD protocol and copying them via 'blockdev-mirror'. Now the qemu blockjobs themselves do not report the actual bandwidth used, just the progress. Since libvirt doesn't want to pointlessly poll this data just to calculate bandwidth, the data is no longer available.