From: Jonah Palmer <jonah.palmer@oracle.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: Jason Wang <jasowang@redhat.com>,
qemu-devel@nongnu.org, eperezma@redhat.com, peterx@redhat.com,
mst@redhat.com, lvivier@redhat.com, dtatulea@nvidia.com,
leiyang@redhat.com, parav@mellanox.com, sgarzare@redhat.com,
lingshan.zhu@intel.com, boris.ostrovsky@oracle.com,
Si-Wei Liu <si-wei.liu@oracle.com>
Subject: Re: [PATCH v4 0/7] Move memory listener register to vhost_vdpa_init
Date: Wed, 9 Jul 2025 15:57:52 -0400 [thread overview]
Message-ID: <71ae1a0a-a697-4199-ab57-426f6252e224@oracle.com> (raw)
In-Reply-To: <874ivnxfj6.fsf@pond.sub.org>
On 7/8/25 4:17 AM, Markus Armbruster wrote:
> Jonah Palmer <jonah.palmer@oracle.com> writes:
>
>> On 7/4/25 11:00 AM, Markus Armbruster wrote:
>>> Jonah Palmer <jonah.palmer@oracle.com> writes:
>
> [...]
>
>>> So, total time increases: early pinning (before main loop) takes more
>>> time than we save pinning (in the main loop). Correct?
>>
>> Correct. We only save ~0.07s from the pinning that happens in the main loop. But the extra 3s we now need to spend pinning before qemu_main_loop() overshadows it.
>
> Got it.
>
>>> We want this trade, because the time spent in the main loop is a
>>> problem: guest-visible downtime. Correct?
>>> [...]
>>
>> Correct. Though whether or not we want this trade I suppose is subjective. But the 50-60% reduction in guest-visible downtime is pretty nice if we can stomach the initial startup costs.
>
> I'll get back to this at the end.
>
> [...]
>
>>> Let me circle back to my question: Under what circumstances is QMP
>>> responsiveness affected?
>>>
>>> The answer seems to be "only when we're using a vhost-vDPA device".
>>> Correct?
>>
>> Correct, since using one of these guys causes us to do this memory pinning. If we're not using one, it's business as usual for Qemu.
>
> Got it.
>
>>> We're using one exactly when QEMU is running with one of its
>>> vhost-vdpa-device-pci* device models. Correct?
>>
>> Yea, or something like:
>>
>> -netdev type=vhost-vdpa,vhostdev=/dev/vhost-vdpa-0,id=vhost-vdpa0,... \
>> -device virtio-net-pci,netdev=vhost-vdpa0,id=vdpa0,... \
>
> I'll get back to this at the end.
>
> [...]
>
>>> Let me recap:
>>>
>>> * No change at all unless we're pinning memory early, and we're doing
>>> that only when we're using a vhost-vDPA device. Correct?
>>>
>>> * If we are using a vhost-vDPA device:
>>> - Total startup time (until we're done pinning) increases.
>>
>> Correct.
>>
>>> - QMP becomes available later.
>>
>> Correct.
>>
>>> - Main loop behavior improves: less guest-visible downtime, QMP more
>>> responsive (once it's available)
>>
>> Correct. Though the improvement is modest at best if we put aside the guest-visible downtime improvement.
>>
>>> This is a tradeoff we want always. There is no need to let users pick
>>> "faster startup, worse main loop behavior."
>>>
>>
>> "Always" might be subjective here. For example, if there's no desire to perform live migration, then the user kinda just gets stuck with the cons.
>>
>> Whether or not we want to make this configurable though is another discussion.
>>
>>> Correct?
>>>
>>> [...]
>
> I think I finally know enough to give you constructive feedback.
>
> Your commit messages should answer the questions I had. Specifically:
>
> * Why are we doing this? To shorten guest-visible downtime.
>
> * How are we doing this? We additionally pin memory before entering the
> main loop. This speeds up the pinning we still do in the main loop.
>
> * Drawback: slower startup. In particular, QMP becomes
> available later.
>
> * Secondary benefit: main loop responsiveness improves, in particular
> QMP.
>
> * What uses of QEMU are affected? Only with vhost-vDPA. Spell out all
> the ways to get vhost-vDPA, please.
>
> * There's a tradeoff. Show your numbers. Discuss whether this needs to
> be configurable.
>
> If you can make a case for pinning memory this way always, do so. If
> you believe making it configurable would be a good idea, do so. If
> you're not sure, say so in the cover letter, and add a suitable TODO
> comment.
>
> Questions?
>
No questions, understood.
As I was writing the responses to your questions I was thinking to
myself that this stuff should've been in the cover letter / commit
messages in the first place.
Definitely a learning moment for me. Thanks for your time on this Markus!
Jonah
next prev parent reply other threads:[~2025-07-09 19:59 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-07 18:46 [PATCH v4 0/7] Move memory listener register to vhost_vdpa_init Jonah Palmer
2025-05-07 18:46 ` [PATCH v4 1/7] vdpa: check for iova tree initialized at net_client_start Jonah Palmer
2025-05-16 1:52 ` Jason Wang
2025-05-07 18:46 ` [PATCH v4 2/7] vdpa: reorder vhost_vdpa_set_backend_cap Jonah Palmer
2025-05-16 1:53 ` Jason Wang
2025-05-16 1:56 ` Jason Wang
2025-05-07 18:46 ` [PATCH v4 3/7] vdpa: set backend capabilities at vhost_vdpa_init Jonah Palmer
2025-05-16 1:57 ` Jason Wang
2025-05-07 18:46 ` [PATCH v4 4/7] vdpa: add listener_registered Jonah Palmer
2025-05-16 2:00 ` Jason Wang
2025-05-07 18:46 ` [PATCH v4 5/7] vdpa: reorder listener assignment Jonah Palmer
2025-05-16 2:01 ` Jason Wang
2025-05-07 18:46 ` [PATCH v4 6/7] vdpa: move iova_tree allocation to net_vhost_vdpa_init Jonah Palmer
2025-05-16 2:07 ` Jason Wang
2025-05-07 18:46 ` [PATCH v4 7/7] vdpa: move memory listener register to vhost_vdpa_init Jonah Palmer
2025-05-15 5:42 ` Michael S. Tsirkin
2025-05-15 17:36 ` Si-Wei Liu
2025-05-20 13:23 ` Jonah Palmer
2025-05-14 1:42 ` [PATCH v4 0/7] Move " Lei Yang
2025-05-14 15:49 ` Eugenio Perez Martin
2025-05-15 0:17 ` Si-Wei Liu
2025-05-15 5:43 ` Michael S. Tsirkin
2025-05-15 17:41 ` Si-Wei Liu
2025-05-16 10:45 ` Michael S. Tsirkin
2025-05-15 8:30 ` Eugenio Perez Martin
2025-05-16 1:49 ` Jason Wang
2025-05-20 13:27 ` Jonah Palmer
2025-05-14 23:00 ` Si-Wei Liu
2025-05-16 1:47 ` Jason Wang
2025-05-16 1:51 ` Jason Wang
2025-05-16 6:40 ` Markus Armbruster
2025-05-16 19:09 ` Si-Wei Liu
2025-05-26 9:16 ` Markus Armbruster
2025-05-29 7:57 ` Si-Wei Liu
2025-06-02 8:08 ` Markus Armbruster
2025-06-02 8:29 ` Markus Armbruster
2025-06-06 16:21 ` Jonah Palmer
2025-06-26 12:08 ` Markus Armbruster
2025-07-02 19:31 ` Jonah Palmer
2025-07-04 15:00 ` Markus Armbruster
2025-07-07 13:21 ` Jonah Palmer
2025-07-08 8:17 ` Markus Armbruster
2025-07-09 19:57 ` Jonah Palmer [this message]
2025-07-10 5:31 ` Markus Armbruster
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=71ae1a0a-a697-4199-ab57-426f6252e224@oracle.com \
--to=jonah.palmer@oracle.com \
--cc=armbru@redhat.com \
--cc=boris.ostrovsky@oracle.com \
--cc=dtatulea@nvidia.com \
--cc=eperezma@redhat.com \
--cc=jasowang@redhat.com \
--cc=leiyang@redhat.com \
--cc=lingshan.zhu@intel.com \
--cc=lvivier@redhat.com \
--cc=mst@redhat.com \
--cc=parav@mellanox.com \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=sgarzare@redhat.com \
--cc=si-wei.liu@oracle.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 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).