From: David Hildenbrand <david@redhat.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Alex Williamson <alex.williamson@redhat.com>,
qemu-devel@nongnu.org, kvm@vger.kernel.org
Subject: Re: [RFC PATCH 0/3] Balloon inhibit enhancements
Date: Mon, 30 Jul 2018 16:46:25 +0200 [thread overview]
Message-ID: <9700e54a-14c2-4051-b54e-d9580df2c854@redhat.com> (raw)
In-Reply-To: <20180730165720-mutt-send-email-mst@kernel.org>
On 30.07.2018 15:59, Michael S. Tsirkin wrote:
> On Mon, Jul 30, 2018 at 03:54:04PM +0200, David Hildenbrand wrote:
>> On 30.07.2018 15:34, Michael S. Tsirkin wrote:
>>> On Tue, Jul 17, 2018 at 04:47:31PM -0600, Alex Williamson wrote:
>>>> Directly assigned vfio devices have never been compatible with
>>>> ballooning. Zapping MADV_DONTNEED pages happens completely
>>>> independent of vfio page pinning and IOMMU mapping, leaving us with
>>>> inconsistent GPA to HPA mapping between vCPUs and assigned devices
>>>> when the balloon deflates. Mediated devices can theoretically do
>>>> better, if we make the assumption that the mdev vendor driver is fully
>>>> synchronized to the actual working set of the guest driver. In that
>>>> case the guest balloon driver should never be able to allocate an mdev
>>>> pinned page for balloon inflation. Unfortunately, QEMU can't know the
>>>> workings of the vendor driver pinning, and doesn't actually know the
>>>> difference between mdev devices and directly assigned devices. Until
>>>> we can sort out how the vfio IOMMU backend can tell us if ballooning
>>>> is safe, the best approach is to disabling ballooning any time a vfio
>>>> devices is attached.
>>>>
>>>> To do that, simply make the balloon inhibitor a counter rather than a
>>>> boolean, fixup a case where KVM can then simply use the inhibit
>>>> interface, and inhibit ballooning any time a vfio device is attached.
>>>> I'm expecting we'll expose some sort of flag similar to
>>>> KVM_CAP_SYNC_MMU from the vfio IOMMU for cases where we can resolve
>>>> this. An addition we could consider here would be yet another device
>>>> option for vfio, such as x-disable-balloon-inhibit, in case there are
>>>> mdev devices that behave in a manner compatible with ballooning.
>>>>
>>>> Please let me know if this looks like a good idea. Thanks,
>>>>
>>>> Alex
>>>
>>> It's probably the only a reasonable thing to do for this release.
>>>
>>> Long term however, why can't balloon notify vfio as pages are
>>> added and removed? VFIO could update its mappings then.
>>
>> What if the guest is rebooted and pages are silently getting reused
>> without getting a deflation request first?
>
> Good point. To handle we'd need to deflate fully on
> on device reset, allowing access to all memory again.
1. Doing it from the guest: not reliable. E.g. think about crashes +
reboots, or a plain "system_reset" in QEMU. Deflation is definetly not
reliably possible.
2. Doing it in QEMU balloon implementation. Not possible. We don't track
the memory that has been inflated (and also should not do it).
So the only thing we could do is "deflate all guest memory" which
implies a madvise WILLNEED on all guest memory. We definitely don't want
this. We could inform vfio about all guest memory.
Everything sounds like a big hack that should be handled internally in
the kernel.
--
Thanks,
David / dhildenb
next prev parent reply other threads:[~2018-07-30 14:46 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-17 22:47 [RFC PATCH 0/3] Balloon inhibit enhancements Alex Williamson
2018-07-17 22:47 ` [RFC PATCH 1/3] balloon: Allow nested inhibits Alex Williamson
2018-07-18 6:40 ` Peter Xu
2018-07-18 16:37 ` Alex Williamson
2018-07-19 4:45 ` Peter Xu
2018-07-17 22:47 ` [RFC PATCH 2/3] kvm: Use inhibit to prevent ballooning without synchronous mmu Alex Williamson
2018-07-17 22:47 ` [RFC PATCH 3/3] vfio: Inhibit ballooning Alex Williamson
2018-07-18 6:48 ` [RFC PATCH 0/3] Balloon inhibit enhancements Peter Xu
2018-07-18 9:36 ` Cornelia Huck
2018-07-19 4:49 ` Peter Xu
2018-07-19 8:42 ` Cornelia Huck
2018-07-19 9:30 ` Peter Xu
2018-07-19 15:31 ` Alex Williamson
2018-07-18 16:31 ` Alex Williamson
2018-07-19 5:40 ` Peter Xu
2018-07-19 15:01 ` Alex Williamson
2018-07-20 2:56 ` Peter Xu
2018-07-30 13:34 ` Michael S. Tsirkin
2018-07-30 13:54 ` David Hildenbrand
2018-07-30 13:59 ` Michael S. Tsirkin
2018-07-30 14:46 ` David Hildenbrand [this message]
2018-07-30 14:58 ` Michael S. Tsirkin
2018-07-30 15:05 ` David Hildenbrand
2018-07-30 14:39 ` Alex Williamson
2018-07-30 14:51 ` Michael S. Tsirkin
2018-07-30 15:01 ` Alex Williamson
2018-07-30 15:49 ` Michael S. Tsirkin
2018-07-30 16:42 ` Alex Williamson
2018-07-30 17:35 ` 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=9700e54a-14c2-4051-b54e-d9580df2c854@redhat.com \
--to=david@redhat.com \
--cc=alex.williamson@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
/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).