linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Alexander Duyck <alexander.duyck@gmail.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: David Hildenbrand <david@redhat.com>,
	Nitesh Narayan Lal <nitesh@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,
	 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>,
	Dave Hansen <dave.hansen@intel.com>
Subject: Re: On guest free page hinting and OOM
Date: Tue, 2 Apr 2019 13:32:03 -0700	[thread overview]
Message-ID: <CAKgT0UeZE29qBOAxDb2EmLr_hr1_W-m3Rw3gKs-UAPbD80K_+Q@mail.gmail.com> (raw)
In-Reply-To: <20190402134722-mutt-send-email-mst@kernel.org>

On Tue, Apr 2, 2019 at 10:53 AM Michael S. Tsirkin <mst@redhat.com> wrote:
>
> On Tue, Apr 02, 2019 at 10:45:43AM -0700, Alexander Duyck wrote:
> > We went through this back in the day with
> > networking. Adding more buffers is not the solution. The solution is
> > to have a way to gracefully recover and keep our hinting latency and
> > buffer bloat to a minimum.
>
> That's an interesting approach, I think that things that end up working
> well are NAPI (asychronous notifications), limited batching, XDP (big
> aligned buffers) and BQL (accounting). Is that your perspective too?
>

Yes, that is kind of what I was getting at.

Basically we could have a kthread running somewhere that goes through
and pulls something like 64M of pages out of the MAX_ORDER - 1
freelist, does what is necessary to isolate them, puts them on a queue
somewhere, kicks the virtio ring, and waits for the response to come
back indicating that the hints have been processed. We would just have
to keep it running until the list doesn't have enough non-"Offline"
memory to fulfill the request. Then we just wait until we again reach
a level necessary to justify waking the thread back up and repeat.

In my mind it looks a lot like your standard Rx ring in that we
allocate some fixed number of buffers and wait for hardware to tell us
when the buffers are ready. The only extra complexity is having to add
tracking using the PageType "Offline" bit which should be cheap when
we are already having to manipulate the "Buddy" PageType anyway.

It would let us get away from having to do the per-cpu queues and
complicated coordination logic to translate free pages to their buddy.


  reply	other threads:[~2019-04-02 20:32 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-29 13:26 On guest free page hinting and OOM Michael S. Tsirkin
2019-03-29 14:24 ` David Hildenbrand
2019-03-29 15:08   ` Michael S. Tsirkin
2019-03-29 15:37     ` David Hildenbrand
2019-03-29 15:45       ` David Hildenbrand
2019-03-29 16:51         ` Michael S. Tsirkin
2019-04-01  8:17           ` David Hildenbrand
2019-04-01 13:24             ` Michael S. Tsirkin
2019-04-01 14:09               ` David Hildenbrand
2019-04-01 14:11                 ` David Hildenbrand
2019-04-01 14:47                   ` Michael S. Tsirkin
2019-04-01 14:54                     ` David Hildenbrand
2019-04-01 20:56                     ` Alexander Duyck
2019-04-02  7:42                       ` David Hildenbrand
2019-04-02 15:04                         ` Alexander Duyck
2019-04-02 15:25                           ` Michael S. Tsirkin
2019-04-02 15:57                             ` David Hildenbrand
2019-04-02 16:18                               ` Alexander Duyck
2019-04-02 17:08                                 ` David Hildenbrand
2019-04-02 17:45                                   ` Alexander Duyck
2019-04-02 17:53                                     ` Michael S. Tsirkin
2019-04-02 20:32                                       ` Alexander Duyck [this message]
2019-04-02 18:21                                     ` David Hildenbrand
2019-04-02 19:49                                       ` Michael S. Tsirkin
2019-04-02 20:32                                         ` David Hildenbrand
2019-04-02 15:55                           ` David Hildenbrand
2019-04-02 17:30                             ` Alexander Duyck
2019-04-02 18:53                               ` David Hildenbrand
2019-04-02 23:43                                 ` Alexander Duyck
2019-04-03 19:43                                   ` David Hildenbrand
2019-04-04 13:28                                   ` Michael S. Tsirkin
2019-04-02 16:19                           ` David Hildenbrand
2019-04-01 14:45                 ` Michael S. Tsirkin
2019-03-29 16:09       ` 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=CAKgT0UeZE29qBOAxDb2EmLr_hr1_W-m3Rw3gKs-UAPbD80K_+Q@mail.gmail.com \
    --to=alexander.duyck@gmail.com \
    --cc=aarcange@redhat.com \
    --cc=dave.hansen@intel.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=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).