From: Alexander Duyck <alexander.h.duyck@linux.intel.com>
To: Nitesh Narayan Lal <nitesh@redhat.com>,
Alexander Duyck <alexander.duyck@gmail.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>,
kvm@vger.kernel.org, david@redhat.com, dave.hansen@intel.com,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
akpm@linux-foundation.org, yang.zhang.wz@gmail.com,
pagupta@redhat.com, riel@surriel.com, konrad.wilk@oracle.com,
lcapitulino@redhat.com, wei.w.wang@intel.com,
aarcange@redhat.com, pbonzini@redhat.com,
dan.j.williams@intel.com
Subject: Re: [PATCH v2 QEMU] virtio-balloon: Provide a interface for "bubble hinting"
Date: Thu, 25 Jul 2019 07:57:47 -0700 [thread overview]
Message-ID: <d9357c2b6ed9e1499703a562199cc28d1b57383e.camel@linux.intel.com> (raw)
In-Reply-To: <bbfe0fbb-dd23-ed5c-01b3-493ae804942f@redhat.com>
On Thu, 2019-07-25 at 07:57 -0400, Nitesh Narayan Lal wrote:
> On 7/24/19 4:18 PM, Alexander Duyck wrote:
> > On Wed, 2019-07-24 at 15:02 -0400, Michael S. Tsirkin wrote:
> > > On Wed, Jul 24, 2019 at 10:12:10AM -0700, Alexander Duyck wrote:
> > > > From: Alexander Duyck <alexander.h.duyck@linux.intel.com>
> > > >
> > > > Add support for what I am referring to as "bubble hinting". Basically the
> > > > idea is to function very similar to how the balloon works in that we
> > > > basically end up madvising the page as not being used. However we don't
> > > > really need to bother with any deflate type logic since the page will be
> > > > faulted back into the guest when it is read or written to.
> > > >
> > > > This is meant to be a simplification of the existing balloon interface
> > > > to use for providing hints to what memory needs to be freed. I am assuming
> > > > this is safe to do as the deflate logic does not actually appear to do very
> > > > much other than tracking what subpages have been released and which ones
> > > > haven't.
> > > >
> > > > Signed-off-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>
> > > > ---
> > > > hw/virtio/virtio-balloon.c | 40 +++++++++++++++++++++++
> > > > include/hw/virtio/virtio-balloon.h | 2 +
> > > > include/standard-headers/linux/virtio_balloon.h | 1 +
> > > > 3 files changed, 42 insertions(+), 1 deletion(-)
> > > >
> > > > diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c
> > > > index 2112874055fb..70c0004c0f88 100644
> > > > --- a/hw/virtio/virtio-balloon.c
> > > > +++ b/hw/virtio/virtio-balloon.c
> > > > @@ -328,6 +328,39 @@ static void balloon_stats_set_poll_interval(Object *obj, Visitor *v,
> > > > balloon_stats_change_timer(s, 0);
> > > > }
> > > >
> > > > +static void virtio_bubble_handle_output(VirtIODevice *vdev, VirtQueue *vq)
> > > > +{
> > > > + VirtQueueElement *elem;
> > > > +
> > > > + while ((elem = virtqueue_pop(vq, sizeof(VirtQueueElement)))) {
> > > > + unsigned int i;
> > > > +
> > > > + for (i = 0; i < elem->in_num; i++) {
> > > > + void *addr = elem->in_sg[i].iov_base;
> > > > + size_t size = elem->in_sg[i].iov_len;
> > > > + ram_addr_t ram_offset;
> > > > + size_t rb_page_size;
> > > > + RAMBlock *rb;
> > > > +
> > > > + if (qemu_balloon_is_inhibited())
> > > > + continue;
> > > > +
> > > > + rb = qemu_ram_block_from_host(addr, false, &ram_offset);
> > > > + rb_page_size = qemu_ram_pagesize(rb);
> > > > +
> > > > + /* For now we will simply ignore unaligned memory regions */
> > > > + if ((ram_offset | size) & (rb_page_size - 1))
> > > > + continue;
> > > > +
> > > > + ram_block_discard_range(rb, ram_offset, size);
> > > I suspect this needs to do like the migration type of
> > > hinting and get disabled if page poisoning is in effect.
> > > Right?
> > Shouldn't something like that end up getting handled via
> > qemu_balloon_is_inhibited, or did I miss something there? I assumed cases
> > like that would end up setting qemu_balloon_is_inhibited to true, if that
> > isn't the case then I could add some additional conditions. I would do it
> > in about the same spot as the qemu_balloon_is_inhibited check.
>
> Just wondering if you have tried running these patches in an environment with
> directly assigned devices? Ideally, I would expect qemu_balloon_is_inhibited()
> to take care of it.
Yes, I have run that as a test to actually benchmark the effect of things
without the madvise bits since it essentially disables the hinting in the
hypervisor but not the guest.
next prev parent reply other threads:[~2019-07-25 14:57 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-24 16:54 [PATCH v2 0/5] mm / virtio: Provide support for page hinting Alexander Duyck
2019-07-24 16:56 ` [PATCH v2 1/5] mm: Adjust shuffle code to allow for future coalescing Alexander Duyck
2019-07-24 16:58 ` [PATCH v2 2/5] mm: Move set/get_pcppage_migratetype to mmzone.h Alexander Duyck
2019-07-24 17:00 ` [PATCH v2 3/5] mm: Use zone and order instead of free area in free_list manipulators Alexander Duyck
2019-07-24 17:03 ` [PATCH v2 4/5] mm: Introduce Hinted pages Alexander Duyck
2019-07-25 8:53 ` David Hildenbrand
2019-07-25 11:46 ` Nitesh Narayan Lal
2019-07-25 11:54 ` David Hildenbrand
2019-07-25 15:59 ` Alexander Duyck
2019-07-25 16:48 ` David Hildenbrand
2019-07-25 17:38 ` Alexander Duyck
2019-07-25 18:32 ` David Hildenbrand
2019-07-25 20:37 ` Alexander Duyck
2019-07-25 20:44 ` David Hildenbrand
2019-07-26 12:24 ` Nitesh Narayan Lal
2019-07-26 16:38 ` Alexander Duyck
2019-07-24 17:05 ` [PATCH v2 5/5] virtio-balloon: Add support for providing page hints to host Alexander Duyck
2019-07-24 19:02 ` Michael S. Tsirkin
2019-07-24 19:07 ` Nitesh Narayan Lal
2019-07-24 19:26 ` Michael S. Tsirkin
2019-07-24 20:37 ` Alexander Duyck
2019-07-24 20:43 ` Michael S. Tsirkin
2019-07-25 14:44 ` Nitesh Narayan Lal
2019-07-25 14:54 ` Michael S. Tsirkin
2019-07-25 14:56 ` Alexander Duyck
2019-07-25 14:59 ` Michael S. Tsirkin
2019-07-25 17:42 ` Nitesh Narayan Lal
2019-07-25 19:54 ` Alexander Duyck
2019-07-24 17:12 ` [PATCH v2 QEMU] virtio-balloon: Provide a interface for "bubble hinting" Alexander Duyck
2019-07-24 19:02 ` Michael S. Tsirkin
2019-07-24 20:18 ` Alexander Duyck
2019-07-24 20:29 ` Nitesh Narayan Lal
2019-07-24 20:42 ` Michael S. Tsirkin
2019-07-29 16:58 ` Alexander Duyck
2019-07-29 19:25 ` Michael S. Tsirkin
2019-07-29 20:21 ` Alexander Duyck
2019-07-29 20:49 ` Michael S. Tsirkin
2019-07-29 21:37 ` Alexander Duyck
2019-07-29 22:11 ` Michael S. Tsirkin
2019-07-24 20:46 ` Michael S. Tsirkin
2019-07-24 21:14 ` Alexander Duyck
2019-07-25 11:57 ` Nitesh Narayan Lal
2019-07-25 14:57 ` Alexander Duyck [this message]
2019-07-24 21:38 ` Michael S. Tsirkin
2019-07-24 22:03 ` Alexander Duyck
2019-07-24 22:08 ` Michael S. Tsirkin
2019-07-24 22:27 ` Alexander Duyck
2019-07-25 6:07 ` Michael S. Tsirkin
2019-07-25 11:35 ` Nitesh Narayan Lal
2019-07-25 15:05 ` Alexander Duyck
2019-07-25 15:16 ` Michael S. Tsirkin
2019-07-25 16:16 ` Alexander Duyck
2019-07-25 17:19 ` Michael S. Tsirkin
2019-07-25 18:25 ` Nitesh Narayan Lal
2019-07-25 20:00 ` Alexander Duyck
2019-07-25 20:14 ` Nitesh Narayan Lal
2019-07-24 18:40 ` [PATCH v2 0/5] mm / virtio: Provide support for page hinting Nitesh Narayan Lal
2019-07-24 18:41 ` David Hildenbrand
2019-07-24 19:31 ` Michael S. Tsirkin
2019-07-24 19:47 ` David Hildenbrand
2019-07-24 19:54 ` Nitesh Narayan Lal
2019-07-24 21:32 ` Michael S. Tsirkin
2019-07-24 19:24 ` Michael S. Tsirkin
2019-07-24 20:27 ` Alexander Duyck
2019-07-24 20:38 ` Nitesh Narayan Lal
2019-07-24 21:00 ` Alexander Duyck
2019-07-25 12:08 ` Nitesh Narayan Lal
2019-07-24 20:38 ` Michael S. Tsirkin
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=d9357c2b6ed9e1499703a562199cc28d1b57383e.camel@linux.intel.com \
--to=alexander.h.duyck@linux.intel.com \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=alexander.duyck@gmail.com \
--cc=dan.j.williams@intel.com \
--cc=dave.hansen@intel.com \
--cc=david@redhat.com \
--cc=konrad.wilk@oracle.com \
--cc=kvm@vger.kernel.org \
--cc=lcapitulino@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mst@redhat.com \
--cc=nitesh@redhat.com \
--cc=pagupta@redhat.com \
--cc=pbonzini@redhat.com \
--cc=riel@surriel.com \
--cc=wei.w.wang@intel.com \
--cc=yang.zhang.wz@gmail.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