diff options
author | Wu Fengguang <fengguang.wu@intel.com> | 2011-12-04 04:26:01 +0100 |
---|---|---|
committer | Wu Fengguang <fengguang.wu@intel.com> | 2011-12-18 07:20:31 +0100 |
commit | 82791940545be38810dfd5e03ee701e749f04aab (patch) | |
tree | 427e4b1f535dfa483de6b71d1f59c13fd07a0ff9 /mm | |
parent | writeback: avoid tiny dirty poll intervals (diff) | |
download | linux-82791940545be38810dfd5e03ee701e749f04aab.tar.xz linux-82791940545be38810dfd5e03ee701e749f04aab.zip |
writeback: do strict bdi dirty_exceeded
This helps to reduce dirty throttling polls and hence CPU overheads.
bdi->dirty_exceeded typically only helps when suddenly starting 100+
dd's on a disk, in which case the dd's may need to poll
balance_dirty_pages() earlier than tsk->nr_dirtied_pause.
CC: Jan Kara <jack@suse.cz>
CC: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/page-writeback.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/page-writeback.c b/mm/page-writeback.c index 422cf4edab47..936dc7b61dc6 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -1160,7 +1160,7 @@ static void balance_dirty_pages(struct address_space *mapping, bdi_stat(bdi, BDI_WRITEBACK); } - dirty_exceeded = (bdi_dirty > bdi_thresh) || + dirty_exceeded = (bdi_dirty > bdi_thresh) && (nr_dirty > dirty_thresh); if (dirty_exceeded && !bdi->dirty_exceeded) bdi->dirty_exceeded = 1; |