Re: [patch 2/7 -mm] oom: sacrifice child with highest badness score for parent

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 12 Feb 2010, KAMEZAWA Hiroyuki wrote:

> Maybe better than current logic..but I'm not sure why we have to check children ;)
> 
> BTW,
> ==
>         list_for_each_entry(child, &p->children, sibling) {
>                 task_lock(child);
>                 if (child->mm != mm && child->mm)
>                         points += child->mm->total_vm/2 + 1;
>                 task_unlock(child);
>         }
> ==
> I wonder this part should be
> 	points += (child->total_vm/2) >> child->signal->oom_adj + 1
> 
> If not, in following situation,
> ==
> 	parent (oom_adj = 0)
> 	  -> child (oom_adj=-15, very big memory user)
> ==
> the child may be killd at first, anyway. Today, I have to explain customers
> "When you set oom_adj to a process, please set the same value to all ancestors.
>  Otherwise, your oom_adj value will be ignored."
> 

This is a different change than the forkbomb detection which is rewritten 
in the fourth patch in the series.  We must rely on badness() being able 
to tell us how beneficial it will be to kill a task, so iterating through 
the child list and picking the most beneficial is the goal of this patch.  
It reduces the chances of needlessly killing a child using very little 
memory for no benefit just because it was forked first.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxxx  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]