Re: [PATCH] oom killer: break from infinite loop

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Mel Gorman
Date: Monday, April 5, 2010 - 3:47 am

On Sun, Apr 04, 2010 at 04:26:38PM -0700, David Rientjes wrote:

Sorry, I typod.

GFP_NOFAIL is rare but this is basically saying that all threads with a
fatal signal and using NOFAIL can ignore watermarks.

I don't think there is any caller in an exit path will be using GFP_NOFAIL
as it's most common user is file-system related but it still feels unnecssary
to check this case on every call to the slow path.


Fair point. How about just checking before __alloc_pages_may_oom() is
called then? This check will be then in a slower path.
I recognise this means that it is also only checked when direct reclaim
is failing but there is at least one good reason for it.

With this change, processes that have been sigkilled may now fail allocations
that they might not have failed before. It would be difficult to trigger
but here is one possible problem with this change;

1. System was borderline with some trashing
2. User starts program that gobbles up lots of memory on page faults,
   trashing the system further and annoying the user
3. User sends SIGKILL
4. Process was faulting and returns NULL because fatal signal was pending
5. Fault path returns VM_FAULT_OOM
6. Arch-specific path (on x86 anyway) calls out_of_memory again because
   VM_FAULT_OOM was returned.

Ho hum, I haven't thought about this before but it's also possible that
a process that is fauling that gets oom-killed will trigger a cascading
OOM kill. If the system was heavily trashing, it might mean a large
number of processes get killed.

-- 
Mel Gorman
Part-time Phd Student                          Linux Technology Center
University of Limerick                         IBM Dublin Software Lab
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH] oom killer: break from infinite loop, Anfei Zhou, (Wed Mar 24, 9:25 am)
Re: [PATCH] oom killer: break from infinite loop, KOSAKI Motohiro, (Wed Mar 24, 7:51 pm)
Re: [PATCH] oom killer: break from infinite loop, Andrew Morton, (Fri Mar 26, 3:08 pm)
Re: [PATCH] oom killer: break from infinite loop, Oleg Nesterov, (Fri Mar 26, 3:33 pm)
Re: [PATCH] oom killer: break from infinite loop, David Rientjes, (Sat Mar 27, 7:46 pm)
Re: [PATCH] oom killer: break from infinite loop, Oleg Nesterov, (Sun Mar 28, 9:28 am)
Re: [PATCH] oom killer: break from infinite loop, David Rientjes, (Sun Mar 28, 2:21 pm)
Re: [PATCH] oom killer: break from infinite loop, Oleg Nesterov, (Mon Mar 29, 4:21 am)
Re: [PATCH] oom killer: break from infinite loop, Oleg Nesterov, (Mon Mar 29, 4:46 am)
Re: [PATCH] oom killer: break from infinite loop, David Rientjes, (Mon Mar 29, 1:01 pm)
Re: [PATCH] oom killer: break from infinite loop, David Rientjes, (Tue Mar 30, 1:29 pm)
Re: [PATCH] oom killer: break from infinite loop, KAMEZAWA Hiroyuki, (Tue Mar 30, 5:57 pm)
Re: [PATCH] oom killer: break from infinite loop, David Rientjes, (Tue Mar 30, 11:07 pm)
Re: [PATCH] oom killer: break from infinite loop, KAMEZAWA Hiroyuki, (Tue Mar 30, 11:13 pm)
Re: [PATCH] oom killer: break from infinite loop, Balbir Singh, (Tue Mar 30, 11:30 pm)
Re: [PATCH] oom killer: break from infinite loop, KAMEZAWA Hiroyuki, (Tue Mar 30, 11:31 pm)
Re: [PATCH] oom killer: break from infinite loop, David Rientjes, (Tue Mar 30, 11:32 pm)
Re: [PATCH] oom killer: break from infinite loop, David Rientjes, (Wed Mar 31, 12:04 am)
Re: [PATCH] oom killer: break from infinite loop, Mel Gorman, (Fri Apr 2, 3:17 am)
[PATCH -mm 0/4] oom: linux has threads, Oleg Nesterov, (Fri Apr 2, 11:30 am)
Re: [PATCH] oom killer: break from infinite loop, David Rientjes, (Sun Apr 4, 4:26 pm)
Re: [PATCH] oom killer: break from infinite loop, Mel Gorman, (Mon Apr 5, 3:47 am)
Re: [PATCH] oom killer: break from infinite loop, David Rientjes, (Tue Apr 6, 3:40 pm)