Re: [ckrm-tech] [RFC][PATCH 5/8] RSS controller task migration support

Balbir Singh
2006-11-15T16:37:53Z

Patrick.Le-Dot wrote:
> Hi Balbir,
>
> The get_task_mm()/mmput(mm) usage is not correct.
> With CONFIG_DEBUG_SPINLOCK_SLEEP=y :
>
> BUG: sleeping function called from invalid context at kernel/fork.c:390
> in_atomic():1, irqs_disabled():0
> [<c0116620>] __might_sleep+0x97/0x9c
> [<c0116a2e>] mmput+0x15/0x8b
> [<c01582f6>] install_arg_page+0x72/0xa9
> [<c01584b1>] setup_arg_pages+0x184/0x1a5
> ...
>
> BUG: sleeping function called from invalid context at kernel/fork.c:390
> in_atomic():1, irqs_disabled():0
> [<c0116620>] __might_sleep+0x97/0x9c
> [<c0116a2e>] mmput+0x15/0x8b
> [<c01468ee>] do_no_page+0x255/0x2bd
> [<c0146b8d>] __handle_mm_fault+0xed/0x1ef
> [<c0111884>] do_page_fault+0x247/0x506
> [<c011163d>] do_page_fault+0x0/0x506
> [<c0348f99>] error_code+0x39/0x40
>
>
> current->mm seems to be enough here.

Excellent, thanks for catching this!

>
>
>
> In patch4, memctlr_dec_rss(page, mm) should be memctlr_dec_rss(page)
> to compile correctly.
>
> and in patch0 :
>> 4. Disable cpuset's (to simply assignment of tasks to resource groups)
>> cd /container
>> echo 0 > cpuset_enabled
>
> should be :
> echo 0 > cpuacct_enabled
>
> Note : cpuacct_enabled is 0 by default.
>

Thanks for pointing this out.

>
> Now the big question : to implement guarantee, the LRU needs to know
> if a page can be removed from memory or not.
> Any ideas to do that without any change in the struct page ?
>

For implementing guarantees, we can use limits. Please see
http://wiki.openvz.org/Containers/Guarantees_for_resources.

Thanks for the feedback!

--

Balbir Singh,
Linux Technology Center,
IBM Software Labs