From: Peter Xu <peterx@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: qemu-devel@nongnu.org, "Joao Martins" <joao.m.martins@oracle.com>,
"Cédric Le Goater" <clg@redhat.com>,
"Avihai Horon" <avihaih@nvidia.com>,
"Daniel P . Berrangé" <berrange@redhat.com>,
"Fabiano Rosas" <farosas@suse.de>,
"Prasad Pandit" <ppandit@redhat.com>,
"Alex Williamson" <alex@shazbot.org>,
"Kirti Wankhede" <kwankhede@nvidia.com>,
"Zhiyi Guo" <zhguo@redhat.com>,
"Maciej S . Szmigiero" <mail@maciej.szmigiero.name>,
"Juraj Marcin" <jmarcin@redhat.com>,
"Dr. David Alan Gilbert" <dave@treblig.org>
Subject: Re: [PATCH v2 14/16] migration/qapi: Introduce system-wise "remaining" reports
Date: Fri, 24 Apr 2026 11:15:20 -0400 [thread overview]
Message-ID: <aeuJCI0OCW-ohJih@x1.local> (raw)
In-Reply-To: <87cxzovncu.fsf@pond.sub.org>
On Fri, Apr 24, 2026 at 09:17:21AM +0200, Markus Armbruster wrote:
> Peter Xu <peterx@redhat.com> writes:
>
> > Currently, mgmt can only query for remaining RAM,
>
> Remind me: how?
It is the same command, as mentioned in [1] below. I'll enrich the commit
message here to explain.
>
> > not system-wise remaining
> > data. It was not a problem before, because for a very long time RAM was
> > the only part that matters.
> >
> > After VFIO migrations landed upstream, it may not be true anymore
> > especially considering that there can be GPU devices that contain GBs of
> > device states.
> >
> > Add a new "remaining" field in query-migrate results, reflecting
> > system-wise remaining data, which will include everything (e.g. VFIO).
>
> "system-wise"? Do you mean "system-wide"? Maybe "total"?
Since "total" has been used elsewhere, I'll use "system-wide", hoping
that's easier to digest.
> >
> > This information will be useful for mgmt to implement generic way of stall
> > detection that covers all system resources. Say, when system remaining
> > data does not decrease anymore for a relatively long period of time, then
> > it may mean that there is a challenge of converging, so mgmt can act based
> > on how this value changes over time (especially if sampled after each
> > migration iteration).
> >
> > Before this patch, "expected_downtime" almost played this role. For
> > example, by monitoring "expected_downtime" at the beginning of each
> > iteration can in most cases also reflect the progress of migration
> > system-wise. Said that, "expected_downtime" was always calculated based on
> > a bandwidth value that can fluctuate a lot if avail-switchover-bandwidth is
> > not used. This new "remaining" field will remove that part of uncertainty
> > for mgmt.
> >
> > With the new field, HMP "info migrate" now reports this:
> >
> > (qemu) info migrate
> > Status: active
> > Time (ms): total=12080, setup=14, exp_down=300
> > Remaining: 1.36 GiB <------------------- newline
>
> "Newline" is ASCI character '\n'. I guess you mean "this is the new
> line".
Yes. I'll remove this "<----..." if it causes any confusion.
>
> > RAM info:
> > Throughput (Mbps): 840.50
> > Sizes: pagesize=4 KiB, total=4.02 GiB
> > Transfers: transferred=1.18 GiB, remain=1.36 GiB
> > Channels: precopy=1.18 GiB, multifd=0 B, postcopy=0 B
> > Page Types: normal=307923, zero=388148
> > Page Rates (pps): transfer=25660
> > Others: dirty_syncs=1
> >
> > It should be the same value as RAM's remaining report when VFIO is not
> > involved, and it should report more than that when VFIO is involved.
>
> "RAM's remaining report" is the "remain=1.36 GiB" part, isn't it?
[1]
Correct.
>
> > Cc: Markus Armbruster <armbru@redhat.com>
> > Reviewed-by: Juraj Marcin <jmarcin@redhat.com>
> > Reviewed-by: Dr. David Alan Gilbert <dave@treblig.org>
> > Signed-off-by: Peter Xu <peterx@redhat.com>
> > ---
> > qapi/migration.json | 4 ++++
> > migration/migration-hmp-cmds.c | 5 +++++
> > migration/migration.c | 7 +++++++
> > 3 files changed, 16 insertions(+)
> >
> > diff --git a/qapi/migration.json b/qapi/migration.json
> > index e3ad3f0604..a6e24b5685 100644
> > --- a/qapi/migration.json
> > +++ b/qapi/migration.json
> > @@ -300,6 +300,9 @@
> > # average memory load of the virtual CPU indirectly. Note that
> > # zero means guest doesn't dirty memory. (Since 8.1)
> > #
> > +# @remaining: amount of bytes remaining to be migrated system-wise,
> > +# includes both RAM and all devices (like VFIO). (Since 11.1)
> > +#
> > # Features:
> > #
> > # @unstable: Members @postcopy-latency, @postcopy-vcpu-latency,
> > @@ -310,6 +313,7 @@
> > ##
> > { 'struct': 'MigrationInfo',
> > 'data': {'*status': 'MigrationStatus', '*ram': 'MigrationRAMStats',
> > + '*remaining': 'uint64',
>
> It's a byte count, so let's make it 'size'.
Will do.
Since this will be the last functional change so far on the whole series,
and the update seems to be pretty under control (say, qapi schema.py
generates same c code for both "size" and "uint64"), could I request an ACK
on this one with a short diff below, instead of reposting the whole series?
The diff attached here (I'll also fix the commit messages on
e.g. system-wide wordings if I'll not repost):
diff --git a/qapi/migration.json b/qapi/migration.json
index b7518b29c6..c701ef1cf5 100644
--- a/qapi/migration.json
+++ b/qapi/migration.json
@@ -300,7 +300,7 @@
# average memory load of the virtual CPU indirectly. Note that
# zero means guest doesn't dirty memory. (Since 8.1)
#
-# @remaining: amount of bytes remaining to be migrated system-wise,
+# @remaining: amount of bytes remaining to be migrated system-wide,
# includes both RAM and all devices (like VFIO). (Since 11.1)
#
# Features:
@@ -313,7 +313,7 @@
##
{ 'struct': 'MigrationInfo',
'data': {'*status': 'MigrationStatus', '*ram': 'MigrationRAMStats',
- '*remaining': 'uint64',
+ '*remaining': 'size',
'*vfio': 'VfioStats',
'*xbzrle-cache': 'XBZRLECacheStats',
'*total-time': 'int',
===8<====
The complete new version of patch is here (I updated quite a few places on
the commit message):
https://gitlab.com/peterx/qemu/-/commit/86d973360890cecc564a4a5bcf9a01b9efde368a
Thanks,
--
Peter Xu
next prev parent reply other threads:[~2026-04-24 15:16 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-21 20:20 [PATCH v2 00/16] migration/vfio: Fix a few issues on API misuse or statistic reports Peter Xu
2026-04-21 20:20 ` [PATCH v2 01/16] qemu-iotests: Add query-migrate test for dirty-bitmap Peter Xu
2026-04-22 8:08 ` Vladimir Sementsov-Ogievskiy
2026-04-24 14:50 ` Peter Xu
2026-04-21 20:20 ` [PATCH v2 02/16] migration: Fix low possibility downtime violation Peter Xu
2026-04-21 20:20 ` [PATCH v2 03/16] migration/qapi: Rename MigrationStats to MigrationRAMStats Peter Xu
2026-04-24 9:03 ` Markus Armbruster
2026-04-21 20:20 ` [PATCH v2 04/16] vfio/migration: Cache stop size in VFIOMigration Peter Xu
2026-04-21 20:20 ` [PATCH v2 05/16] migration/treewide: Merge @state_pending_{exact|estimate} APIs Peter Xu
2026-04-22 8:23 ` Vladimir Sementsov-Ogievskiy
2026-04-22 8:29 ` Vladimir Sementsov-Ogievskiy
2026-04-22 15:44 ` Peter Xu
2026-04-22 17:06 ` Vladimir Sementsov-Ogievskiy
2026-04-21 20:21 ` [PATCH v2 06/16] migration: Use the new save_query_pending() API directly Peter Xu
2026-04-21 20:21 ` [PATCH v2 07/16] migration: Introduce stopcopy_bytes in save_query_pending() Peter Xu
2026-04-22 13:16 ` Juraj Marcin
2026-04-23 15:05 ` Avihai Horon
2026-04-21 20:21 ` [PATCH v2 08/16] vfio/migration: Fix incorrect reporting for VFIO pending data Peter Xu
2026-04-21 20:21 ` [PATCH v2 09/16] migration: Move iteration counter out of RAM Peter Xu
2026-04-21 20:21 ` [PATCH v2 10/16] migration: Introduce a helper to return switchover bw estimate Peter Xu
2026-04-21 20:21 ` [PATCH v2 11/16] migration: Calculate expected downtime on demand Peter Xu
2026-04-21 20:21 ` [PATCH v2 12/16] migration: Fix calculation of expected_downtime to take VFIO info Peter Xu
2026-04-21 20:21 ` [PATCH v2 13/16] migration: Remember total dirty bytes in mig_stats Peter Xu
2026-04-22 13:18 ` Juraj Marcin
2026-04-21 20:21 ` [PATCH v2 14/16] migration/qapi: Introduce system-wise "remaining" reports Peter Xu
2026-04-24 7:17 ` Markus Armbruster
2026-04-24 15:15 ` Peter Xu [this message]
2026-04-25 5:46 ` Markus Armbruster
2026-04-28 15:26 ` Peter Xu
2026-04-28 19:02 ` Markus Armbruster
2026-04-21 20:21 ` [PATCH v2 15/16] migration/qapi: Update unit for avail-switchover-bandwidth Peter Xu
2026-04-24 7:18 ` Markus Armbruster
2026-04-21 20:21 ` [PATCH v2 16/16] vfio/migration: Add tracepoints for precopy/stopcopy query ioctls Peter Xu
2026-04-22 7:51 ` Cédric Le Goater
2026-04-22 7:52 ` Cédric Le Goater
2026-04-22 9:56 ` Cédric Le Goater
2026-04-23 15:10 ` Avihai Horon
2026-04-29 14:46 ` Avihai Horon
2026-04-29 15:43 ` Peter Xu
2026-04-29 18:03 ` Avihai Horon
2026-04-29 19:52 ` [PATCH v2 00/16] migration/vfio: Fix a few issues on API misuse or statistic reports Peter Xu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aeuJCI0OCW-ohJih@x1.local \
--to=peterx@redhat.com \
--cc=alex@shazbot.org \
--cc=armbru@redhat.com \
--cc=avihaih@nvidia.com \
--cc=berrange@redhat.com \
--cc=clg@redhat.com \
--cc=dave@treblig.org \
--cc=farosas@suse.de \
--cc=jmarcin@redhat.com \
--cc=joao.m.martins@oracle.com \
--cc=kwankhede@nvidia.com \
--cc=mail@maciej.szmigiero.name \
--cc=ppandit@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=zhguo@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.