[<prev] [next>] [day] [month] [year] [list]
Message-ID: <54E3A59C.7090202@intel.com>
Date: Tue, 17 Feb 2015 12:33:32 -0800
From: Dave Hansen <dave.hansen@...el.com>
To: Linux-MM <linux-mm@...ck.org>, LKML <linux-kernel@...r.kernel.org>
Subject: [RFC] Bogus zone->watermark[WMARK_MIN] for big systems
I've got a 2TB 8-node system (256GB per NUMA node) that's behaving a bit
strangely (OOMs with GB of free memory).
Its watermarks look wonky, with a min watermark of 0 pages for DMA and
only 11 pages for DMA32:
> Node 0 DMA free:7428kB min:0kB low:0kB high:0kB ...
> Node 0 DMA32 free:1024084kB min:44kB low:52kB high:64kB ... present:1941936kB managed:1862456kB
> Node 0 Normal free:4808kB min:6348kB low:7932kB high:9520kB ... present:266338304kB managed:262138972kB
This looks to be caused by us trying to evenly distribute the
min_free_kbytes value across the zones, but with such a huge size
imbalance (16MB zone vs 2TB system), 1/131072th of the default
min_free_kbytes ends up <1 page.
Should we be setting up some absolute floors on the watermarks, like the
attached patch?
BTW, it seems to be this code:
> static void __setup_per_zone_wmarks(void)
> {
> unsigned long pages_min = min_free_kbytes >> (PAGE_SHIFT - 10);
...
> for_each_zone(zone) {
> u64 tmp;
>
> spin_lock_irqsave(&zone->lock, flags);
> tmp = (u64)pages_min * zone->managed_pages;
> do_div(tmp, lowmem_pages);
View attachment "mm-absolute-floors-for-watermarks.patch" of type "text/x-patch" (1171 bytes)
Powered by blists - more mailing lists