[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1351291667.6504.13.camel@MikesLinux.fc.hp.com>
Date: Fri, 26 Oct 2012 16:47:47 -0600
From: Mike Yoknis <mike.yoknis@...com>
To: Mel Gorman <mgorman@...e.de>
Cc: mingo@...hat.com, akpm@...ux-foundation.org,
linux-arch@...r.kernel.org, mmarek@...e.cz, tglx@...utronix.de,
hpa@...or.com, arnd@...db.de, sam@...nborg.org, minchan@...nel.org,
kamezawa.hiroyu@...fujitsu.com, mhocko@...e.cz,
linux-kbuild@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-mm@...ck.org
Subject: [PATCH v2] mm: memmap_init_zone() performance improvement
memmap_init_zone() loops through every Page Frame Number (pfn),
including pfn values that are within the gaps between existing
memory sections. The unneeded looping will become a boot
performance issue when machines configure larger memory ranges
that will contain larger and more numerous gaps.
The code will skip across invalid pfn values to reduce the
number of loops executed.
Signed-off-by: Mike Yoknis <mike.yoknis@...com>
---
mm/page_alloc.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 45c916b..9f9c1a6 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -3857,8 +3857,11 @@ void __meminit memmap_init_zone(unsigned long
size, int nid, unsigned long zone,
* exist on hotplugged memory.
*/
if (context == MEMMAP_EARLY) {
- if (!early_pfn_valid(pfn))
+ if (!early_pfn_valid(pfn)) {
+ pfn = ALIGN(pfn + MAX_ORDER_NR_PAGES,
+ MAX_ORDER_NR_PAGES) - 1;
continue;
+ }
if (!early_pfn_in_nid(pfn, nid))
continue;
}
--
1.7.11.3
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists