diff options
author | Christoph Lameter <clameter@sgi.com> | 2006-09-26 02:31:49 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-09-26 11:48:51 -0400 |
commit | 39bbcb8f88154c4ac9853baf3f1134af4c987517 (patch) | |
tree | 79f9867ead896c28d138545089e6d85db426c09f /mm | |
parent | 006d22d9bbb7e66279ba5cc4556b54eeaf8fd556 (diff) |
[PATCH] mm: do not check unpopulated zones for draining and counter updates
If a zone is unpopulated then we do not need to check for pages that are to
be drained and also not for vm counters that may need to be updated.
Signed-off-by: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/page_alloc.c | 5 | ||||
-rw-r--r-- | mm/vmstat.c | 3 |
2 files changed, 7 insertions, 1 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index cc6483047567..f7ea020c23ea 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -633,7 +633,7 @@ static int rmqueue_bulk(struct zone *zone, unsigned int order, | |||
633 | #ifdef CONFIG_NUMA | 633 | #ifdef CONFIG_NUMA |
634 | /* | 634 | /* |
635 | * Called from the slab reaper to drain pagesets on a particular node that | 635 | * Called from the slab reaper to drain pagesets on a particular node that |
636 | * belong to the currently executing processor. | 636 | * belongs to the currently executing processor. |
637 | * Note that this function must be called with the thread pinned to | 637 | * Note that this function must be called with the thread pinned to |
638 | * a single processor. | 638 | * a single processor. |
639 | */ | 639 | */ |
@@ -647,6 +647,9 @@ void drain_node_pages(int nodeid) | |||
647 | struct zone *zone = NODE_DATA(nodeid)->node_zones + z; | 647 | struct zone *zone = NODE_DATA(nodeid)->node_zones + z; |
648 | struct per_cpu_pageset *pset; | 648 | struct per_cpu_pageset *pset; |
649 | 649 | ||
650 | if (!populated_zone(zone)) | ||
651 | continue; | ||
652 | |||
650 | pset = zone_pcp(zone, smp_processor_id()); | 653 | pset = zone_pcp(zone, smp_processor_id()); |
651 | for (i = 0; i < ARRAY_SIZE(pset->pcp); i++) { | 654 | for (i = 0; i < ARRAY_SIZE(pset->pcp); i++) { |
652 | struct per_cpu_pages *pcp; | 655 | struct per_cpu_pages *pcp; |
diff --git a/mm/vmstat.c b/mm/vmstat.c index 04a9093f649e..968c0072e19a 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c | |||
@@ -321,6 +321,9 @@ void refresh_cpu_vm_stats(int cpu) | |||
321 | for_each_zone(zone) { | 321 | for_each_zone(zone) { |
322 | struct per_cpu_pageset *pcp; | 322 | struct per_cpu_pageset *pcp; |
323 | 323 | ||
324 | if (!populated_zone(zone)) | ||
325 | continue; | ||
326 | |||
324 | pcp = zone_pcp(zone, cpu); | 327 | pcp = zone_pcp(zone, cpu); |
325 | 328 | ||
326 | for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++) | 329 | for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++) |