diff options
author | Miklos Szeredi <mszeredi@suse.cz> | 2008-04-30 03:54:38 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-30 11:29:50 -0400 |
commit | fc3ba692a4d19019387c5acaea63131f9eab05dd (patch) | |
tree | c86e025cb8f79c7ffc479029989b7378bcb9f285 /mm | |
parent | dd5656e59ca7b25fb60a22f9079905ed0da5ed0c (diff) |
mm: Add NR_WRITEBACK_TEMP counter
Fuse will use temporary buffers to write back dirty data from memory mappings
(normal writes are done synchronously). This is needed, because there cannot
be any guarantee about the time in which a write will complete.
By using temporary buffers, from the MM's point if view the page is written
back immediately. If the writeout was due to memory pressure, this
effectively migrates data from a full zone to a less full zone.
This patch adds a new counter (NR_WRITEBACK_TEMP) for the number of pages used
as temporary buffers.
[Lee.Schermerhorn@hp.com: add vmstat_text for NR_WRITEBACK_TEMP]
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Cc: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Lee Schermerhorn <lee.schermerhorn@hp.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/page-writeback.c | 3 | ||||
-rw-r--r-- | mm/vmstat.c | 1 |
2 files changed, 3 insertions, 1 deletions
diff --git a/mm/page-writeback.c b/mm/page-writeback.c index c90a1e8e479f..789b6adbef37 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c | |||
@@ -211,7 +211,8 @@ clip_bdi_dirty_limit(struct backing_dev_info *bdi, long dirty, long *pbdi_dirty) | |||
211 | avail_dirty = dirty - | 211 | avail_dirty = dirty - |
212 | (global_page_state(NR_FILE_DIRTY) + | 212 | (global_page_state(NR_FILE_DIRTY) + |
213 | global_page_state(NR_WRITEBACK) + | 213 | global_page_state(NR_WRITEBACK) + |
214 | global_page_state(NR_UNSTABLE_NFS)); | 214 | global_page_state(NR_UNSTABLE_NFS) + |
215 | global_page_state(NR_WRITEBACK_TEMP)); | ||
215 | 216 | ||
216 | if (avail_dirty < 0) | 217 | if (avail_dirty < 0) |
217 | avail_dirty = 0; | 218 | avail_dirty = 0; |
diff --git a/mm/vmstat.c b/mm/vmstat.c index 280a7ed549f2..1a32130b958c 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c | |||
@@ -612,6 +612,7 @@ static const char * const vmstat_text[] = { | |||
612 | "nr_unstable", | 612 | "nr_unstable", |
613 | "nr_bounce", | 613 | "nr_bounce", |
614 | "nr_vmscan_write", | 614 | "nr_vmscan_write", |
615 | "nr_writeback_temp", | ||
615 | 616 | ||
616 | #ifdef CONFIG_NUMA | 617 | #ifdef CONFIG_NUMA |
617 | "numa_hit", | 618 | "numa_hit", |