linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Rafael Aquini <aquini@redhat.com>
Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
	Peter Zijlstra <peterz@infradead.org>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	virtualization@lists.linux-foundation.org,
	Rusty Russell <rusty@rustcorp.com.au>,
	Rik van Riel <riel@redhat.com>, Mel Gorman <mel@csn.ul.ie>,
	Andi Kleen <andi@firstfloor.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	Minchan Kim <minchan@kernel.org>
Subject: Re: [PATCH v8 1/5] mm: introduce a common interface for balloon pages mobility
Date: Thu, 23 Aug 2012 15:34:32 +0300	[thread overview]
Message-ID: <20120823123432.GA25659@redhat.com> (raw)
In-Reply-To: <20120823121338.GA3062@t510.redhat.com>

On Thu, Aug 23, 2012 at 09:13:39AM -0300, Rafael Aquini wrote:
> On Thu, Aug 23, 2012 at 01:01:07PM +0300, Michael S. Tsirkin wrote:
> > > So, when remove_common() calls leak_balloon() looping on
> > > vb->num_pages, that won't become a tight loop. 
> > > The scheme was apparently working before this series, and it will remain working
> > > after it.
> > 
> > It seems that before we would always leak all requested memory
> > in one go. I can't tell why we have a while loop there at all.
> > Rusty, could you clarify please?
> >
> 
> It seems that your claim isn't right. leak_balloon() cannot do it all at once,
> as for each round it only releases 256 pages, at most; and the 'one go' would
> require a couple of loop rounds at remove_common().

You are right in this respect.

> So, nothing has changed here.

Yes, your patch does change things:
leak_balloon now might return without freeing any pages.
In that case we will not be making any progress, and just
spin, pinning CPU.

>  
> > > Just as before, same thing here. If you leaked less than required, balloon()
> > > will keep calling leak_balloon() until the balloon target is reached. This
> > > scheme was working before, and it will keep working after this patch.
> > >
> > 
> > IIUC we never hit this path before.
> >  
> So, how does balloon() works then?
> 

It gets a request to leak a given number of pages
and executes it, then tells host that it is done.
It never needs to spin busy-waiting on a CPU for this.

> > > > How about we signal config_change
> > > > event when pages are back to pages_list?
> > > 
> > > I really don't know what to tell you here, but, to me, it seems like an
> > > overcomplication that isn't directly entangled with this patch purposes.
> > > Besides, you cannot expect compation / migration happening and racing against
> > > leak_balloon() all the time to make them signal events to the later, so we might
> > > just be creating a wait-forever condition for leak_balloon(), IMHO.
> > 
> > So use wait_event or similar, check for existance of isolated pages.
> > 
> 
> The thing here is expecting compaction as being an external event to signal
> actions to the balloon driver won't work as you desire. Also, as far as the
> balloon driver is concerned, it's only a matter of time to accomplish a total,
> or partial, balloon leak, even when we have some pages isolated from balloon's
> page list.
> 
> IMHO, you're attempting to complicate a simple thing that is already working
> well. As said before, there are no guarantees you'll have isolated pages 
> by the time you're leaking the balloon, so you might leave it waiting forever
> on something that will not happen. And if there are isolated pages while balloon
> is leaking, they'll have their chance to get back to the list before the device
> finishes its leaking job.

Well busy wait pinning CPU is ugly.  Instead we should block thread and
wake it up when done.  I don't mind how we fix it specifically.

-- 
MST

  reply	other threads:[~2012-08-23 12:33 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-21 12:47 [PATCH v8 0/5] make balloon pages movable by compaction Rafael Aquini
2012-08-21 12:47 ` [PATCH v8 1/5] mm: introduce a common interface for balloon pages mobility Rafael Aquini
2012-08-21 13:52   ` Michael S. Tsirkin
2012-08-21 14:25     ` Michael S. Tsirkin
2012-08-21 15:16     ` Peter Zijlstra
2012-08-21 15:41       ` Michael S. Tsirkin
2012-08-21 17:42         ` Rafael Aquini
2012-08-21 19:28           ` Michael S. Tsirkin
2012-08-21 17:55     ` Rafael Aquini
2012-08-21 19:16       ` Michael S. Tsirkin
2012-08-21 19:34         ` Rafael Aquini
2012-08-22  0:06           ` Michael S. Tsirkin
2012-08-21 15:20   ` Peter Zijlstra
2012-08-21 16:24     ` Paul E. McKenney
2012-08-21 17:28       ` Rafael Aquini
2012-08-21 19:13         ` Michael S. Tsirkin
2012-08-21 19:23           ` Rafael Aquini
2012-08-21 19:30             ` Michael S. Tsirkin
2012-08-21 20:45               ` Rafael Aquini
2012-08-22  0:07                 ` Michael S. Tsirkin
2012-08-22  1:19                   ` Rafael Aquini
2012-08-22  9:33                     ` Michael S. Tsirkin
2012-08-23  2:19                       ` Rafael Aquini
2012-08-23 10:01                         ` Michael S. Tsirkin
2012-08-23 12:13                           ` Rafael Aquini
2012-08-23 12:34                             ` Michael S. Tsirkin [this message]
2012-08-23 13:06                               ` Rafael Aquini
2012-08-23 13:53                                 ` Michael S. Tsirkin
2012-08-23 15:21                                   ` Rafael Aquini
2012-08-23 15:54                                     ` Michael S. Tsirkin
2012-08-23 16:03                                       ` Rik van Riel
2012-08-23 16:06                                         ` Rafael Aquini
2012-08-23 16:10                                           ` Michael S. Tsirkin
2012-08-23 16:25                                   ` Michael S. Tsirkin
2012-08-23 17:28                                     ` Rafael Aquini
2012-08-23 17:59                                       ` Rik van Riel
2012-08-23 23:36                                       ` Michael S. Tsirkin
2012-08-24  0:26                                         ` Rafael Aquini
2012-08-24  0:33                                         ` Rafael Aquini
2012-08-24  0:38                                           ` Rafael Aquini
2012-08-24  0:49                                             ` Rafael Aquini
2012-08-24  3:12                                         ` Rik van Riel
2012-08-24  8:03                                           ` Michael S. Tsirkin
2012-08-21 12:47 ` [PATCH v8 2/5] mm: introduce compaction and migration for ballooned pages Rafael Aquini
2012-08-21 12:47 ` [PATCH v8 3/5] virtio_balloon: introduce migration primitives to balloon pages Rafael Aquini
2012-08-21 14:40   ` Michael S. Tsirkin
2012-08-21 15:34     ` Peter Zijlstra
2012-08-21 15:37     ` Peter Zijlstra
2012-08-21 14:57   ` Michael S. Tsirkin
2012-08-21 12:47 ` [PATCH v8 4/5] mm: introduce putback_movable_pages() Rafael Aquini
2012-08-21 14:42   ` Michael S. Tsirkin
2012-08-21 12:47 ` [PATCH v8 5/5] mm: add vm event counters for balloon pages compaction Rafael Aquini

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=20120823123432.GA25659@redhat.com \
    --to=mst@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=aquini@redhat.com \
    --cc=konrad.wilk@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mel@csn.ul.ie \
    --cc=minchan@kernel.org \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=peterz@infradead.org \
    --cc=riel@redhat.com \
    --cc=rusty@rustcorp.com.au \
    --cc=virtualization@lists.linux-foundation.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).