X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=mm%2Fquicklist.c;h=6633965bb27bcb609be4578dcb8bcd30cd3e39c8;hb=7be6d991bca63bbcdc5bc3b09789f367a3486537;hp=3f703f7cb398056547af212577909a3d6c46b116;hpb=96990a4ae979df9e235d01097d6175759331e88c;p=safe%2Fjmp%2Flinux-2.6 diff --git a/mm/quicklist.c b/mm/quicklist.c index 3f703f7..6633965 100644 --- a/mm/quicklist.c +++ b/mm/quicklist.c @@ -19,14 +19,16 @@ #include #include -DEFINE_PER_CPU(struct quicklist, quicklist)[CONFIG_NR_QUICK]; +DEFINE_PER_CPU(struct quicklist [CONFIG_NR_QUICK], quicklist); #define FRACTION_OF_NODE_MEM 16 static unsigned long max_pages(unsigned long min_pages) { unsigned long node_free_pages, max; - struct zone *zones = NODE_DATA(numa_node_id())->node_zones; + int node = numa_node_id(); + struct zone *zones = NODE_DATA(node)->node_zones; + int num_cpus_on_node; node_free_pages = #ifdef CONFIG_ZONE_DMA @@ -38,6 +40,10 @@ static unsigned long max_pages(unsigned long min_pages) zone_page_state(&zones[ZONE_NORMAL], NR_FREE_PAGES); max = node_free_pages / FRACTION_OF_NODE_MEM; + + num_cpus_on_node = cpumask_weight(cpumask_of_node(node)); + max /= num_cpus_on_node; + return max(max, min_pages); }