linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alexander Duyck <alexander.duyck@gmail.com>
To: Nitesh Narayan Lal <nitesh@redhat.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>,
	David Hildenbrand <david@redhat.com>,
	kvm list <kvm@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	linux-mm <linux-mm@kvack.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	lcapitulino@redhat.com, pagupta@redhat.com, wei.w.wang@intel.com,
	Yang Zhang <yang.zhang.wz@gmail.com>,
	Rik van Riel <riel@surriel.com>,
	dodgen@google.com, Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	dhildenb@redhat.com, Andrea Arcangeli <aarcange@redhat.com>
Subject: Re: [RFC][Patch v9 2/6] KVM: Enables the kernel to isolate guest free pages
Date: Fri, 8 Mar 2019 11:25:30 -0800	[thread overview]
Message-ID: <CAKgT0UcdQZwHjmMBkSWmy_ZdShJCagjwomn13g+r7ZNJBRn1LQ@mail.gmail.com> (raw)
In-Reply-To: <17d2afa6-556e-ec73-40dc-beac536b3f20@redhat.com>

On Fri, Mar 8, 2019 at 11:10 AM Nitesh Narayan Lal <nitesh@redhat.com> wrote:
>
>
> On 3/8/19 1:06 PM, Alexander Duyck wrote:
> > On Thu, Mar 7, 2019 at 6:32 PM Michael S. Tsirkin <mst@redhat.com> wrote:
> >> On Thu, Mar 07, 2019 at 02:35:53PM -0800, Alexander Duyck wrote:
> >>> The only other thing I still want to try and see if I can do is to add
> >>> a jiffies value to the page private data in the case of the buddy
> >>> pages.
> >> Actually there's one extra thing I think we should do, and that is make
> >> sure we do not leave less than X% off the free memory at a time.
> >> This way chances of triggering an OOM are lower.
> > If nothing else we could probably look at doing a watermark of some
> > sort so we have to have X amount of memory free but not hinted before
> > we will start providing the hints. It would just be a matter of
> > tracking how much memory we have hinted on versus the amount of memory
> > that has been pulled from that pool.
> This is to avoid false OOM in the guest?

Partially, though it would still be possible. Basically it would just
be a way of determining when we have hinted "enough". Basically it
doesn't do us much good to be hinting on free memory if the guest is
already constrained and just going to reallocate the memory shortly
after we hinted on it. The idea is with a watermark we can avoid
hinting until we start having pages that are actually going to stay
free for a while.

> >  It is another reason why we
> > probably want a bit in the buddy pages somewhere to indicate if a page
> > has been hinted or not as we can then use that to determine if we have
> > to account for it in the statistics.
>
> The one benefit which I can see of having an explicit bit is that it
> will help us to have a single hook away from the hot path within buddy
> merging code (just like your arch_merge_page) and still avoid duplicate
> hints while releasing pages.
>
> I still have to check PG_idle and PG_young which you mentioned but I
> don't think we can reuse any existing bits.

Those are bits that are already there for 64b. I think those exist in
the page extension for 32b systems. If I am not mistaken they are only
used in VMA mapped memory. What I was getting at is that those are the
bits we could think about reusing.

> If we really want to have something like a watermark, then can't we use
> zone->free_pages before isolating to see how many free pages are there
> and put a threshold on it? (__isolate_free_page() does a similar thing
> but it does that on per request basis).

Right. That is only part of it though since that tells you how many
free pages are there. But how many of those free pages are hinted?
That is the part we would need to track separately and then then
compare to free_pages to determine if we need to start hinting on more
memory or not.

> >
> >>> With that we could track the age of the page so it becomes
> >>> easier to only target pages that are truly going cold rather than
> >>> trying to grab pages that were added to the freelist recently.
> >> I like that but I have a vague memory of discussing this with Rik van
> >> Riel and him saying it's actually better to take away recently used
> >> ones. Can't see why would that be but maybe I remember wrong. Rik - am I
> >> just confused?
> > It is probably to cut down on the need for disk writes in the case of
> > swap. If that is the case it ends up being a trade off.
> >
> > The sooner we hint the less likely it is that we will need to write a
> > given page to disk. However the sooner we hint, the more likely it is
> > we will need to trigger a page fault and pull back in a zero page to
> > populate the last page we were working on. The sweet spot will be that
> > period of time that is somewhere in between so we don't trigger
> > unnecessary page faults and we don't need to perform additional swap
> > reads/writes.
> --
> Regards
> Nitesh
>

  reply	other threads:[~2019-03-08 19:25 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-06 15:50 [RFC][Patch v9 0/6] KVM: Guest Free Page Hinting Nitesh Narayan Lal
2019-03-06 15:50 ` [RFC][Patch v9 1/6] KVM: Guest free page hinting support Nitesh Narayan Lal
2019-03-06 23:43   ` Alexander Duyck
2019-03-07 19:32     ` Nitesh Narayan Lal
2019-03-06 15:50 ` [RFC][Patch v9 2/6] KVM: Enables the kernel to isolate guest free pages Nitesh Narayan Lal
2019-03-07 18:30   ` Alexander Duyck
2019-03-07 19:23     ` Nitesh Narayan Lal
2019-03-07 19:30       ` David Hildenbrand
2019-03-07 21:32         ` Alexander Duyck
2019-03-07 21:40           ` David Hildenbrand
2019-03-07 22:35             ` Alexander Duyck
2019-03-08  2:28               ` Michael S. Tsirkin
2019-03-08  2:32               ` Michael S. Tsirkin
2019-03-08 18:06                 ` Alexander Duyck
2019-03-08 18:59                   ` Michael S. Tsirkin
2019-03-08 19:10                   ` Nitesh Narayan Lal
2019-03-08 19:25                     ` Alexander Duyck [this message]
2019-03-08 19:38                       ` Nitesh Narayan Lal
2019-03-08 21:39                         ` Alexander Duyck
2019-03-12 19:46                           ` Nitesh Narayan Lal
2019-03-12 21:13                             ` Alexander Duyck
2019-03-12 21:53                               ` David Hildenbrand
2019-03-12 22:56                                 ` Alexander Duyck
2019-03-13 11:54                               ` Nitesh Narayan Lal
2019-03-13 12:17                                 ` David Hildenbrand
2019-03-13 13:08                                   ` Nitesh Narayan Lal
2019-03-13 16:37                                   ` Alexander Duyck
2019-03-13 16:39                                     ` David Hildenbrand
2019-03-13 22:54                                       ` Alexander Duyck
2019-03-13 23:18                                         ` David Hildenbrand
2019-03-06 15:50 ` [RFC][Patch v9 3/6] KVM: Enables the kernel to report isolated pages Nitesh Narayan Lal
2019-03-06 21:30   ` Alexander Duyck
2019-03-07 13:23     ` Nitesh Narayan Lal
2019-03-06 15:50 ` [RFC][Patch v9 4/6] KVM: Reporting page poisoning value to the host Nitesh Narayan Lal
2019-03-06 15:50 ` [RFC][Patch v9 5/6] KVM: Enabling guest free page hinting via static key Nitesh Narayan Lal
2019-03-06 15:50 ` [RFC][Patch v9 6/6] KVM: Adding tracepoints for guest free page hinting Nitesh Narayan Lal
2019-03-06 15:52 ` [RFC][QEMU Patch] KVM: Enable QEMU to free the pages hinted by the guest Nitesh Narayan Lal
2019-03-06 23:49   ` Alexander Duyck
2019-03-07  0:35     ` Alexander Duyck
2019-03-07 12:23       ` Nitesh Narayan Lal
2019-03-06 16:09 ` [RFC][Patch v9 0/6] KVM: Guest Free Page Hinting Michael S. Tsirkin
2019-03-06 18:07   ` Nitesh Narayan Lal
2019-03-06 18:12     ` Michael S. Tsirkin
2019-03-06 18:30       ` Nitesh Narayan Lal
2019-03-06 18:38         ` Michael S. Tsirkin
2019-03-06 18:40           ` Nitesh Narayan Lal
2019-03-06 18:43             ` Alexander Duyck
2019-03-06 18:43         ` Michael S. Tsirkin
2019-03-06 18:59           ` David Hildenbrand
2019-03-06 19:08             ` Alexander Duyck
2019-03-06 19:18               ` David Hildenbrand
2019-03-06 19:24                 ` Alexander Duyck
2019-03-06 20:31                   ` Nitesh Narayan Lal
2019-03-06 20:32             ` Michael S. Tsirkin
2019-03-06 21:40               ` David Hildenbrand
2019-03-06 22:18                 ` Michael S. Tsirkin
2019-03-06 23:12                   ` Alexander Duyck
2019-03-14 16:42       ` Nitesh Narayan Lal
2019-03-14 16:58         ` Alexander Duyck
2019-03-18 15:57           ` Nitesh Narayan Lal
2019-03-19 13:33             ` David Hildenbrand
2019-03-19 16:04               ` Nitesh Narayan Lal
2019-03-19 17:38                 ` Alexander Duyck
2019-03-19 17:59                   ` Nitesh Narayan Lal
2019-03-20 13:18                     ` Nitesh Narayan Lal
2019-03-25 14:27                       ` Nitesh Narayan Lal
2019-03-25 15:37                         ` Michael S. Tsirkin
2019-03-25 15:42                           ` Nitesh Narayan Lal
2019-03-06 18:00 ` Alexander Duyck
2019-03-06 19:07   ` Nitesh Narayan Lal
2019-03-06 22:05     ` Alexander Duyck
2019-03-07 13:09       ` Nitesh Narayan Lal
2019-03-07 18:45         ` Alexander Duyck
2019-03-07 18:53           ` Michael S. Tsirkin
2019-03-07 19:27             ` David Hildenbrand
2019-03-08  2:24               ` Michael S. Tsirkin
2019-03-08 11:53                 ` David Hildenbrand
2019-03-07 21:14             ` Alexander Duyck
2019-03-07 21:28               ` David Hildenbrand
2019-03-07 22:19                 ` Alexander Duyck
2019-03-07 19:45           ` Nitesh Narayan Lal
2019-03-07 19:49           ` David Hildenbrand
2019-03-07 18:46   ` Michael S. Tsirkin
2019-03-12 19:58     ` 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=CAKgT0UcdQZwHjmMBkSWmy_ZdShJCagjwomn13g+r7ZNJBRn1LQ@mail.gmail.com \
    --to=alexander.duyck@gmail.com \
    --cc=aarcange@redhat.com \
    --cc=david@redhat.com \
    --cc=dhildenb@redhat.com \
    --cc=dodgen@google.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;
as well as URLs for NNTP newsgroup(s).