aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Lameter <clameter@sgi.com>2006-06-30 04:55:38 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-30 14:25:35 -0400
commitdf849a1529c106f7460e51479ca78fe07b07dc8c (patch)
treef0e52e4720160aa7540a57715c247dce44584cbc
parent9a865ffa34b6117a5e0b67640a084d8c2e198c93 (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.c2
-rw-r--r--arch/i386/mm/pgtable.c3
-rw-r--r--arch/um/kernel/skas/mmu.c2
-rw-r--r--drivers/base/node.c2
-rw-r--r--fs/proc/proc_misc.c4
-rw-r--r--include/linux/mmzone.h1
-rw-r--r--include/linux/vmstat.h3
-rw-r--r--mm/memory.c4
-rw-r--r--mm/page_alloc.c2
-rw-r--r--mm/vmstat.c2
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
57struct per_cpu_pages { 58struct 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",