From: David Rientjes <rientjes@google.com>
To: Christoph Lameter <clameter@sgi.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Andrea Arcangeli <andrea@suse.de>, Rik van Riel <riel@redhat.com>,
linux-mm@kvack.org
Subject: Re: [patch 4/8] oom: serialize out of memory calls
Date: Wed, 19 Sep 2007 13:30:08 -0700 (PDT) [thread overview]
Message-ID: <alpine.DEB.0.9999.0709191325160.26978@chino.kir.corp.google.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0709191159100.2241@schroedinger.engr.sgi.com>
On Wed, 19 Sep 2007, Christoph Lameter wrote:
> > Before invoking the OOM killer, a final allocation attempt with a very
> > high watermark is attempted. Serialization needs to occur at this point
> > or it may be possible that the allocation could succeed after acquiring
> > the lock. If the lock is contended, the task is put to sleep and the
> > allocation attempt is retried when rescheduled.
>
> The problem with a succeeding allocation is that it takes memory
> away from the OOM killer?
>
If the succeeding allocation works with ALLOC_WMARK_HIGH, and
get_page_from_freelist() returns non-NULL, then clear_zonelist_oom() is
called and the OOM killer is never invoked. The same happens if the
allocation order exceeds PAGE_ALLOC_COSTLY_ORDER.
So, as the comment still says in __alloc_pages(), the succeeding
allocation attempt is only to catch parallel OOM killings. Not
necessarily that we can serialize based on that alone, but it catches
tasks that were already OOM killed, marked TIF_MEMDIE so they can quickly
exit, and gone through exit_mm(). This only happens when the earlier
allocation attempts couldn't catch it because they were ~ALLOC_WMARK_HIGH.
We can't serialize after this final allocation attempt with the new
try_set_zone_oom() because it is entirely possible that we could enter the
OOM killer, wait for the read-lock on tasklist_lock, the OOM condition
could be alleviated, and then we still kill a task unnecessarily.
David
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2007-09-19 20:30 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-09-19 18:24 [patch 0/8] oom killer updates David Rientjes
2007-09-19 18:24 ` [patch 1/8] oom: move prototypes to appropriate header file David Rientjes
2007-09-19 18:24 ` [patch 2/8] oom: move constraints to enum David Rientjes
2007-09-19 18:24 ` [patch 3/8] oom: save zonelist pointer for oom killer calls David Rientjes
2007-09-19 18:24 ` [patch 4/8] oom: serialize out of memory calls David Rientjes
2007-09-19 18:24 ` [patch 5/8] oom: add per-cpuset file oom_kill_asking_task David Rientjes
2007-09-19 18:24 ` [patch 6/8] oom: suppress extraneous stack and memory dump David Rientjes
2007-09-19 18:24 ` [patch 7/8] oom: only kill tasks that share zones with zonelist David Rientjes
2007-09-19 18:24 ` [patch 8/8] oom: do not check cpuset in badness scoring David Rientjes
2007-09-19 19:06 ` Christoph Lameter
2007-09-19 18:57 ` [patch 7/8] oom: only kill tasks that share zones with zonelist Christoph Lameter
2007-09-20 5:50 ` David Rientjes
2007-09-20 17:58 ` Christoph Lameter
2007-09-20 18:37 ` David Rientjes
2007-09-20 18:44 ` Christoph Lameter
2007-09-19 19:00 ` [patch 4/8] oom: serialize out of memory calls Christoph Lameter
2007-09-19 20:30 ` David Rientjes [this message]
2007-09-19 19:05 ` [patch 3/8] oom: save zonelist pointer for oom killer calls Christoph Lameter
2007-09-19 20:37 ` David Rientjes
2007-09-19 20:54 ` Christoph Lameter
2007-09-19 21:20 ` David Rientjes
2007-09-19 23:51 ` Tim Pepper
2007-09-20 5:43 ` David Rientjes
2007-09-20 17:56 ` Christoph Lameter
2007-09-19 19:01 ` [patch 1/8] oom: move prototypes to appropriate header file Christoph Lameter
2007-09-19 19:49 ` [patch 0/8] oom killer updates Paul Jackson
2007-09-19 20:24 ` David Rientjes
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.DEB.0.9999.0709191325160.26978@chino.kir.corp.google.com \
--to=rientjes@google.com \
--cc=akpm@linux-foundation.org \
--cc=andrea@suse.de \
--cc=clameter@sgi.com \
--cc=linux-mm@kvack.org \
--cc=riel@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox