From: Rusty Russell <rusty@rustcorp.com.au>
To: linux-mm@kvack.org
Cc: Rik van Riel <riel@redhat.com>,
aquini@redhat.com, "Michael S. Tsirkin" <mst@redhat.com>,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
linux-kernel@vger.kernel.org,
virtualization@lists.linux-foundation.org,
Minchan Kim <minchan@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Andi Kleen <andi@firstfloor.org>,
Andrew Morton <akpm@linux-foundation.org>,
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Subject: Re: [PATCH v11 5/7] virtio_balloon: introduce migration primitives to balloon pages
Date: Thu, 08 Nov 2012 09:32:18 +1030 [thread overview]
Message-ID: <87625h3tl1.fsf@rustcorp.com.au> (raw)
In-Reply-To: <265aaff9a79f503672f0cdcdff204114b5b5ba5b.1352256088.git.aquini@redhat.com>
Rafael Aquini <aquini@redhat.com> writes:
> + * virtballoon_migratepage - perform the balloon page migration on behalf of
> + * a compation thread. (called under page lock)
> + if (!mutex_trylock(&vb->balloon_lock))
> + return -EAGAIN;
Erk, OK...
> + /* balloon's page migration 1st step -- inflate "newpage" */
> + spin_lock_irqsave(&vb_dev_info->pages_lock, flags);
> + balloon_page_insert(newpage, mapping, &vb_dev_info->pages);
> + vb_dev_info->isolated_pages--;
> + spin_unlock_irqrestore(&vb_dev_info->pages_lock, flags);
> + vb->num_pfns = VIRTIO_BALLOON_PAGES_PER_PAGE;
> + set_page_pfns(vb->pfns, newpage);
> + tell_host(vb, vb->inflate_vq);
tell_host does wait_event(), so you can't call it under the page_lock.
Right?
You probably get away with it because current qemu will service you
immediately. You could spin here in this case for the moment.
There's a second call to tell_host():
> + /*
> + * balloon's page migration 2nd step -- deflate "page"
> + *
> + * It's safe to delete page->lru here because this page is at
> + * an isolated migration list, and this step is expected to happen here
> + */
> + balloon_page_delete(page);
> + vb->num_pfns = VIRTIO_BALLOON_PAGES_PER_PAGE;
> + set_page_pfns(vb->pfns, page);
> + tell_host(vb, vb->deflate_vq);
The first one can be delayed, the second one can be delayed if the host
didn't ask for VIRTIO_BALLOON_F_MUST_TELL_HOST (qemu doesn't).
We could implement a proper request queue for these, and return -EAGAIN
if the queue fills. Though in practice, it's not important (it might
help performance).
Cheers,
Rusty.
WARNING: multiple messages have this Message-ID (diff)
From: Rusty Russell <rusty@rustcorp.com.au>
To: Rafael Aquini <aquini@redhat.com>, linux-mm@kvack.org
Cc: linux-kernel@vger.kernel.org,
virtualization@lists.linux-foundation.org,
"Michael S. Tsirkin" <mst@redhat.com>,
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>,
Peter Zijlstra <peterz@infradead.org>,
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Subject: Re: [PATCH v11 5/7] virtio_balloon: introduce migration primitives to balloon pages
Date: Thu, 08 Nov 2012 09:32:18 +1030 [thread overview]
Message-ID: <87625h3tl1.fsf@rustcorp.com.au> (raw)
In-Reply-To: <265aaff9a79f503672f0cdcdff204114b5b5ba5b.1352256088.git.aquini@redhat.com>
Rafael Aquini <aquini@redhat.com> writes:
> + * virtballoon_migratepage - perform the balloon page migration on behalf of
> + * a compation thread. (called under page lock)
> + if (!mutex_trylock(&vb->balloon_lock))
> + return -EAGAIN;
Erk, OK...
> + /* balloon's page migration 1st step -- inflate "newpage" */
> + spin_lock_irqsave(&vb_dev_info->pages_lock, flags);
> + balloon_page_insert(newpage, mapping, &vb_dev_info->pages);
> + vb_dev_info->isolated_pages--;
> + spin_unlock_irqrestore(&vb_dev_info->pages_lock, flags);
> + vb->num_pfns = VIRTIO_BALLOON_PAGES_PER_PAGE;
> + set_page_pfns(vb->pfns, newpage);
> + tell_host(vb, vb->inflate_vq);
tell_host does wait_event(), so you can't call it under the page_lock.
Right?
You probably get away with it because current qemu will service you
immediately. You could spin here in this case for the moment.
There's a second call to tell_host():
> + /*
> + * balloon's page migration 2nd step -- deflate "page"
> + *
> + * It's safe to delete page->lru here because this page is at
> + * an isolated migration list, and this step is expected to happen here
> + */
> + balloon_page_delete(page);
> + vb->num_pfns = VIRTIO_BALLOON_PAGES_PER_PAGE;
> + set_page_pfns(vb->pfns, page);
> + tell_host(vb, vb->deflate_vq);
The first one can be delayed, the second one can be delayed if the host
didn't ask for VIRTIO_BALLOON_F_MUST_TELL_HOST (qemu doesn't).
We could implement a proper request queue for these, and return -EAGAIN
if the queue fills. Though in practice, it's not important (it might
help performance).
Cheers,
Rusty.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: Rusty Russell <rusty@rustcorp.com.au>
To: Rafael Aquini <aquini@redhat.com>, linux-mm@kvack.org
Cc: linux-kernel@vger.kernel.org,
virtualization@lists.linux-foundation.org,
"Michael S. Tsirkin" <mst@redhat.com>,
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>,
Peter Zijlstra <peterz@infradead.org>,
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
aquini@redhat.com
Subject: Re: [PATCH v11 5/7] virtio_balloon: introduce migration primitives to balloon pages
Date: Thu, 08 Nov 2012 09:32:18 +1030 [thread overview]
Message-ID: <87625h3tl1.fsf@rustcorp.com.au> (raw)
In-Reply-To: <265aaff9a79f503672f0cdcdff204114b5b5ba5b.1352256088.git.aquini@redhat.com>
Rafael Aquini <aquini@redhat.com> writes:
> + * virtballoon_migratepage - perform the balloon page migration on behalf of
> + * a compation thread. (called under page lock)
> + if (!mutex_trylock(&vb->balloon_lock))
> + return -EAGAIN;
Erk, OK...
> + /* balloon's page migration 1st step -- inflate "newpage" */
> + spin_lock_irqsave(&vb_dev_info->pages_lock, flags);
> + balloon_page_insert(newpage, mapping, &vb_dev_info->pages);
> + vb_dev_info->isolated_pages--;
> + spin_unlock_irqrestore(&vb_dev_info->pages_lock, flags);
> + vb->num_pfns = VIRTIO_BALLOON_PAGES_PER_PAGE;
> + set_page_pfns(vb->pfns, newpage);
> + tell_host(vb, vb->inflate_vq);
tell_host does wait_event(), so you can't call it under the page_lock.
Right?
You probably get away with it because current qemu will service you
immediately. You could spin here in this case for the moment.
There's a second call to tell_host():
> + /*
> + * balloon's page migration 2nd step -- deflate "page"
> + *
> + * It's safe to delete page->lru here because this page is at
> + * an isolated migration list, and this step is expected to happen here
> + */
> + balloon_page_delete(page);
> + vb->num_pfns = VIRTIO_BALLOON_PAGES_PER_PAGE;
> + set_page_pfns(vb->pfns, page);
> + tell_host(vb, vb->deflate_vq);
The first one can be delayed, the second one can be delayed if the host
didn't ask for VIRTIO_BALLOON_F_MUST_TELL_HOST (qemu doesn't).
We could implement a proper request queue for these, and return -EAGAIN
if the queue fills. Though in practice, it's not important (it might
help performance).
Cheers,
Rusty.
next prev parent reply other threads:[~2012-11-07 23:02 UTC|newest]
Thread overview: 98+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-07 3:05 [PATCH v11 0/7] make balloon pages movable by compaction Rafael Aquini
2012-11-07 3:05 ` Rafael Aquini
2012-11-07 3:05 ` [PATCH v11 1/7] mm: adjust address_space_operations.migratepage() return code Rafael Aquini
2012-11-07 3:05 ` Rafael Aquini
2012-11-07 19:56 ` Andrew Morton
2012-11-07 19:56 ` Andrew Morton
2012-11-07 19:56 ` Andrew Morton
2012-11-07 21:39 ` Rafael Aquini
2012-11-07 21:39 ` Rafael Aquini
2012-11-07 21:39 ` Rafael Aquini
2012-11-07 3:05 ` Rafael Aquini
2012-11-07 3:05 ` [PATCH v11 2/7] mm: redefine address_space.assoc_mapping Rafael Aquini
2012-11-07 3:05 ` Rafael Aquini
2012-11-07 3:05 ` Rafael Aquini
2012-11-07 3:05 ` [PATCH v11 3/7] mm: introduce a common interface for balloon pages mobility Rafael Aquini
2012-11-07 3:05 ` Rafael Aquini
2012-11-07 3:05 ` Rafael Aquini
2012-11-07 21:02 ` Andrew Morton
2012-11-07 21:02 ` Andrew Morton
2012-11-07 21:02 ` Andrew Morton
2012-11-07 21:34 ` Rafael Aquini
2012-11-07 21:34 ` Rafael Aquini
2012-11-07 21:34 ` Rafael Aquini
2012-11-09 12:11 ` Mel Gorman
2012-11-09 12:11 ` Mel Gorman
2012-11-09 12:11 ` Mel Gorman
2012-11-09 14:53 ` Rafael Aquini
2012-11-09 14:53 ` Rafael Aquini
2012-11-09 16:23 ` Mel Gorman
2012-11-09 16:23 ` Mel Gorman
2012-11-09 16:23 ` Mel Gorman
2012-11-09 17:58 ` Rafael Aquini
2012-11-09 17:58 ` Rafael Aquini
2012-11-09 17:58 ` Rafael Aquini
2012-11-09 14:53 ` Rafael Aquini
2012-11-07 3:05 ` [PATCH v11 4/7] mm: introduce compaction and migration for ballooned pages Rafael Aquini
2012-11-07 3:05 ` Rafael Aquini
2012-11-07 3:05 ` Rafael Aquini
2012-11-09 12:16 ` Mel Gorman
2012-11-09 12:16 ` Mel Gorman
2012-11-09 12:16 ` Mel Gorman
2012-11-20 23:33 ` Andrew Morton
2012-11-20 23:33 ` Andrew Morton
2012-11-20 23:33 ` Andrew Morton
2012-11-27 11:59 ` Rafael Aquini
2012-11-27 11:59 ` Rafael Aquini
2012-11-27 11:59 ` Rafael Aquini
2012-11-07 3:05 ` [PATCH v11 5/7] virtio_balloon: introduce migration primitives to balloon pages Rafael Aquini
2012-11-07 3:05 ` Rafael Aquini
2012-11-07 3:05 ` Rafael Aquini
2012-11-07 19:58 ` Andrew Morton
2012-11-07 19:58 ` Andrew Morton
2012-11-07 19:58 ` Andrew Morton
2012-11-07 22:02 ` Rafael Aquini
2012-11-07 22:02 ` Rafael Aquini
2012-11-07 22:02 ` Rafael Aquini
2012-11-07 23:02 ` Rusty Russell [this message]
2012-11-07 23:02 ` Rusty Russell
2012-11-07 23:02 ` Rusty Russell
2012-11-08 0:11 ` Andrew Morton
2012-11-08 0:11 ` Andrew Morton
2012-11-08 0:11 ` Andrew Morton
2012-11-08 0:32 ` Rafael Aquini
2012-11-08 0:32 ` Rafael Aquini
2012-11-08 0:32 ` Rafael Aquini
2012-11-10 15:53 ` Michael S. Tsirkin
2012-11-10 15:53 ` Michael S. Tsirkin
2012-11-10 15:53 ` Michael S. Tsirkin
2012-11-08 0:34 ` Rafael Aquini
2012-11-08 0:34 ` Rafael Aquini
2012-11-12 7:49 ` Rusty Russell
2012-11-12 7:49 ` Rusty Russell
2012-11-12 7:49 ` Rusty Russell
2012-11-08 0:34 ` Rafael Aquini
2012-11-10 15:53 ` Michael S. Tsirkin
2012-11-10 15:53 ` Michael S. Tsirkin
2012-11-10 15:53 ` Michael S. Tsirkin
2012-11-07 3:05 ` [PATCH v11 6/7] mm: introduce putback_movable_pages() Rafael Aquini
2012-11-07 3:05 ` Rafael Aquini
2012-11-07 3:05 ` Rafael Aquini
2012-11-07 3:05 ` [PATCH v11 7/7] mm: add vm event counters for balloon pages compaction Rafael Aquini
2012-11-07 3:05 ` Rafael Aquini
2012-11-09 12:20 ` Mel Gorman
2012-11-09 12:20 ` Mel Gorman
2012-11-09 12:20 ` Mel Gorman
2012-11-09 14:58 ` Rafael Aquini
2012-11-09 14:58 ` Rafael Aquini
2012-11-09 14:58 ` Rafael Aquini
2012-11-20 23:29 ` Andrew Morton
2012-11-20 23:29 ` Andrew Morton
2012-11-20 23:29 ` Andrew Morton
2012-11-10 15:55 ` Michael S. Tsirkin
2012-11-10 15:55 ` Michael S. Tsirkin
2012-11-11 19:22 ` Rafael Aquini
2012-11-11 19:22 ` Rafael Aquini
2012-11-11 19:22 ` Rafael Aquini
2012-11-10 15:55 ` Michael S. Tsirkin
2012-11-07 3:05 ` 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=87625h3tl1.fsf@rustcorp.com.au \
--to=rusty@rustcorp.com.au \
--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=minchan@kernel.org \
--cc=mst@redhat.com \
--cc=paulmck@linux.vnet.ibm.com \
--cc=peterz@infradead.org \
--cc=riel@redhat.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.