mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-04 13:21:45 +00:00
[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>
This commit is contained in:
parent
bab1846a05
commit
ca889e6c45
6 changed files with 73 additions and 90 deletions
|
@ -57,6 +57,14 @@ enum zone_stat_item {
|
|||
NR_WRITEBACK,
|
||||
NR_UNSTABLE_NFS, /* NFS unstable pages */
|
||||
NR_BOUNCE,
|
||||
#ifdef CONFIG_NUMA
|
||||
NUMA_HIT, /* allocated in intended node */
|
||||
NUMA_MISS, /* allocated in non intended node */
|
||||
NUMA_FOREIGN, /* was intended here, hit elsewhere */
|
||||
NUMA_INTERLEAVE_HIT, /* interleaver preferred this zone */
|
||||
NUMA_LOCAL, /* allocation from local node */
|
||||
NUMA_OTHER, /* allocation from other node */
|
||||
#endif
|
||||
NR_VM_ZONE_STAT_ITEMS };
|
||||
|
||||
struct per_cpu_pages {
|
||||
|
@ -71,15 +79,6 @@ struct per_cpu_pageset {
|
|||
#ifdef CONFIG_SMP
|
||||
s8 vm_stat_diff[NR_VM_ZONE_STAT_ITEMS];
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_NUMA
|
||||
unsigned long numa_hit; /* allocated in intended node */
|
||||
unsigned long numa_miss; /* allocated in non intended node */
|
||||
unsigned long numa_foreign; /* was intended here, hit elsewhere */
|
||||
unsigned long interleave_hit; /* interleaver prefered this zone */
|
||||
unsigned long local_node; /* allocation from local node */
|
||||
unsigned long other_node; /* allocation from other node */
|
||||
#endif
|
||||
} ____cacheline_aligned_in_smp;
|
||||
|
||||
#ifdef CONFIG_NUMA
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue