From: Tang Chen <tangchen@cn.fujitsu.com>
To: Benjamin LaHaise <bcrl@kvack.org>
Cc: Mel Gorman <mgorman@suse.de>, Minchan Kim <minchan@kernel.org>,
Lin Feng <linfeng@cn.fujitsu.com>,
akpm@linux-foundation.org, viro@zeniv.linux.org.uk,
khlebnikov@openvz.org, walken@google.com,
kamezawa.hiroyu@jp.fujitsu.com, riel@redhat.com,
rientjes@google.com, isimatu.yasuaki@jp.fujitsu.com,
wency@cn.fujitsu.com, laijs@cn.fujitsu.com, jiang.liu@huawei.com,
zab@redhat.com, jmoyer@redhat.com, linux-mm@kvack.org,
linux-aio@kvack.org, linux-fsdevel@vger.kernel.org,
linux-kernel@vger.kernel.org,
Marek Szyprowski <m.szyprowski@samsung.com>
Subject: Re: [WiP]: aio support for migrating pages (Re: [PATCH V2 1/2] mm: hotplug: implement non-movable version of get_user_pages() called get_user_pages_non_movable())
Date: Tue, 21 May 2013 10:07:52 +0800 [thread overview]
Message-ID: <519AD6F8.2070504@cn.fujitsu.com> (raw)
In-Reply-To: <20130517143718.GK1008@kvack.org>
Hi Benjamin,
Sorry for the late. Please see below.
On 05/17/2013 10:37 PM, Benjamin LaHaise wrote:
> On Fri, May 17, 2013 at 11:28:52AM +0800, Tang Chen wrote:
>> Hi Benjamin,
>>
>> Thank you very much for your idea. :)
>>
>> I have no objection to your idea, but seeing from your patch, this only
>> works for aio subsystem because you changed the way to allocate the aio
>> ring pages, with a file mapping.
>
> That is correct. There is no way you're going to be able to solve this
> problem without dealing with the issue on a subsystem by subsystem basis.
>
Yes, I understand that. We need subsystem work anyway.
>> I'm working in the way Mel has said, migrate_unpin() and migrate_pin()
>> callbacks. But as you saw, I met some problems, like I don't where to put
>> these two callbacks. And discussed with you guys, I want to try this:
>>
>> 1. Add a new member to struct page, used to remember the pin holders of
>> this page, including the pin and unpin callbacks and the necessary data.
>> This is more like a callback chain.
>> (I'm worry about this step, I'm not sure if it is good enough. After
>> all,
>> we need a good place to put the callbacks.)
>
> Putting function pointers into struct page is not going to happen. You'd
> be adding a significant amount of memory overhead for something that is
> never going to be used on the vast majority of systems (2 function pointers
> would be 16 bytes per page on a 64 bit system). Keep in mind that distro
> kernels tend to enable almost all config options on their kernels, so the
> overhead of any approach has to make sense for the users of the kernel that
> will never make use of this kind of migration.
True. But I just cannot find a place to hold the callbacks.
>
>> 3. Call these callbacks before and after migration.
>
> How is that better than using the existing hook in address_space_operations?
I'm not saying using two callbacks before and after migration is better.
I don't want to use address_space_operations is because there is no such
member
for anonymous pages.
In your idea, using a file mapping will create a
address_space_operations. But
I really don't think we can modify the way of memory allocation for all the
subsystems who has this problem. Maybe not just aio and cma. That means if
you want to pin pages in memory, you have to use a file mapping. This makes
the memory allocation more complicated. And the idea should be known by all
the subsystem developers. Is that going to happen ?
I also thought about reuse one field of struct page. But as you said, there
may not be many users of this functionality. Reusing a field of struct page
will make things more complicated and lead to high coupling.
So, how about the other idea that Mel mentioned ?
We create a 1-1 mapping of pinned page ranges and the pinner (subsystem
callbacks and data), maybe a global list or a hash table. And then, we can
find the callbacks.
Thanks. :)
--
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 prev parent reply other threads:[~2013-05-21 2:07 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-05 9:21 [PATCH V2 0/2] mm: hotplug: implement non-movable version of get_user_pages() to kill long-time pin pages Lin Feng
2013-02-05 9:21 ` [PATCH V2 1/2] mm: hotplug: implement non-movable version of get_user_pages() called get_user_pages_non_movable() Lin Feng
2013-02-05 12:01 ` Mel Gorman
2013-02-06 0:42 ` Minchan Kim
2013-02-06 0:52 ` Benjamin LaHaise
2013-02-06 9:56 ` Mel Gorman
2013-02-08 2:32 ` Minchan Kim
2013-05-13 9:11 ` Tang Chen
2013-05-13 9:19 ` Mel Gorman
2013-05-13 14:37 ` Benjamin LaHaise
2013-05-13 14:54 ` Jeff Moyer
2013-05-13 15:01 ` Benjamin LaHaise
2013-05-14 1:24 ` Tang Chen
2013-05-14 13:58 ` Benjamin LaHaise
2013-05-14 15:16 ` chen tang
2013-05-15 2:09 ` Tang Chen
2013-05-15 7:21 ` Tang Chen
2013-05-14 3:55 ` Tang Chen
2013-05-15 13:24 ` Mel Gorman
2013-05-16 5:54 ` Tang Chen
2013-05-17 0:23 ` [WiP]: aio support for migrating pages (Re: [PATCH V2 1/2] mm: hotplug: implement non-movable version of get_user_pages() called get_user_pages_non_movable()) Benjamin LaHaise
2013-05-17 3:28 ` Tang Chen
2013-05-17 14:37 ` Benjamin LaHaise
2013-05-21 2:07 ` Tang Chen [this message]
2013-05-21 2:27 ` Benjamin LaHaise
2013-06-11 9:42 ` Tang Chen
2013-06-11 14:45 ` Benjamin LaHaise
2013-06-28 9:24 ` Gu Zheng
2013-07-01 7:23 ` Gu Zheng
2013-07-02 18:00 ` Benjamin LaHaise
2013-07-03 1:53 ` Gu Zheng
2013-07-04 6:51 ` Gu Zheng
2013-07-04 11:41 ` Benjamin LaHaise
2013-07-05 3:21 ` Gu Zheng
2013-05-17 18:17 ` Zach Brown
2013-05-17 18:30 ` Benjamin LaHaise
2013-02-20 11:37 ` [PATCH V2 1/2] mm: hotplug: implement non-movable version of get_user_pages() called get_user_pages_non_movable() Wanpeng Li
2013-02-20 12:39 ` Lin Feng
2013-02-20 11:37 ` Wanpeng Li
2013-02-20 11:37 ` Wanpeng Li
2013-02-05 9:21 ` [PATCH V2 2/2] fs/aio.c: use get_user_pages_non_movable() to pin ring pages when support memory hotremove Lin Feng
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=519AD6F8.2070504@cn.fujitsu.com \
--to=tangchen@cn.fujitsu.com \
--cc=akpm@linux-foundation.org \
--cc=bcrl@kvack.org \
--cc=isimatu.yasuaki@jp.fujitsu.com \
--cc=jiang.liu@huawei.com \
--cc=jmoyer@redhat.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=khlebnikov@openvz.org \
--cc=laijs@cn.fujitsu.com \
--cc=linfeng@cn.fujitsu.com \
--cc=linux-aio@kvack.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=m.szyprowski@samsung.com \
--cc=mgorman@suse.de \
--cc=minchan@kernel.org \
--cc=riel@redhat.com \
--cc=rientjes@google.com \
--cc=viro@zeniv.linux.org.uk \
--cc=walken@google.com \
--cc=wency@cn.fujitsu.com \
--cc=zab@redhat.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