From: Markus Armbruster <armbru@redhat.com>
To: Jonah Palmer <jonah.palmer@oracle.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: Tue, 08 Jul 2025 10:17:33 +0200 [thread overview]
Message-ID: <874ivnxfj6.fsf@pond.sub.org> (raw)
In-Reply-To: <face37ee-9850-448f-914b-cd90a39d3451@oracle.com> (Jonah Palmer's message of "Mon, 7 Jul 2025 09:21:36 -0400")
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?
next prev parent reply other threads:[~2025-07-08 21:25 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 [this message]
2025-07-09 19:57 ` Jonah Palmer
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=874ivnxfj6.fsf@pond.sub.org \
--to=armbru@redhat.com \
--cc=boris.ostrovsky@oracle.com \
--cc=dtatulea@nvidia.com \
--cc=eperezma@redhat.com \
--cc=jasowang@redhat.com \
--cc=jonah.palmer@oracle.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 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.