diff options
author | Christoph Lameter <clameter@sgi.com> | 2006-06-30 01:55:44 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-30 11:25:36 -0700 |
commit | ca889e6c45e0b112cb2ca9d35afc66297519b5d5 (patch) | |
tree | 0a5efdec2a61540204d34bcbf56dc691d8f9c391 /include/linux/vmstat.h | |
parent | bab1846a0582f627f5ec22aa2dc5f4f3e82e8176 (diff) | |
download | linux-ca889e6c45e0b112cb2ca9d35afc66297519b5d5.tar.gz linux-ca889e6c45e0b112cb2ca9d35afc66297519b5d5.tar.bz2 linux-ca889e6c45e0b112cb2ca9d35afc66297519b5d5.zip |
[PATCH] Use Zoned VM Counters for NUMA statistics
The numa statistics are really event counters. But they are per node and
so we have had special treatment for these counters through additional
fields on the pcp structure. We can now use the per zone nature of the
zoned VM counters to realize these.
This will shrink the size of the pcp structure on NUMA systems. We will
have some room to add additional per zone counters that will all still fit
in the same cacheline.
Bits Prior pcp size Size after patch We can add
------------------------------------------------------------------
64 128 bytes (16 words) 80 bytes (10 words) 48
32 76 bytes (19 words) 56 bytes (14 words) 8 (64 byte cacheline)
72 (128 byte)
Remove the special statistics for numa and replace them with zoned vm
counters. This has the side effect that global sums of these events now
show up in /proc/vmstat.
Also take the opportunity to move the zone_statistics() function from
page_alloc.c into vmstat.c.
Discussions:
V2 http://marc.theaimsgroup.com/?t=115048227000002&r=1&w=2
Signed-off-by: Christoph Lameter <clameter@sgi.com>
Acked-by: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux/vmstat.h')
-rw-r--r-- | include/linux/vmstat.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h index 5fad1613e7d6..16173b63ee67 100644 --- a/include/linux/vmstat.h +++ b/include/linux/vmstat.h @@ -173,9 +173,15 @@ static inline unsigned long node_page_state(int node, #endif zone_page_state(&zones[ZONE_DMA], item); } + +extern void zone_statistics(struct zonelist *, struct zone *); + #else + #define node_page_state(node, item) global_page_state(item) -#endif +#define zone_statistics(_zl,_z) do { } while (0) + +#endif /* CONFIG_NUMA */ #define __add_zone_page_state(__z, __i, __d) \ __mod_zone_page_state(__z, __i, __d) @@ -190,6 +196,8 @@ static inline void zap_zone_vm_stats(struct zone *zone) memset(zone->vm_stat, 0, sizeof(zone->vm_stat)); } +extern void inc_zone_state(struct zone *, enum zone_stat_item); + #ifdef CONFIG_SMP void __mod_zone_page_state(struct zone *, enum zone_stat_item item, int); void __inc_zone_page_state(struct page *, enum zone_stat_item); |