Thread (13 messages) 13 messages, 4 authors, 2016-03-24

Re: [PATCH 4/6] mm/vmstat: add zone range overlapping check

From: Joonsoo Kim <hidden>
Date: 2016-03-24 00:06:57
Also in: lkml

On Wed, Mar 23, 2016 at 03:47:46PM +0100, Vlastimil Babka wrote:
On 03/14/2016 08:31 AM, js1304@gmail.com wrote:
quoted
From: Joonsoo Kim <redacted>

There is a system that node's pfn are overlapped like as following.

-----pfn-------->
N0 N1 N2 N0 N1 N2

Therefore, we need to care this overlapping when iterating pfn range.

There are two places in vmstat.c that iterates pfn range and
they don't consider this overlapping. Add it.

Without this patch, above system could over count pageblock number
on a zone.

Signed-off-by: Joonsoo Kim <redacted>
---
 mm/vmstat.c | 7 +++++++
 1 file changed, 7 insertions(+)
diff --git a/mm/vmstat.c b/mm/vmstat.c
index 5e43004..0a726e3 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -1010,6 +1010,9 @@ static void pagetypeinfo_showblockcount_print(struct seq_file *m,
 		if (!memmap_valid_within(pfn, page, zone))
 			continue;
The above already does this for each page within the block, but it's
guarded by CONFIG_ARCH_HAS_HOLES_MEMORYMODEL. I guess that's not the
case of your system, right?

I guess your added check should go above this, though. Also what
about employing pageblock_pfn_to_page() here and in all other
applicable places, so it's unified and optimized by
zone->contiguous?
Comment on memmap_valid_within() in mmzone.h says that page_zone()
linkages could be broken in that system even if pfn_valid() returns
true. So, we cannot do zone check before it.

In fact, I wonder how that system works fine under the situation where
there are many pfn interators which doesn't check
memmap_valid_within(). I guess there may be enough constraint.
Anyway, I think that it is another issue and would be revisited later.

Thanks.

--
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>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help