diff options
author | Wu Fengguang <fengguang.wu@intel.com> | 2011-01-23 11:07:47 -0500 |
---|---|---|
committer | Wu Fengguang <fengguang.wu@intel.com> | 2011-10-03 09:08:56 -0400 |
commit | c8e28ce049faa53a470c132893abbc9f2bde9420 (patch) | |
tree | 40553e72f50a613c93f4175d1d28d06abc90db65 | |
parent | 9b13776977d45505469edc6decc93e9e3799afe2 (diff) |
writeback: account per-bdi accumulated dirtied pages
Introduce the BDI_DIRTIED counter. It will be used for estimating the
bdi's dirty bandwidth.
CC: Jan Kara <jack@suse.cz>
CC: Michael Rubin <mrubin@google.com>
CC: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
-rw-r--r-- | include/linux/backing-dev.h | 1 | ||||
-rw-r--r-- | mm/backing-dev.c | 2 | ||||
-rw-r--r-- | mm/page-writeback.c | 1 |
3 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h index 3b2f9cb82986..9ca241a70c49 100644 --- a/include/linux/backing-dev.h +++ b/include/linux/backing-dev.h | |||
@@ -40,6 +40,7 @@ typedef int (congested_fn)(void *, int); | |||
40 | enum bdi_stat_item { | 40 | enum bdi_stat_item { |
41 | BDI_RECLAIMABLE, | 41 | BDI_RECLAIMABLE, |
42 | BDI_WRITEBACK, | 42 | BDI_WRITEBACK, |
43 | BDI_DIRTIED, | ||
43 | BDI_WRITTEN, | 44 | BDI_WRITTEN, |
44 | NR_BDI_STAT_ITEMS | 45 | NR_BDI_STAT_ITEMS |
45 | }; | 46 | }; |
diff --git a/mm/backing-dev.c b/mm/backing-dev.c index a87da524a4a0..fea7e6efd1d7 100644 --- a/mm/backing-dev.c +++ b/mm/backing-dev.c | |||
@@ -97,6 +97,7 @@ static int bdi_debug_stats_show(struct seq_file *m, void *v) | |||
97 | "BdiDirtyThresh: %10lu kB\n" | 97 | "BdiDirtyThresh: %10lu kB\n" |
98 | "DirtyThresh: %10lu kB\n" | 98 | "DirtyThresh: %10lu kB\n" |
99 | "BackgroundThresh: %10lu kB\n" | 99 | "BackgroundThresh: %10lu kB\n" |
100 | "BdiDirtied: %10lu kB\n" | ||
100 | "BdiWritten: %10lu kB\n" | 101 | "BdiWritten: %10lu kB\n" |
101 | "BdiWriteBandwidth: %10lu kBps\n" | 102 | "BdiWriteBandwidth: %10lu kBps\n" |
102 | "b_dirty: %10lu\n" | 103 | "b_dirty: %10lu\n" |
@@ -109,6 +110,7 @@ static int bdi_debug_stats_show(struct seq_file *m, void *v) | |||
109 | K(bdi_thresh), | 110 | K(bdi_thresh), |
110 | K(dirty_thresh), | 111 | K(dirty_thresh), |
111 | K(background_thresh), | 112 | K(background_thresh), |
113 | (unsigned long) K(bdi_stat(bdi, BDI_DIRTIED)), | ||
112 | (unsigned long) K(bdi_stat(bdi, BDI_WRITTEN)), | 114 | (unsigned long) K(bdi_stat(bdi, BDI_WRITTEN)), |
113 | (unsigned long) K(bdi->write_bandwidth), | 115 | (unsigned long) K(bdi->write_bandwidth), |
114 | nr_dirty, | 116 | nr_dirty, |
diff --git a/mm/page-writeback.c b/mm/page-writeback.c index 0e309cd1b5b9..0e6dd5c2ed31 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c | |||
@@ -1322,6 +1322,7 @@ void account_page_dirtied(struct page *page, struct address_space *mapping) | |||
1322 | __inc_zone_page_state(page, NR_FILE_DIRTY); | 1322 | __inc_zone_page_state(page, NR_FILE_DIRTY); |
1323 | __inc_zone_page_state(page, NR_DIRTIED); | 1323 | __inc_zone_page_state(page, NR_DIRTIED); |
1324 | __inc_bdi_stat(mapping->backing_dev_info, BDI_RECLAIMABLE); | 1324 | __inc_bdi_stat(mapping->backing_dev_info, BDI_RECLAIMABLE); |
1325 | __inc_bdi_stat(mapping->backing_dev_info, BDI_DIRTIED); | ||
1325 | task_dirty_inc(current); | 1326 | task_dirty_inc(current); |
1326 | task_io_account_write(PAGE_CACHE_SIZE); | 1327 | task_io_account_write(PAGE_CACHE_SIZE); |
1327 | } | 1328 | } |