From: Mel Gorman <mel@csn.ul.ie>
To: Will Newton <will.newton@gmail.com>
Cc: linux-mm@kvack.org
Subject: Re: Commit f50de2d38 seems to be breaking my oom killer
Date: Thu, 7 Jan 2010 13:58:31 +0000 [thread overview]
Message-ID: <20100107135831.GA29564@csn.ul.ie> (raw)
In-Reply-To: <87a5b0801001070434m7f6b0fd6vfcdf49ab73a06cbb@mail.gmail.com>
On Thu, Jan 07, 2010 at 12:34:54PM +0000, Will Newton wrote:
> Hi,
>
> I'm having some problems on a small embedded box with 24Mb of RAM and
> no swap. If a process tries to use large amounts of memory and gets
> OOM killed, with 2.6.32 it's fine, but with 2.6.33-rc2 kswapd gets
> stuck and the system locks up.
By stuck, do you mean it consumes 100% CPU and never goes to sleep?
> The problem appears to have been
> introduced with f50de2d38. If I change sleeping_prematurely to skip
> the for_each_populated_zone test then OOM killing operates as
> expected. I'm guessing it's caused by the new code not allowing kswapd
> to schedule when it is required to let the killed task exit. Does that
> sound plausible?
>
It's conceivable. The expectation was that the cond_resched() in
balance_pgdat() should have been called at
if (!all_zones_ok) {
cond_resched();
But it would appear that if all zones are unreclaimable, all_zones_ok == 1.
It could be looping there indefinitly never calling schedule because it
never reaches the points where cond_resched is called.
> I'll try and investigate further into what's going on.
>
Can you try the following?
==== CUT HERE ====
vmscan: kswapd should notice that all zones are not ok if they are unreclaimble
In the event all zones are unreclaimble, it is possible for kswapd to
never go to sleep because "all zones are ok even though watermarks are
not reached". It gets into a situation where cond_reched() is not
called.
This patch notes that if all zones are unreclaimable then the zones are
not ok and cond_resched() should be called.
Signed-off-by: Mel Gorman <mel@csn.ul.ie>
---
mm/vmscan.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 2ad8603..d3c0848 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2022,8 +2022,10 @@ loop_again:
break;
}
}
- if (i < 0)
+ if (i < 0) {
+ all_zones_ok = 0;
goto out;
+ }
for (i = 0; i <= end_zone; i++) {
struct zone *zone = pgdat->node_zones + i;
--
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:[~2010-01-07 13:58 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-07 12:34 Commit f50de2d38 seems to be breaking my oom killer Will Newton
2010-01-07 13:58 ` Mel Gorman [this message]
2010-01-07 14:15 ` Will Newton
2010-01-07 14:49 ` Mel Gorman
2010-01-08 1:58 ` Minchan Kim
2010-01-08 2:56 ` KOSAKI Motohiro
2010-01-08 4:08 ` KOSAKI Motohiro
2010-01-08 4:53 ` Minchan Kim
2010-01-08 5:10 ` Rik van Riel
2010-01-08 9:25 ` Mel Gorman
2010-01-08 9:32 ` KOSAKI Motohiro
2010-01-08 11:18 ` Will Newton
2010-01-10 14:37 ` Wu Fengguang
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=20100107135831.GA29564@csn.ul.ie \
--to=mel@csn.ul.ie \
--cc=linux-mm@kvack.org \
--cc=will.newton@gmail.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;
as well as URLs for NNTP newsgroup(s).