Re: [PATCH 01/18] mm, hugetlb: protect reserved pages whensoftofflining requests the pages

From: Hillf Danton
Date: Wed Jul 31 2013 - 11:25:14 EST


On Wed, Jul 31, 2013 at 2:37 PM, Joonsoo Kim <iamjoonsoo.kim@xxxxxxx> wrote:
> On Wed, Jul 31, 2013 at 02:21:38PM +0800, Hillf Danton wrote:
>> On Wed, Jul 31, 2013 at 12:41 PM, Joonsoo Kim <iamjoonsoo.kim@xxxxxxx> wrote:
>> > On Wed, Jul 31, 2013 at 10:49:24AM +0800, Hillf Danton wrote:
>> >> On Wed, Jul 31, 2013 at 10:27 AM, Joonsoo Kim <iamjoonsoo.kim@xxxxxxx> wrote:
>> >> > On Mon, Jul 29, 2013 at 03:24:46PM +0800, Hillf Danton wrote:
>> >> >> On Mon, Jul 29, 2013 at 1:31 PM, Joonsoo Kim <iamjoonsoo.kim@xxxxxxx> wrote:
>> >> >> > alloc_huge_page_node() use dequeue_huge_page_node() without
>> >> >> > any validation check, so it can steal reserved page unconditionally.
>> >> >>
>> >> >> Well, why is it illegal to use reserved page here?
>> >> >
>> >> > If we use reserved page here, other processes which are promised to use
>> >> > enough hugepages cannot get enough hugepages and can die. This is
>> >> > unexpected result to them.
>> >> >
>> >> But, how do you determine that a huge page is requested by a process
>> >> that is not allowed to use reserved pages?
>> >
>> > Reserved page is just one for each address or file offset. If we need to
>> > move this page, this means that it already use it's own reserved page, this
>> > page is it. So we should not use other reserved page for moving this page.
>> >
>> Hm, how do you determine "this page" is not buddy?
>
> If this page comes from the buddy, it doesn't matter. It imply that
> this mapping cannot use reserved page pool, because we always allocate
> a page from reserved page pool first.
>
A buddy page also implies, if the mapping can use reserved pages, that no
reserved page was available when requested. Now we can try reserved
page again.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/