* [PATCH] Avoid excessive sorting of early_node_map[]
@ 2006-12-15 16:48 Mel Gorman
0 siblings, 0 replies; only message in thread
From: Mel Gorman @ 2006-12-15 16:48 UTC (permalink / raw)
To: linux-mm; +Cc: linux-kernel
find_min_pfn_for_node() and find_min_pfn_with_active_regions() sort
early_node_map[] on every call. This is an excessive amount of sorting and
that can be avoided. This patch always searches the whole early_node_map[]
in find_min_pfn_for_node() instead of returning the first value found. The
map is then only sorted once when required. Successfully boot tested on a
number of machines.
Signed-off-by: Mel Gorman <mel@csn.ul.ie>
diff -rup -X /usr/src/patchset-0.6/bin//dontdiff linux-2.6.19-mm1-clean/mm/page_alloc.c linux-2.6.19-mm1-excessivesort/mm/page_alloc.c
--- linux-2.6.19-mm1-clean/mm/page_alloc.c 2006-11-29 21:57:37.000000000 +0000
+++ linux-2.6.19-mm1-excessivesort/mm/page_alloc.c 2006-12-14 15:59:40.000000000 +0000
@@ -2607,20 +2607,23 @@ static void __init sort_node_map(void)
cmp_node_active_region, NULL);
}
-/* Find the lowest pfn for a node. This depends on a sorted early_node_map */
+/* Find the lowest pfn for a node */
unsigned long __init find_min_pfn_for_node(unsigned long nid)
{
int i;
-
- /* Regions in the early_node_map can be in any order */
- sort_node_map();
+ unsigned long min_pfn = -1UL;
/* Assuming a sorted map, the first range found has the starting pfn */
for_each_active_range_index_in_nid(i, nid)
- return early_node_map[i].start_pfn;
+ min_pfn = min(min_pfn, early_node_map[i].start_pfn);
- printk(KERN_WARNING "Could not find start_pfn for node %lu\n", nid);
- return 0;
+ if (min_pfn == -1UL) {
+ printk(KERN_WARNING
+ "Could not find start_pfn for node %lu\n", nid);
+ return 0;
+ }
+
+ return min_pfn;
}
/**
@@ -2669,6 +2672,9 @@ void __init free_area_init_nodes(unsigne
unsigned long nid;
enum zone_type i;
+ /* Sort early_node_map as initialisation assumes it is sorted */
+ sort_node_map();
+
/* Record where the zone boundaries are */
memset(arch_zone_lowest_possible_pfn, 0,
sizeof(arch_zone_lowest_possible_pfn));
--
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>
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2006-12-15 16:48 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-12-15 16:48 [PATCH] Avoid excessive sorting of early_node_map[] Mel Gorman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox