diff options
author | Wu Fengguang <fengguang.wu@intel.com> | 2011-04-05 13:21:19 -0600 |
---|---|---|
committer | Wu Fengguang <fengguang.wu@intel.com> | 2011-12-18 14:20:20 +0800 |
commit | 54848d73f9f254631303d6eab9b976855988b266 (patch) | |
tree | 9fb4b7e564f2c0df88d0bde2f482b9b7efc847fa /include/linux/writeback.h | |
parent | 1bc36b6426ae49139e9f56491db76b95921454d7 (diff) | |
download | linux-54848d73f9f254631303d6eab9b976855988b266.tar.gz linux-54848d73f9f254631303d6eab9b976855988b266.tar.bz2 linux-54848d73f9f254631303d6eab9b976855988b266.zip |
writeback: charge leaked page dirties to active tasks
It's a years long problem that a large number of short-lived dirtiers
(eg. gcc instances in a fast kernel build) may starve long-run dirtiers
(eg. dd) as well as pushing the dirty pages to the global hard limit.
The solution is to charge the pages dirtied by the exited gcc to the
other random dirtying tasks. It sounds not perfect, however should
behave good enough in practice, seeing as that throttled tasks aren't
actually running so those that are running are more likely to pick it up
and get throttled, therefore promoting an equal spread.
Randy: fix compile error: 'dirty_throttle_leaks' undeclared in exit.c
Acked-by: Jan Kara <jack@suse.cz>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Randy Dunlap <rdunlap@xenotime.net>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Diffstat (limited to 'include/linux/writeback.h')
-rw-r--r-- | include/linux/writeback.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/writeback.h b/include/linux/writeback.h index a378c295851f..05eaf5e3aad7 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h @@ -7,6 +7,8 @@ #include <linux/sched.h> #include <linux/fs.h> +DECLARE_PER_CPU(int, dirty_throttle_leaks); + /* * The 1/4 region under the global dirty thresh is for smooth dirty throttling: * |