qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: David Hildenbrand <david@redhat.com>
To: Zheyun Shen <szy0127@sjtu.edu.cn>, qemu-devel@nongnu.org
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Subject: Re: [PATCH] hw/virtio: Add ioeventfd option for balloon
Date: Wed, 13 Dec 2023 10:43:21 +0100	[thread overview]
Message-ID: <417ab6c2-d5c3-40ef-8f38-7ba6ef569741@redhat.com> (raw)
In-Reply-To: <20231212075058.710918-1-szy0127@sjtu.edu.cn>

Please CC the relevant maintainers, I only stumbled over that by luck.

See scripts/get_maintainer.pl


On 12.12.23 08:50, Zheyun Shen wrote:
> Traditional mmio in balloon makes qemu do balloon inflation in the same
> thread as vcpu thread.In a CPU overcommitment scenario, host may run
> more than one vcpu threads on one host thread, which makes
> madvise_dontneed_free() wait for a long time due to the function
> cond_resched() at host side.
> 
> If using SEV/ES and the kernel provided by AMD, the overhead will
> become even much larger.
> 
> With ioeventfd, the thread for host to do balloon inflation will
> be seperated from the vcpu thread, leading to better performance
> for the whole process of balloon inflation.

I didn't really look into ieventfd so far, but from what I understand, 
an iothread will take care of processing these events, instead of the 
vcpu thread.

Do you have some performance numbers?

I'll note that whatever thread calls madvise(), we're holding the BQL in 
that code and will block any other threads that need it.


> 
> Signed-off-by: Zheyun Shen <szy0127@sjtu.edu.cn>
> ---
>   hw/virtio/virtio-balloon-pci.c | 7 +++++++
>   1 file changed, 7 insertions(+)
> 
> diff --git a/hw/virtio/virtio-balloon-pci.c b/hw/virtio/virtio-balloon-pci.c
> index ce2645b..7195322 100644
> --- a/hw/virtio/virtio-balloon-pci.c
> +++ b/hw/virtio/virtio-balloon-pci.c
> @@ -35,6 +35,12 @@ struct VirtIOBalloonPCI {
>       VirtIOBalloon vdev;
>   };
>   
> +static Property virtio_balloon_properties[] = {
> +    DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags,
> +            VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, false),
> +    DEFINE_PROP_END_OF_LIST(),
> +};
> +
>   static void virtio_balloon_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
>   {
>       VirtIOBalloonPCI *dev = VIRTIO_BALLOON_PCI(vpci_dev);
> @@ -51,6 +57,7 @@ static void virtio_balloon_pci_class_init(ObjectClass *klass, void *data)
>       PCIDeviceClass *pcidev_k = PCI_DEVICE_CLASS(klass);
>       k->realize = virtio_balloon_pci_realize;
>       set_bit(DEVICE_CATEGORY_MISC, dc->categories);
> +    device_class_set_props(dc, virtio_balloon_properties);
>       pcidev_k->vendor_id = PCI_VENDOR_ID_REDHAT_QUMRANET;
>       pcidev_k->device_id = PCI_DEVICE_ID_VIRTIO_BALLOON;
>       pcidev_k->revision = VIRTIO_PCI_ABI_VERSION;

-- 
Cheers,

David / dhildenb




  reply	other threads:[~2023-12-13  9:44 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-12  7:50 [PATCH] hw/virtio: Add ioeventfd option for balloon Zheyun Shen
2023-12-13  9:43 ` David Hildenbrand [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-01-04  7:15 沈哲赟
2024-01-04 21:30 ` David Hildenbrand

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=417ab6c2-d5c3-40ef-8f38-7ba6ef569741@redhat.com \
    --to=david@redhat.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=szy0127@sjtu.edu.cn \
    /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).