
On 2023/4/24 18:57, Jiri Denemark wrote:
On Fri, Apr 21, 2023 at 17:39:12 +0800, Jiang Jiacheng wrote:
Thank you for your reply and review, I'd appreciate for you to do that.
And I'd also like to confirm that we have the following usages after the modification. for non-parallel migration, we can use
--compressed default to use XBZRLE for migration
--compressed --comp-methods ... use the specificed methods for migration
--comp-methods ... use the specificed methods for migration, and set the corresponding cap
and those are forbidden since the method isn't supported with non-parallel migration
[--compressed] --comp-methods=zlib [--compressed] --comp-methods=zstd
Correct.
for parallel migration, we have to enable the cap using "--parallel", and can use like:
--parallel default to NONE compression method for parallel migration
--parallel --comp-methods ... use the specificed methods for parallel migration
--parallel --compressed --comp-methods ... use the specificed methods for parallel migration, it's same as the above
and those are forbidden since the method isn't supported with parallel migration
--parallel [--compressed] --comp-methods=mt --parallel [--compressed] --comp-methods=xbzrle
Right, but see below...
In particular,
--parallel --compressed
is forbiddene because it leads to a result that NONE compression method is chosen but compressed flag is set. And I test it on libvirt-6.2.0 with qemu-6.2.0, '--parallel --compressed' will set cap 'xbzrle' and 'multifd' both to true, which I think is unreasonable though the migration is succeed.
Hmm, that would mean xbzrle is supported even for parallel migrations and we should not break this functionality. I experimented a bit and both mt and xbzrle compression methods seem to work with parallel migration. Even query-migrate reports compression statistics that suggest it actually works since they are similar for both normal and --parallel migrations.
On the other hand according to Juan from QEMU none of them is compatible with parallel migration. I will try to discuss this a bit more with him, but so far I think we should allow both xbzrle and mt with parallel migration to avoid breaking things people might be using.
I found that there is a patch about this in qemu, which disables multifd capability explicitly when compression=on. Maybe xbzrle have the same problem as mt? ref:https://github.com/qemu/qemu/commit/6f39c90b86b9d3772779f873ed88aaa75a220aba Thanks, Jiang Jiacheng