Re: [patch -mm 2/5 v2] oom: give current access to memory reserves if it has been killed

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

 



On Thu, 1 Apr 2010 12:44:31 -0700 (PDT)
David Rientjes <rientjes@xxxxxxxxxx> wrote:

> It's possible to livelock the page allocator if a thread has mm->mmap_sem and 
> fails to make forward progress because the oom killer selects another thread 
> sharing the same ->mm to kill that cannot exit until the semaphore is dropped.
> 
> The oom killer will not kill multiple tasks at the same time; each oom killed 
> task must exit before another task may be killed.  Thus, if one thread is 
> holding mm->mmap_sem and cannot allocate memory, all threads sharing the same 
> ->mm are blocked from exiting as well.  In the oom kill case, that means the
> thread holding mm->mmap_sem will never free additional memory since it cannot
> get access to memory reserves and the thread that depends on it with access to
> memory reserves cannot exit because it cannot acquire the semaphore.  Thus,
> the page allocators livelocks.
> 
> When the oom killer is called and current happens to have a pending SIGKILL,
> this patch automatically gives it access to memory reserves and returns.  Upon
> returning to the page allocator, its allocation will hopefully succeed so it
> can quickly exit and free its memory.  If not, the page allocator will fail
> the allocation if it is not __GFP_NOFAIL.
> 
> Signed-off-by: David Rientjes <rientjes@xxxxxxxxxx>

Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx>


--
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]