From: Andrea Arcangeli <aarcange@redhat.com>
To: Mel Gorman <mel@csn.ul.ie>
Cc: Shaohua Li <shaohua.li@intel.com>,
Andrew Morton <akpm@linux-foundation.org>,
linux-mm <linux-mm@kvack.org>,
"Chen, Tim C" <tim.c.chen@intel.com>
Subject: Re: too big min_free_kbytes
Date: Thu, 27 Jan 2011 16:27:55 +0100 [thread overview]
Message-ID: <20110127152755.GB30919@random.random> (raw)
In-Reply-To: <20110127134057.GA32039@csn.ul.ie>
On Thu, Jan 27, 2011 at 01:40:58PM +0000, Mel Gorman wrote:
> On Wed, Jan 26, 2011 at 05:42:37PM +0000, Mel Gorman wrote:
> > On Wed, Jan 26, 2011 at 04:36:55PM +0000, Mel Gorman wrote:
> > > > But the wmarks don't
> > > > seem the real offender, maybe it's something related to the tiny pci32
> > > > zone that materialize on 4g systems that relocate some little memory
> > > > over 4g to make space for the pci32 mmio. I didn't yet finish to debug
> > > > it.
> > > >
> > >
> > > This has to be it. What I think is happening is that we're in balance_pgdat(),
> > > the "Normal" zone is never hitting the watermark and we constantly call
> > > "goto loop_again" trying to "rebalance" all zones.
> > >
> >
> > Confirmed.
> > <SNIP>
>
> How about the following? Functionally it would work but I am concerned
> that the logic in balance_pgdat() and kswapd() is getting out of hand
> having being adjusted to work with a number of corner cases already. In
> the next cycle, it could do with a "do-over" attempt to make it easier
> to follow.
That number 8 is the problem, I don't think anybody was ever supposed
to free 8*highwmark pages. kswapd must work in the hysteresis range
low->high area and then sleep wait low to hit again before it gets
wakenup. Not sure how that number 8 ever come up... but to be it looks
like the real offender and I wouldn't work around it.
totally untested... I will test....
====
Subject: vmscan: kswapd must not free more than high_wmark pages
From: Andrea Arcangeli <aarcange@redhat.com>
When the min_free_kbytes is set with `hugeadm
--set-recommended-min_free_kbytes" or with THP enabled (which runs the
equivalent of "hugeadm --set-recommended-min_free_kbytes" to activate
anti-frag at full effectiveness automatically at boot) the high wmark
of some zone is as high as ~88M. 88M free on a 4G system isn't
horrible, but 88M*8 = 704M free on a 4G system is definitely
unbearable. This only tends to be visible on 4G systems with tiny
over-4g zone where kswapd insists to reach the high wmark on the
over-4g zone but doing so it shrunk up to 704M from the normal zone by
mistake.
Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
---
diff --git a/mm/vmscan.c b/mm/vmscan.c
index f5d90de..9e3c78e 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2407,7 +2407,7 @@ loop_again:
* zone has way too many pages free already.
*/
if (!zone_watermark_ok_safe(zone, order,
- 8*high_wmark_pages(zone), end_zone, 0))
+ high_wmark_pages(zone), end_zone, 0))
shrink_zone(priority, zone, &sc);
reclaim_state->reclaimed_slab = 0;
nr_slab = shrink_slab(sc.nr_scanned, GFP_KERNEL,
--
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/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2011-01-27 15:28 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-24 3:56 too big min_free_kbytes Shaohua Li
2011-01-24 15:00 ` Andrea Arcangeli
2011-01-25 14:35 ` Mel Gorman
2011-01-26 14:17 ` Mel Gorman
2011-01-26 15:23 ` Mel Gorman
2011-01-26 15:42 ` Andrea Arcangeli
2011-01-26 16:36 ` Mel Gorman
2011-01-26 17:42 ` Mel Gorman
2011-01-27 13:40 ` Mel Gorman
2011-01-27 15:27 ` Andrea Arcangeli [this message]
2011-01-27 16:03 ` Mel Gorman
2011-01-27 18:52 ` Andrea Arcangeli
2011-01-27 20:33 ` Rik van Riel
2011-01-27 21:31 ` Mel Gorman
2011-01-27 23:18 ` Rik van Riel
2011-01-28 10:35 ` Mel Gorman
2011-01-28 16:28 ` Andrea Arcangeli
2011-01-28 16:46 ` Mel Gorman
2011-01-28 17:16 ` Rik van Riel
2011-01-28 17:46 ` Andrea Arcangeli
2011-01-28 18:03 ` Rik van Riel
2011-01-28 18:24 ` Andrea Arcangeli
2011-01-28 19:34 ` Rik van Riel
2011-01-28 19:45 ` Andrea Arcangeli
2011-01-28 20:55 ` Rik van Riel
2011-01-29 19:45 ` Andrea Arcangeli
2011-01-28 17:34 ` Andrea Arcangeli
2011-01-28 17:10 ` Rik van Riel
2011-02-03 2:58 ` Andrea Arcangeli
2011-02-03 13:15 ` Mel Gorman
2011-02-03 18:59 ` Andrea Arcangeli
2011-02-03 14:36 ` Rik van Riel
2011-02-03 19:11 ` Andrea Arcangeli
2011-02-12 1:28 ` Simon Kirby
2011-02-14 2:25 ` Shaohua Li
2011-02-22 14:25 ` Mel Gorman
2011-02-22 14:42 ` Andrea Arcangeli
2011-02-22 14:50 ` Mel Gorman
2011-02-22 14:54 ` Andrea Arcangeli
2011-02-22 16:04 ` Mel Gorman
2011-02-22 16:40 ` Rik van Riel
2011-02-23 5:29 ` Shaohua Li
2011-02-23 14:45 ` Andrea Arcangeli
2011-02-24 8:08 ` Shaohua Li
2011-02-24 9:52 ` Mel Gorman
2011-02-24 9:57 ` Mel Gorman
2011-02-24 14:27 ` Andrea Arcangeli
2011-02-24 14:04 ` Andrea Arcangeli
2011-02-25 0:51 ` Shaohua Li
2011-02-25 12:13 ` Mel Gorman
2011-02-12 9:48 ` alex shi
2011-02-22 14:24 ` Mel Gorman
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=20110127152755.GB30919@random.random \
--to=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=linux-mm@kvack.org \
--cc=mel@csn.ul.ie \
--cc=shaohua.li@intel.com \
--cc=tim.c.chen@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.