diff options
author | Christoph Lameter <clameter@sgi.com> | 2006-06-30 04:55:38 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-30 14:25:35 -0400 |
commit | df849a1529c106f7460e51479ca78fe07b07dc8c (patch) | |
tree | f0e52e4720160aa7540a57715c247dce44584cbc | |
parent | 9a865ffa34b6117a5e0b67640a084d8c2e198c93 (diff) |
[PATCH] zoned vm counters: conversion of nr_pagetables to per zone counter
Conversion of nr_page_table_pages to a per zone counter
[akpm@osdl.org: bugfix]
Signed-off-by: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | arch/arm/mm/mm-armv.c | 2 | ||||
-rw-r--r-- | arch/i386/mm/pgtable.c | 3 | ||||
-rw-r--r-- | arch/um/kernel/skas/mmu.c | 2 | ||||
-rw-r--r-- | drivers/base/node.c | 2 | ||||
-rw-r--r-- | fs/proc/proc_misc.c | 4 | ||||
-rw-r--r-- | include/linux/mmzone.h | 1 | ||||
-rw-r--r-- | include/linux/vmstat.h | 3 | ||||
-rw-r--r-- | mm/memory.c | 4 | ||||
-rw-r--r-- | mm/page_alloc.c | 2 | ||||
-rw-r--r-- | mm/vmstat.c | 2 |
10 files changed, 14 insertions, 11 deletions
diff --git a/arch/arm/mm/mm-armv.c b/arch/arm/mm/mm-armv.c index 95273de4f772..931be1798122 100644 --- a/arch/arm/mm/mm-armv.c +++ b/arch/arm/mm/mm-armv.c | |||
@@ -227,7 +227,7 @@ void free_pgd_slow(pgd_t *pgd) | |||
227 | 227 | ||
228 | pte = pmd_page(*pmd); | 228 | pte = pmd_page(*pmd); |
229 | pmd_clear(pmd); | 229 | pmd_clear(pmd); |
230 | dec_page_state(nr_page_table_pages); | 230 | dec_zone_page_state(virt_to_page((unsigned long *)pgd), NR_PAGETABLE); |
231 | pte_lock_deinit(pte); | 231 | pte_lock_deinit(pte); |
232 | pte_free(pte); | 232 | pte_free(pte); |
233 | pmd_free(pmd); | 233 | pmd_free(pmd); |
diff --git a/arch/i386/mm/pgtable.c b/arch/i386/mm/pgtable.c index 73ac3599a0ea..0bb1e5c13442 100644 --- a/arch/i386/mm/pgtable.c +++ b/arch/i386/mm/pgtable.c | |||
@@ -63,7 +63,8 @@ void show_mem(void) | |||
63 | printk(KERN_INFO "%lu pages writeback\n", ps.nr_writeback); | 63 | printk(KERN_INFO "%lu pages writeback\n", ps.nr_writeback); |
64 | printk(KERN_INFO "%lu pages mapped\n", global_page_state(NR_FILE_MAPPED)); | 64 | printk(KERN_INFO "%lu pages mapped\n", global_page_state(NR_FILE_MAPPED)); |
65 | printk(KERN_INFO "%lu pages slab\n", global_page_state(NR_SLAB)); | 65 | printk(KERN_INFO "%lu pages slab\n", global_page_state(NR_SLAB)); |
66 | printk(KERN_INFO "%lu pages pagetables\n", ps.nr_page_table_pages); | 66 | printk(KERN_INFO "%lu pages pagetables\n", |
67 | global_page_state(NR_PAGETABLE)); | ||
67 | } | 68 | } |
68 | 69 | ||
69 | /* | 70 | /* |
diff --git a/arch/um/kernel/skas/mmu.c b/arch/um/kernel/skas/mmu.c index c5c9885a8297..624ca238d1fd 100644 --- a/arch/um/kernel/skas/mmu.c +++ b/arch/um/kernel/skas/mmu.c | |||
@@ -152,7 +152,7 @@ void destroy_context_skas(struct mm_struct *mm) | |||
152 | free_page(mmu->id.stack); | 152 | free_page(mmu->id.stack); |
153 | pte_lock_deinit(virt_to_page(mmu->last_page_table)); | 153 | pte_lock_deinit(virt_to_page(mmu->last_page_table)); |
154 | pte_free_kernel((pte_t *) mmu->last_page_table); | 154 | pte_free_kernel((pte_t *) mmu->last_page_table); |
155 | dec_page_state(nr_page_table_pages); | 155 | dec_zone_page_state(virt_to_page(mmu->last_page_table), NR_PAGETABLE); |
156 | #ifdef CONFIG_3_LEVEL_PGTABLES | 156 | #ifdef CONFIG_3_LEVEL_PGTABLES |
157 | pmd_free((pmd_t *) mmu->last_pmd); | 157 | pmd_free((pmd_t *) mmu->last_pmd); |
158 | #endif | 158 | #endif |
diff --git a/drivers/base/node.c b/drivers/base/node.c index db116a8791c8..c22fb67ec50c 100644 --- a/drivers/base/node.c +++ b/drivers/base/node.c | |||
@@ -70,6 +70,7 @@ static ssize_t node_read_meminfo(struct sys_device * dev, char * buf) | |||
70 | "Node %d FilePages: %8lu kB\n" | 70 | "Node %d FilePages: %8lu kB\n" |
71 | "Node %d Mapped: %8lu kB\n" | 71 | "Node %d Mapped: %8lu kB\n" |
72 | "Node %d AnonPages: %8lu kB\n" | 72 | "Node %d AnonPages: %8lu kB\n" |
73 | "Node %d PageTables: %8lu kB\n" | ||
73 | "Node %d Slab: %8lu kB\n", | 74 | "Node %d Slab: %8lu kB\n", |
74 | nid, K(i.totalram), | 75 | nid, K(i.totalram), |
75 | nid, K(i.freeram), | 76 | nid, K(i.freeram), |
@@ -85,6 +86,7 @@ static ssize_t node_read_meminfo(struct sys_device * dev, char * buf) | |||
85 | nid, K(node_page_state(nid, NR_FILE_PAGES)), | 86 | nid, K(node_page_state(nid, NR_FILE_PAGES)), |
86 | nid, K(node_page_state(nid, NR_FILE_MAPPED)), | 87 | nid, K(node_page_state(nid, NR_FILE_MAPPED)), |
87 | nid, K(node_page_state(nid, NR_ANON_PAGES)), | 88 | nid, K(node_page_state(nid, NR_ANON_PAGES)), |
89 | nid, K(node_page_state(nid, NR_PAGETABLE)), | ||
88 | nid, K(node_page_state(nid, NR_SLAB))); | 90 | nid, K(node_page_state(nid, NR_SLAB))); |
89 | n += hugetlb_report_node_meminfo(nid, buf + n); | 91 | n += hugetlb_report_node_meminfo(nid, buf + n); |
90 | return n; | 92 | return n; |
diff --git a/fs/proc/proc_misc.c b/fs/proc/proc_misc.c index 16aaf7187bb3..0eae68f84210 100644 --- a/fs/proc/proc_misc.c +++ b/fs/proc/proc_misc.c | |||
@@ -171,9 +171,9 @@ static int meminfo_read_proc(char *page, char **start, off_t off, | |||
171 | "AnonPages: %8lu kB\n" | 171 | "AnonPages: %8lu kB\n" |
172 | "Mapped: %8lu kB\n" | 172 | "Mapped: %8lu kB\n" |
173 | "Slab: %8lu kB\n" | 173 | "Slab: %8lu kB\n" |
174 | "PageTables: %8lu kB\n" | ||
174 | "CommitLimit: %8lu kB\n" | 175 | "CommitLimit: %8lu kB\n" |
175 | "Committed_AS: %8lu kB\n" | 176 | "Committed_AS: %8lu kB\n" |
176 | "PageTables: %8lu kB\n" | ||
177 | "VmallocTotal: %8lu kB\n" | 177 | "VmallocTotal: %8lu kB\n" |
178 | "VmallocUsed: %8lu kB\n" | 178 | "VmallocUsed: %8lu kB\n" |
179 | "VmallocChunk: %8lu kB\n", | 179 | "VmallocChunk: %8lu kB\n", |
@@ -195,9 +195,9 @@ static int meminfo_read_proc(char *page, char **start, off_t off, | |||
195 | K(global_page_state(NR_ANON_PAGES)), | 195 | K(global_page_state(NR_ANON_PAGES)), |
196 | K(global_page_state(NR_FILE_MAPPED)), | 196 | K(global_page_state(NR_FILE_MAPPED)), |
197 | K(global_page_state(NR_SLAB)), | 197 | K(global_page_state(NR_SLAB)), |
198 | K(global_page_state(NR_PAGETABLE)), | ||
198 | K(allowed), | 199 | K(allowed), |
199 | K(committed), | 200 | K(committed), |
200 | K(ps.nr_page_table_pages), | ||
201 | (unsigned long)VMALLOC_TOTAL >> 10, | 201 | (unsigned long)VMALLOC_TOTAL >> 10, |
202 | vmi.used >> 10, | 202 | vmi.used >> 10, |
203 | vmi.largest_chunk >> 10 | 203 | vmi.largest_chunk >> 10 |
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 67e03fc8533e..15adb435f240 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h | |||
@@ -52,6 +52,7 @@ enum zone_stat_item { | |||
52 | only modified from process context */ | 52 | only modified from process context */ |
53 | NR_FILE_PAGES, | 53 | NR_FILE_PAGES, |
54 | NR_SLAB, /* Pages used by slab allocator */ | 54 | NR_SLAB, /* Pages used by slab allocator */ |
55 | NR_PAGETABLE, /* used for pagetables */ | ||
55 | NR_VM_ZONE_STAT_ITEMS }; | 56 | NR_VM_ZONE_STAT_ITEMS }; |
56 | 57 | ||
57 | struct per_cpu_pages { | 58 | struct per_cpu_pages { |
diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h index 4b97381a2937..56220441d7c9 100644 --- a/include/linux/vmstat.h +++ b/include/linux/vmstat.h | |||
@@ -25,8 +25,7 @@ struct page_state { | |||
25 | unsigned long nr_dirty; /* Dirty writeable pages */ | 25 | unsigned long nr_dirty; /* Dirty writeable pages */ |
26 | unsigned long nr_writeback; /* Pages under writeback */ | 26 | unsigned long nr_writeback; /* Pages under writeback */ |
27 | unsigned long nr_unstable; /* NFS unstable pages */ | 27 | unsigned long nr_unstable; /* NFS unstable pages */ |
28 | unsigned long nr_page_table_pages;/* Pages used for pagetables */ | 28 | #define GET_PAGE_STATE_LAST nr_unstable |
29 | #define GET_PAGE_STATE_LAST nr_page_table_pages | ||
30 | 29 | ||
31 | /* | 30 | /* |
32 | * The below are zeroed by get_page_state(). Use get_full_page_state() | 31 | * The below are zeroed by get_page_state(). Use get_full_page_state() |
diff --git a/mm/memory.c b/mm/memory.c index 247b5c312b9b..1a78791590fa 100644 --- a/mm/memory.c +++ b/mm/memory.c | |||
@@ -126,7 +126,7 @@ static void free_pte_range(struct mmu_gather *tlb, pmd_t *pmd) | |||
126 | pmd_clear(pmd); | 126 | pmd_clear(pmd); |
127 | pte_lock_deinit(page); | 127 | pte_lock_deinit(page); |
128 | pte_free_tlb(tlb, page); | 128 | pte_free_tlb(tlb, page); |
129 | dec_page_state(nr_page_table_pages); | 129 | dec_zone_page_state(page, NR_PAGETABLE); |
130 | tlb->mm->nr_ptes--; | 130 | tlb->mm->nr_ptes--; |
131 | } | 131 | } |
132 | 132 | ||
@@ -311,7 +311,7 @@ int __pte_alloc(struct mm_struct *mm, pmd_t *pmd, unsigned long address) | |||
311 | pte_free(new); | 311 | pte_free(new); |
312 | } else { | 312 | } else { |
313 | mm->nr_ptes++; | 313 | mm->nr_ptes++; |
314 | inc_page_state(nr_page_table_pages); | 314 | inc_zone_page_state(new, NR_PAGETABLE); |
315 | pmd_populate(mm, pmd, new); | 315 | pmd_populate(mm, pmd, new); |
316 | } | 316 | } |
317 | spin_unlock(&mm->page_table_lock); | 317 | spin_unlock(&mm->page_table_lock); |
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index a38a11cfb483..ed3f2a7b4071 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -1320,7 +1320,7 @@ void show_free_areas(void) | |||
1320 | nr_free_pages(), | 1320 | nr_free_pages(), |
1321 | global_page_state(NR_SLAB), | 1321 | global_page_state(NR_SLAB), |
1322 | global_page_state(NR_FILE_MAPPED), | 1322 | global_page_state(NR_FILE_MAPPED), |
1323 | ps.nr_page_table_pages); | 1323 | global_page_state(NR_PAGETABLE)); |
1324 | 1324 | ||
1325 | for_each_zone(zone) { | 1325 | for_each_zone(zone) { |
1326 | int i; | 1326 | int i; |
diff --git a/mm/vmstat.c b/mm/vmstat.c index dc9e69209223..292a35fe56c9 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c | |||
@@ -399,12 +399,12 @@ static char *vmstat_text[] = { | |||
399 | "nr_mapped", | 399 | "nr_mapped", |
400 | "nr_file_pages", | 400 | "nr_file_pages", |
401 | "nr_slab", | 401 | "nr_slab", |
402 | "nr_page_table_pages", | ||
402 | 403 | ||
403 | /* Page state */ | 404 | /* Page state */ |
404 | "nr_dirty", | 405 | "nr_dirty", |
405 | "nr_writeback", | 406 | "nr_writeback", |
406 | "nr_unstable", | 407 | "nr_unstable", |
407 | "nr_page_table_pages", | ||
408 | 408 | ||
409 | "pgpgin", | 409 | "pgpgin", |
410 | "pgpgout", | 410 | "pgpgout", |