From: Minchan Kim <minchan@kernel.org>
To: linux-kernel@vger.kernel.org
Cc: linux-mm@kvack.org, k.kozlowski@samsung.com,
Seth Jennings <sjenning@linux.vnet.ibm.com>,
Mel Gorman <mgorman@suse.de>,
guz.fnst@cn.fujitsu.com, Benjamin LaHaise <bcrl@kvack.org>,
Dave Hansen <dave.hansen@intel.com>,
lliubbo@gmail.com, aquini@redhat.com,
Rik van Riel <riel@redhat.com>, Minchan Kim <minchan@kernel.org>
Subject: [RFC 0/3] Pin page control subsystem
Date: Tue, 13 Aug 2013 16:04:59 +0900 [thread overview]
Message-ID: <1376377502-28207-1-git-send-email-minchan@kernel.org> (raw)
!! NOTICE !!
It's totally untested patchset so please AVOID real testing.
I'd like to show just concept and want to discuss it on very early stage.
(so there isn't enough description but I guess code is very simple so
not a big problem to understand the intention).
This patchset is for solving *kernel* pinpage migration problem more
general. Now, zswap, zram and z* family, not sure upcoming what
solution are using memory don't live in harmony with VM.
(I don't remember ballon compaction but we might be able to unify
ballon compaction with this.)
VM sometime want to migrate and/or reclaim pages for CMA, memory-hotplug,
THP and so on but at the moment, it could handle only userspace pages
so if above example subsystem have pinned a some page in a range VM want
to migrate, migration is failed so above exmaple couldn't work well.
This patchset is for basic facility for the role.
patch 1 introduces a new page flags and patch 2 introduce pinpage control
subsystem. So, subsystems want to control pinpage should implement own
pinpage_xxx functions because each subsystem would have other character
so what kinds of data structure for managing pinpage information depends
on them. Otherwise, they can use general functions defined in pinpage
subsystem. patch 3 hacks migration.c so that migration is
aware of pinpage now and migrate them with pinpage subsystem.
It exposes new rule that users of pinpage control subsystem shouldn't use
struct page->flags and struct page->lru field freely because lru field
is used for migration.c and flags field is used for lock_page in pinpage
control subsystem. I think it's not a big problem because subsystem can
use other fields of the page descriptor, instead.
This patch's limitation is that it couldn't apply user space pages
although I'd REALLY REALLY like to unify them.
IOW, it couldn't handle long pin page by get_user_pages.
Basic hurdle is that how to handle nesting cases caused by that
several subsystem pin on same page with GUP but they could have
different migrate methods. It could add rather complexity and overhead
but I'm not sure it's worth because proved culprit until now is AIO
ring pages and Gu and Benjamin have approached it with another way
so I'd like to hear their opinions.
Minchan Kim (3):
mm: Introduce new page flag
pinpage control subsystem
mm: migrate pinned page
include/linux/page-flags.h | 2 +
include/linux/pinpage.h | 39 +++++++++++++
mm/Makefile | 2 +-
mm/compaction.c | 26 ++++++++-
mm/migrate.c | 58 ++++++++++++++++---
mm/page_alloc.c | 1 +
mm/pinpage.c | 134 ++++++++++++++++++++++++++++++++++++++++++++
7 files changed, 252 insertions(+), 10 deletions(-)
create mode 100644 include/linux/pinpage.h
create mode 100644 mm/pinpage.c
--
1.7.9.5
--
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>
next reply other threads:[~2013-08-13 7:05 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-13 7:04 Minchan Kim [this message]
2013-08-13 7:05 ` [RFC 1/3] mm: Introduce new page flag Minchan Kim
2013-08-13 7:05 ` [RFC 2/3] pinpage control subsystem Minchan Kim
2013-08-13 7:05 ` [RFC 3/3] mm: migrate pinned page Minchan Kim
2013-08-13 9:46 ` [RFC 0/3] Pin page control subsystem Krzysztof Kozlowski
2013-08-13 14:23 ` Benjamin LaHaise
2013-08-14 0:08 ` Minchan Kim
2013-08-13 23:54 ` Minchan Kim
2013-08-13 16:21 ` Christoph Lameter
2013-08-14 0:12 ` Minchan Kim
2013-08-14 16:36 ` Christoph Lameter
2013-08-14 16:47 ` Minchan Kim
2013-08-14 16:58 ` Christoph Lameter
2013-08-15 4:48 ` Minchan Kim
2013-08-15 15:18 ` Christoph Lameter
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=1376377502-28207-1-git-send-email-minchan@kernel.org \
--to=minchan@kernel.org \
--cc=aquini@redhat.com \
--cc=bcrl@kvack.org \
--cc=dave.hansen@intel.com \
--cc=guz.fnst@cn.fujitsu.com \
--cc=k.kozlowski@samsung.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lliubbo@gmail.com \
--cc=mgorman@suse.de \
--cc=riel@redhat.com \
--cc=sjenning@linux.vnet.ibm.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).