Re: [PATCH] mm: fix negative nr_isolated counts

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 02/11/2015 08:06 AM, Hugh Dickins wrote:
The vmstat interfaces are good at hiding negative counts (at least
when CONFIG_SMP); but if you peer behind the curtain, you find that
nr_isolated_anon and nr_isolated_file soon go negative, and grow ever
more negative: so they can absorb larger and larger numbers of isolated
pages, yet still appear to be zero.

I'm happy to avoid a congestion_wait() when too_many_isolated() myself;
but I guess it's there for a good reason, in which case we ought to get
too_many_isolated() working again.

The imbalance comes from isolate_migratepages()'s ISOLATE_ABORT case:
putback_movable_pages() decrements the NR_ISOLATED counts, but we forgot
to call acct_isolated() to increment them.

Fixes: edc2ca612496 ("mm, compaction: move pageblock checks up from isolate_migratepages_range()")

Ccing Joonsoo for completeness, as it seems he contributed to this part [1] (to fix another bug of mine, not trying to dismiss responsibility)

But yeah it looks correct. Thanks for finding and fixing!

Acked-by: Vlastimil Babka <vbabka@xxxxxxx>

[1] https://lkml.org/lkml/2014/9/29/60

Signed-off-by: Hugh Dickins <hughd@xxxxxxxxxx>
Cc: stable@xxxxxxxxxxxxxxx # v3.18+
---

  mm/compaction.c |    4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)

--- v3.19/mm/compaction.c	2015-02-08 18:54:22.000000000 -0800
+++ linux/mm/compaction.c	2015-02-10 22:25:04.613907871 -0800
@@ -1015,8 +1015,10 @@ static isolate_migrate_t isolate_migrate
  		low_pfn = isolate_migratepages_block(cc, low_pfn, end_pfn,
  								isolate_mode);

-		if (!low_pfn || cc->contended)
+		if (!low_pfn || cc->contended) {
+			acct_isolated(zone, cc);
  			return ISOLATE_ABORT;
+		}

  		/*
  		 * Either we isolated something and proceed with migration. Or


--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]