From: Peter Xu <peterx@redhat.com>
To: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: Manish Mishra <manish.mishra@nutanix.com>,
qemu-devel@nongnu.org, leobras@redhat.com, farosas@suse.de,
Juraj Marcin <jmarcin@redhat.com>
Subject: Re: [PATCH v2] QIOChannelSocket: Flush zerocopy socket error queue on ENOBUF failure for sendmsg
Date: Tue, 11 Mar 2025 17:37:04 -0400 [thread overview]
Message-ID: <Z9CtAAA1HH-c7CHd@x1.local> (raw)
In-Reply-To: <Z9CYIqgyD4E6U38x@redhat.com>
On Tue, Mar 11, 2025 at 08:08:02PM +0000, Daniel P. Berrangé wrote:
> On Tue, Mar 11, 2025 at 03:57:35PM -0400, Peter Xu wrote:
> > On Tue, Mar 11, 2025 at 03:33:23PM +0000, Daniel P. Berrangé wrote:
> > > On Tue, Mar 11, 2025 at 11:20:50AM -0400, Peter Xu wrote:
> > > > On Tue, Mar 11, 2025 at 08:13:16AM +0000, Daniel P. Berrangé wrote:
> > > > > On Mon, Mar 10, 2025 at 04:03:26PM -0400, Peter Xu wrote:
> > > > > > On Mon, Mar 10, 2025 at 07:48:16PM +0000, Daniel P. Berrangé wrote:
> > > > > > > Given this is in public API, the data needs to remain reported accurately
> > > > > > > for the whole deprecation period. IOW, the patch to qiochannel needs to
> > > > > > > preserve this data too.
> > > > > >
> > > > > > :-(
> > > > > >
> > > > > > We could potentially mark MigrationStats to be experimental as a whole and
> > > > > > declare that in deprecate.rst too, then after two releases, we can randomly
> > > > > > add / remove fields as wish without always need to go through the
> > > > > > deprecation process, am I right?
> > > > >
> > > > > IMHO that would be an abuse of the process and harmful to applications
> > > > > and users consuming stats.
> > > >
> > > > Ah I just noticed that's the exact same one we included in
> > > > query-migrate.. Then yes, the stable ABI is important here.
> > > >
> > > > So for this specific case, maybe we shouldn't have exposed it in QMP from
> > > > the start.
> > > >
> > > > To me, it's a question on whether we could have something experimental and
> > > > be exposed to QMP, where we don't need to guarantee a strict stable ABI, or
> > > > a very loose ABI (e.g. we can guarantee the command exists, and with
> > > > key-value string-integer pairs, nothing else).
> > >
> > > QMP has the ability to tag commands/fields, etc as experimental.
> > >
> > > libvirt will explicitly avoid consuming or exposing anything with
> > > an experimental tag on it.
> > >
> > > > Maybe what we need is a new MigrationInfoOptional, to be embeded into
> > > > MigrationInfo (or not), marked experimental. Then in the future whenever
> > > > we want to add some new statistics, we could decide whether it should be
> > > > part of stable ABI or not.
> > >
> > > That is not required - individual struct fields can be marked
> > > experimental.
> >
> > Yes that'll work too. The important bit here is I think we should start to
> > seriously evaluate which to expose to QAPI as stable API when we add stats
> > into it. We used to not pay too much attention.
> >
> > With MigrationInfoOptional, we should suggest any new field to be added
> > there by default, then whatever needs to be put out of experimental needs
> > explicit justifications. Or we can also document any new migration field
> > at least in the stats to be marked as experimental unless justified.
> >
> > >
> > > The key question is what the intended usage of the fields/stats/etc
> > > is to be. If you want it used by libvirt and mgmt apps it would need
> > > to be formally supported. If it is just for adhoc QEMU developer
> > > debugging and doesn't need libvirt / app support, then experimental
> > > is fine.
> >
> > To my initial thoughts, I want Libvirt to fetch it. However I don't want
> > Libvirt to parse it.
> >
> > For example, for things like "whether zerocopy send succeeded or not", or
> > "how much time we spent on sending non-iterable device states", they're
> > almost not consumable for users, but great for debuggings. It would be
> > great if Libvirt could know their existance, fetch it (e.g. once after
> > migration completes) then dump it to the logfile to help debugging and
> > triaging QEMU issues. In that case parsing is not needed, the whole result
> > can be attached to the log as a JSON blob. That releases the burden from
> > the need to maintain compatibility that we don't really need and nobody
> > cared (I bet it's the case here for zerocopy stats, but we got restricted
> > by our promises even if it may ultimately benefit nobody..).
>
> We already log every single QMP command & response and event we deal
> with, at INFO level, but by default our log files are only set to
> capture WARN level, so this isn't visible without extra config steps
> by the ademin
>
> Possibly we could think about dumping all migration stats to
> /var/log/libvirt/qemu/$GUEST.log at migration completion
Yes it would be great to have it if it's trivial to get. It could be a
last round of 'query-migrate' dumped only on src after migration is
completed, right before src QEMU shuts down.
Thanks,
--
Peter Xu
prev parent reply other threads:[~2025-03-11 21:38 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-10 1:15 [PATCH v2] QIOChannelSocket: Flush zerocopy socket error queue on ENOBUF failure for sendmsg Manish Mishra
2025-03-10 19:12 ` Peter Xu
2025-03-10 19:48 ` Daniel P. Berrangé
2025-03-10 20:03 ` Peter Xu
2025-03-10 22:45 ` Manish
2025-03-11 15:22 ` Peter Xu
2025-03-11 15:30 ` Manish
2025-03-11 8:13 ` Daniel P. Berrangé
2025-03-11 15:20 ` Peter Xu
2025-03-11 15:33 ` Daniel P. Berrangé
2025-03-11 19:57 ` Peter Xu
2025-03-11 20:08 ` Daniel P. Berrangé
2025-03-11 21:37 ` Peter Xu [this message]
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=Z9CtAAA1HH-c7CHd@x1.local \
--to=peterx@redhat.com \
--cc=berrange@redhat.com \
--cc=farosas@suse.de \
--cc=jmarcin@redhat.com \
--cc=leobras@redhat.com \
--cc=manish.mishra@nutanix.com \
--cc=qemu-devel@nongnu.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).