From: "Michael S. Tsirkin" <mst@redhat.com>
To: "Philippe Mathieu-Daudé" <philmd@linaro.org>
Cc: "Longpeng(Mike)" <longpeng2@huawei.com>,
stefanha@redhat.com, jasowang@redhat.com, cohuck@redhat.com,
sgarzare@redhat.com, pbonzini@redhat.com,
arei.gonglei@huawei.com, yechuan@huawei.com,
huangzhichao@huawei.com, qemu-devel@nongnu.org
Subject: Re: [PATCH v3 2/3] vhost: configure all host notifiers in a single MR transaction
Date: Tue, 27 Dec 2022 12:54:12 -0500 [thread overview]
Message-ID: <20221227125331-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <8054d186-0196-ccb0-091d-0ee9caadb576@linaro.org>
On Tue, Dec 27, 2022 at 05:43:57PM +0100, Philippe Mathieu-Daudé wrote:
> On 27/12/22 08:20, Longpeng(Mike) wrote:
> > From: Longpeng <longpeng2@huawei.com>
> >
> > This allows the vhost device to batch the setup of all its host notifiers.
> > This significantly reduces the device starting time, e.g. the time spend
> > on enabling notifiers reduce from 376ms to 9.1ms for a VM with 64 vCPUs
> > and 3 vhost-vDPA generic devices (vdpa_sim_blk, 64vq per device)
> >
> > Signed-off-by: Longpeng <longpeng2@huawei.com>
> > ---
> > hw/virtio/vhost.c | 24 ++++++++++++++++++++++++
> > 1 file changed, 24 insertions(+)
> >
> > diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
> > index 5994559da8..064d4abe5c 100644
> > --- a/hw/virtio/vhost.c
> > +++ b/hw/virtio/vhost.c
> > @@ -1562,16 +1562,25 @@ int vhost_dev_enable_notifiers(struct vhost_dev *hdev, VirtIODevice *vdev)
> > return r;
> > }
> > + /*
> > + * Batch all the host notifiers in a single transaction to avoid
> > + * quadratic time complexity in address_space_update_ioeventfds().
> > + */
> > + memory_region_transaction_begin();
> > +
> > for (i = 0; i < hdev->nvqs; ++i) {
> > r = virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), hdev->vq_index + i,
> > true);
> > if (r < 0) {
> > error_report("vhost VQ %d notifier binding failed: %d", i, -r);
> > + memory_region_transaction_commit();
> > vhost_dev_disable_notifiers(hdev, vdev);
>
> Could we 'break' here, ...
>
> > return r;
> > }
> > }
> > + memory_region_transaction_commit();
> > +
> > return 0;
>
> ... and return 'r' here?
won't this commit twice? seems ugly ...
> > }
>
> Otherwise LGTM.
next prev parent reply other threads:[~2022-12-27 17:54 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-27 7:20 [PATCH v3 0/3] two optimizations to speed up the start time Longpeng(Mike) via
2022-12-27 7:20 ` [PATCH v3 1/3] vhost: simplify vhost_dev_enable_notifiers Longpeng(Mike) via
2022-12-27 7:20 ` [PATCH v3 2/3] vhost: configure all host notifiers in a single MR transaction Longpeng(Mike) via
2022-12-27 16:43 ` Philippe Mathieu-Daudé
2022-12-27 17:54 ` Michael S. Tsirkin [this message]
2022-12-28 13:12 ` Philippe Mathieu-Daudé
2022-12-29 5:18 ` longpeng2--- via
2022-12-27 7:20 ` [PATCH v3 3/3] vdpa: commit all host notifier MRs " Longpeng(Mike) via
2022-12-27 16:51 ` Philippe Mathieu-Daudé
2022-12-27 17:56 ` Michael S. Tsirkin
2022-12-28 13:14 ` Philippe Mathieu-Daudé
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=20221227125331-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=arei.gonglei@huawei.com \
--cc=cohuck@redhat.com \
--cc=huangzhichao@huawei.com \
--cc=jasowang@redhat.com \
--cc=longpeng2@huawei.com \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=sgarzare@redhat.com \
--cc=stefanha@redhat.com \
--cc=yechuan@huawei.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.