From: "Michael S. Tsirkin" <mst@redhat.com>
To: David Hildenbrand <david@redhat.com>
Cc: "Wang, Wei W" <wei.w.wang@intel.com>,
Nadav Amit <namit@vmware.com>,
Alexander Duyck <alexander.h.duyck@linux.intel.com>,
Tyler Sanderson <tysand@google.com>,
"virtualization@lists.linux-foundation.org"
<virtualization@lists.linux-foundation.org>,
David Rientjes <rientjes@google.com>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
Michal Hocko <mhocko@kernel.org>
Subject: Re: Balloon pressuring page cache
Date: Wed, 5 Feb 2020 04:35:27 -0500 [thread overview]
Message-ID: <20200205042655-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <bcb69e37-fd84-6397-0ff5-befd99a361dd@redhat.com>
On Wed, Feb 05, 2020 at 10:22:34AM +0100, David Hildenbrand wrote:
> >> 1. Guest allocates a page and sends it to the host.
> >> 2. Shrinker gets active and releases that page again.
> >> 3. Some user in the guest allocates and modifies that page. The dirty bit is
> >> set in the hypervisor.
> >
> > The bit will be set in KVM's bitmap, and will be synced to QEMU's bitmap when the next round starts.
> >
> >> 4. The host processes the request and clears the bit in the dirty bitmap.
> >
> > This clears the bit from the QEMU bitmap, and this page will not be sent in this round.
> >
> >> 5. The guest is stopped and the last set of dirty pages is migrated. The
> >> modified page is not being migrated (because not marked dirty).
> >
> > When QEMU start the last round, it first syncs the bitmap from KVM, which includes the one set in step 3.
> > Then the modified page gets sent.
>
> So, if you run a TCG guest and use it with free page reporting, the race
> is possible?
I'd have to look at the implementation but the basic idea is not
kvm specific. The idea is that hypervisor can detect that 3 happened
after 1, by means of creating a copy of the dirty bitmap
when request is sent to the guest.
> So the correctness depends on two dirty bitmaps in the
> hypervisor and how they interact. wow this is fragile.
>
> Thanks for the info :)
It's pretty fragile, and the annoying part is we do not
actually benefit from this at all since it all only triggers
in the shrinker corner case.
The original idea was that we can send any hint to hypervisor and reuse
the page immediately without waiting for hint to be seen. That seemed
worth having, as a means to minimize impact of hinting.
Then we dropped that and switched to OOM, and there not having
to wait also seemed like a worthwhile thing.
In the end we switched to shrinker where we can wait
if we like, and many guests never even hit the shrinker so we
have sacrificed robustness for nothing.
If we go back to OOM then at least it's justified ..
> --
> Thanks,
>
> David / dhildenb
next prev parent reply other threads:[~2020-02-05 9:35 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CAJuQAmpDUyve2S+oxp9tLUhuRcnddXnNztC5PmYOOCpY6c68xg@mail.gmail.com>
[not found] ` <91270a68-ff48-88b0-219c-69801f0c252f@redhat.com>
[not found] ` <CAJuQAmoaK0Swytu2Os_SQRfG5_LqiCPaDa9yatatm9MtfncNTQ@mail.gmail.com>
2020-01-30 15:02 ` Balloon pressuring page cache David Hildenbrand
2020-01-30 15:20 ` Michael S. Tsirkin
2020-01-30 15:23 ` David Hildenbrand
2020-01-30 15:31 ` Wang, Wei W
2020-01-30 19:59 ` Tyler Sanderson
2020-02-03 13:11 ` Michael S. Tsirkin
2020-02-03 16:18 ` Alexander Duyck
2020-02-03 16:34 ` David Hildenbrand
2020-02-03 17:03 ` Michael S. Tsirkin
2020-02-03 20:32 ` Tyler Sanderson
2020-02-03 21:22 ` Alexander Duyck
2020-02-03 23:16 ` Tyler Sanderson
2020-02-04 0:10 ` Alexander Duyck
2020-02-04 5:45 ` Michael S. Tsirkin
2020-02-04 8:29 ` David Hildenbrand
2020-02-04 18:52 ` Tyler Sanderson
2020-02-04 18:56 ` Michael S. Tsirkin
2020-02-04 19:17 ` David Hildenbrand
2020-02-04 23:58 ` Tyler Sanderson
2020-02-05 0:15 ` Tyler Sanderson
2020-02-05 6:57 ` Michael S. Tsirkin
2020-02-05 19:01 ` Tyler Sanderson
2020-02-05 19:22 ` Alexander Duyck
2020-02-05 21:44 ` Tyler Sanderson
2020-02-06 11:00 ` David Hildenbrand
2020-02-03 22:50 ` Nadav Amit
2020-02-04 8:35 ` David Hildenbrand
2020-02-04 8:40 ` Michael S. Tsirkin
2020-02-04 8:48 ` David Hildenbrand
2020-02-04 14:30 ` David Hildenbrand
2020-02-04 16:50 ` Michael S. Tsirkin
2020-02-04 16:56 ` David Hildenbrand
2020-02-04 20:33 ` Michael S. Tsirkin
2020-02-05 8:31 ` David Hildenbrand
2020-02-05 6:52 ` Wang, Wei W
2020-02-05 7:05 ` Michael S. Tsirkin
2020-02-05 8:50 ` Wang, Wei W
2020-02-05 6:49 ` Wang, Wei W
2020-02-05 8:19 ` David Hildenbrand
2020-02-05 8:54 ` Wang, Wei W
2020-02-05 8:56 ` David Hildenbrand
2020-02-05 9:00 ` Wang, Wei W
2020-02-05 9:05 ` David Hildenbrand
2020-02-05 9:19 ` Wang, Wei W
2020-02-05 9:22 ` David Hildenbrand
2020-02-05 9:35 ` Wang, Wei W
2020-02-05 9:37 ` David Hildenbrand
2020-02-05 9:49 ` Wang, Wei W
2020-02-05 9:58 ` David Hildenbrand
2020-02-05 10:25 ` Michael S. Tsirkin
2020-02-05 10:42 ` David Hildenbrand
2020-02-05 9:35 ` Michael S. Tsirkin [this message]
2020-02-05 18:43 ` Tyler Sanderson
2020-02-06 9:30 ` Wang, Wei W
2020-02-05 7:35 ` Nadav Amit
2020-02-05 8:19 ` David Hildenbrand
2020-02-05 10:27 ` Michael S. Tsirkin
2020-02-05 10:43 ` David Hildenbrand
2020-01-30 22:46 ` Tyler Sanderson
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=20200205042655-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=alexander.h.duyck@linux.intel.com \
--cc=david@redhat.com \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.org \
--cc=namit@vmware.com \
--cc=rientjes@google.com \
--cc=tysand@google.com \
--cc=virtualization@lists.linux-foundation.org \
--cc=wei.w.wang@intel.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;
as well as URLs for NNTP newsgroup(s).