[PATCH] zoned vm counters: conversion of nr_writeback to per zone counter
Conversion of nr_writeback to per zone counter. This removes the last page_state counter from arch/i386/mm/pgtable.c so we drop the page_state from there. [akpm@osdl.org: bugfix] Signed-off-by: Christoph Lameter <clameter@sgi.com> Cc: Trond Myklebust <trond.myklebust@fys.uio.no> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Родитель
b1e7a8fd85
Коммит
ce866b34ae
|
@ -30,7 +30,6 @@ void show_mem(void)
|
|||
struct page *page;
|
||||
pg_data_t *pgdat;
|
||||
unsigned long i;
|
||||
struct page_state ps;
|
||||
unsigned long flags;
|
||||
|
||||
printk(KERN_INFO "Mem-info:\n");
|
||||
|
@ -58,9 +57,9 @@ void show_mem(void)
|
|||
printk(KERN_INFO "%d pages shared\n", shared);
|
||||
printk(KERN_INFO "%d pages swap cached\n", cached);
|
||||
|
||||
get_page_state(&ps);
|
||||
printk(KERN_INFO "%lu pages dirty\n", global_page_state(NR_FILE_DIRTY));
|
||||
printk(KERN_INFO "%lu pages writeback\n", ps.nr_writeback);
|
||||
printk(KERN_INFO "%lu pages writeback\n",
|
||||
global_page_state(NR_WRITEBACK));
|
||||
printk(KERN_INFO "%lu pages mapped\n", global_page_state(NR_FILE_MAPPED));
|
||||
printk(KERN_INFO "%lu pages slab\n", global_page_state(NR_SLAB));
|
||||
printk(KERN_INFO "%lu pages pagetables\n",
|
||||
|
|
|
@ -49,9 +49,6 @@ static ssize_t node_read_meminfo(struct sys_device * dev, char * buf)
|
|||
get_page_state_node(&ps, nid);
|
||||
__get_zone_counts(&active, &inactive, &free, NODE_DATA(nid));
|
||||
|
||||
/* Check for negative values in these approximate counters */
|
||||
if ((long)ps.nr_writeback < 0)
|
||||
ps.nr_writeback = 0;
|
||||
|
||||
n = sprintf(buf, "\n"
|
||||
"Node %d MemTotal: %8lu kB\n"
|
||||
|
@ -80,7 +77,7 @@ static ssize_t node_read_meminfo(struct sys_device * dev, char * buf)
|
|||
nid, K(i.totalram - i.totalhigh),
|
||||
nid, K(i.freeram - i.freehigh),
|
||||
nid, K(node_page_state(nid, NR_FILE_DIRTY)),
|
||||
nid, K(ps.nr_writeback),
|
||||
nid, K(node_page_state(nid, NR_WRITEBACK)),
|
||||
nid, K(node_page_state(nid, NR_FILE_PAGES)),
|
||||
nid, K(node_page_state(nid, NR_FILE_MAPPED)),
|
||||
nid, K(node_page_state(nid, NR_ANON_PAGES)),
|
||||
|
|
|
@ -191,7 +191,7 @@ static int meminfo_read_proc(char *page, char **start, off_t off,
|
|||
K(i.totalswap),
|
||||
K(i.freeswap),
|
||||
K(global_page_state(NR_FILE_DIRTY)),
|
||||
K(ps.nr_writeback),
|
||||
K(global_page_state(NR_WRITEBACK)),
|
||||
K(global_page_state(NR_ANON_PAGES)),
|
||||
K(global_page_state(NR_FILE_MAPPED)),
|
||||
K(global_page_state(NR_SLAB)),
|
||||
|
|
|
@ -54,6 +54,7 @@ enum zone_stat_item {
|
|||
NR_SLAB, /* Pages used by slab allocator */
|
||||
NR_PAGETABLE, /* used for pagetables */
|
||||
NR_FILE_DIRTY,
|
||||
NR_WRITEBACK,
|
||||
NR_VM_ZONE_STAT_ITEMS };
|
||||
|
||||
struct per_cpu_pages {
|
||||
|
|
|
@ -181,7 +181,7 @@
|
|||
do { \
|
||||
if (!test_and_set_bit(PG_writeback, \
|
||||
&(page)->flags)) \
|
||||
inc_page_state(nr_writeback); \
|
||||
inc_zone_page_state(page, NR_WRITEBACK); \
|
||||
} while (0)
|
||||
#define TestSetPageWriteback(page) \
|
||||
({ \
|
||||
|
@ -189,14 +189,14 @@
|
|||
ret = test_and_set_bit(PG_writeback, \
|
||||
&(page)->flags); \
|
||||
if (!ret) \
|
||||
inc_page_state(nr_writeback); \
|
||||
inc_zone_page_state(page, NR_WRITEBACK); \
|
||||
ret; \
|
||||
})
|
||||
#define ClearPageWriteback(page) \
|
||||
do { \
|
||||
if (test_and_clear_bit(PG_writeback, \
|
||||
&(page)->flags)) \
|
||||
dec_page_state(nr_writeback); \
|
||||
dec_zone_page_state(page, NR_WRITEBACK); \
|
||||
} while (0)
|
||||
#define TestClearPageWriteback(page) \
|
||||
({ \
|
||||
|
@ -204,7 +204,7 @@
|
|||
ret = test_and_clear_bit(PG_writeback, \
|
||||
&(page)->flags); \
|
||||
if (ret) \
|
||||
dec_page_state(nr_writeback); \
|
||||
dec_zone_page_state(page, NR_WRITEBACK); \
|
||||
ret; \
|
||||
})
|
||||
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
* commented here.
|
||||
*/
|
||||
struct page_state {
|
||||
unsigned long nr_writeback; /* Pages under writeback */
|
||||
unsigned long nr_unstable; /* NFS unstable pages */
|
||||
#define GET_PAGE_STATE_LAST nr_unstable
|
||||
|
||||
|
|
|
@ -113,7 +113,7 @@ static void get_writeback_state(struct writeback_state *wbs)
|
|||
wbs->nr_unstable = read_page_state(nr_unstable);
|
||||
wbs->nr_mapped = global_page_state(NR_FILE_MAPPED) +
|
||||
global_page_state(NR_ANON_PAGES);
|
||||
wbs->nr_writeback = read_page_state(nr_writeback);
|
||||
wbs->nr_writeback = global_page_state(NR_WRITEBACK);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -1315,7 +1315,7 @@ void show_free_areas(void)
|
|||
active,
|
||||
inactive,
|
||||
global_page_state(NR_FILE_DIRTY),
|
||||
ps.nr_writeback,
|
||||
global_page_state(NR_WRITEBACK),
|
||||
ps.nr_unstable,
|
||||
nr_free_pages(),
|
||||
global_page_state(NR_SLAB),
|
||||
|
|
|
@ -401,9 +401,9 @@ static char *vmstat_text[] = {
|
|||
"nr_slab",
|
||||
"nr_page_table_pages",
|
||||
"nr_dirty",
|
||||
"nr_writeback",
|
||||
|
||||
/* Page state */
|
||||
"nr_writeback",
|
||||
"nr_unstable",
|
||||
|
||||
"pgpgin",
|
||||
|
|
Загрузка…
Ссылка в новой задаче