lkml.org 
[lkml]   [2007]   [Jun]   [6]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
DateTue, 5 Jun 2007 23:42:09 -0700 (PDT)
FromDavid Rientjes <>
SubjectRe: [patch] cpusets: do not allow TIF_MEMDIE tasks to allocate globally
On Wed, 6 Jun 2007, Peter Zijlstra wrote:

> > diff --git a/kernel/cpuset.c b/kernel/cpuset.c
> > --- a/kernel/cpuset.c
> > +++ b/kernel/cpuset.c
> > @@ -2431,12 +2431,6 @@ int __cpuset_zone_allowed_softwall(struct zone *z, gfp_t gfp_mask)
> >  	might_sleep_if(!(gfp_mask & __GFP_HARDWALL));
> >  	if (node_isset(node, current->mems_allowed))
> >  		return 1;
> > -	/*
> > -	 * Allow tasks that have access to memory reserves because they have
> > -	 * been OOM killed to get memory anywhere.
> > -	 */
> > -	if (unlikely(test_thread_flag(TIF_MEMDIE)))
> > -		return 1;
> >  	if (gfp_mask & __GFP_HARDWALL)	/* If hardwall request, stop here */
> >  		return 0;
> > 
> 
> This seems a little pointless, since cpuset_zone_allowed_softwall() is
> only effective with ALLOC_CPUSET, and the ALLOC_NO_WATERMARKS
> allocations opened up by TIF_MEMDIE don't use that.
> 

That's the change.  Memory reserves on a per-zone level would now be used 
with respect to ALLOC_NO_WATERMARKS because TIF_MEMDIE tasks no longer 
have an explicit bypass for them.  If the node is not in the task's 
mems_allowed and it's a __GFP_HARDWALL allocation or if it's neither
PF_EXITING or in the nearest_exclusive_ancestor() of that task's cpuset, 
then we move on to the next zone in get_page_from_freelist().

The problem the patch addresses is that, as you mentioned, tasks with 
TIF_MEMDIE have an explicit bypass over using any memory reserves and can 
thus, depending on zonelist ordering, allocate first on nodes outside its 
mems_allowed even in the case of an exclusive cpuset before exhausting its 
own memory.  That behavior is wrong.

		David
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2007-06-06 06:45    [from the cache]
©2003-2008