On 6/2/25 16:18, Daniel P. Berrangé wrote:
On Mon, Jun 02, 2025 at 03:27:32PM +0200, Michal Privoznik via Devel
wrote:
> From: Michal Privoznik <mprivozn(a)redhat.com>
>
> The virDomainCoreDump() API has VIR_DUMP_LIVE flag which is
> documented to leave vCPUs running throughout making of the dump
> of guest memory. Well, this is not the case for QEMU which pauses
> vCPUs unconditionally (it calls vm_stop() in dump_init()).
> Document this quirk. And also mention it in 'virsh dump --live'
> manapage.
How long does QEMU keep the vCPUs paused for ? If it is paused for the
entire duration of the dump, then IMHO it is a libvirt bug to allow
the VIR_DUMP_LIVE flag to have been set to begin with, rather than
a behavioural quirk.
Essentially I'd consider VIR_DUMP_LIVE to mean that the vCPUs are
running for the time window when the guest memory is being captured.
If there are small synchronizaiton steps a hypervisor does which
result in temporarily pausing CPUs for only a fraction of a second
that is acceptable wrt VIR_DUMP_LIVE semantics.
Unfortunately, it's the former:
2025-06-02 08:44:54.531+0000: 343: info : qemuMonitorIOWrite:339 :
QEMU_MONITOR_IO_WRITE: mon=0x7f9a4c04bcb0
buf={"execute":"dump-guest-memory","arguments":{"paging":false,"protocol":"fd:dump","detach":true},"id":"libvirt-502"}
len=116 ret=116 errno=0
2025-06-02 08:44:54.532+0000: 343: debug :
qemuMonitorJSONIOProcessLine:193 : Line [{"timestamp": {"seconds":
1748853894, "microseconds": 532565}, "event": "STOP"}]
...
2025-06-02 08:44:55.720+0000: 343: debug :
qemuMonitorJSONIOProcessLine:193 : Line [{"timestamp": {"seconds":
1748853895, "microseconds": 720431}, "event":
"DUMP_COMPLETED", "data":
{"result": {"total": 4303486976, "status":
"completed", "completed":
4303486976}}}]
2025-06-02 08:44:55.720+0000: 343: info :
....
2025-06-02 08:44:55.720+0000: 343: debug :
qemuProcessHandleDumpCompleted:1645 : Dump completed for domain
0x7f9a401c4bf0 fedora with stats=0x7f9a50ffd760 error='<null>'
2025-06-02 08:44:55.720+0000: 343: debug :
qemuMonitorJSONIOProcessLine:193 : Line [{"timestamp": {"seconds":
1748853895, "microseconds": 720492}, "event": "RESUME"}]
2025-06-02 08:44:55.720+0000: 343: info :
Okay, I'll just make qemu driver refuse the flag.
Thanks!
Michal