diff options
author | Wu Fengguang <fengguang.wu@intel.com> | 2011-06-11 19:32:32 -0600 |
---|---|---|
committer | Wu Fengguang <fengguang.wu@intel.com> | 2011-10-03 21:08:58 +0800 |
commit | 57fc978cfb61ed40a7bbfe5a569359159ba31abd (patch) | |
tree | 870ffd08e0c1bb0dde55e4f1ed4dfa2bda8e3a80 /mm/page_alloc.c | |
parent | c8462cc9de9e92264ec647903772f6036a99b286 (diff) | |
download | op-kernel-dev-57fc978cfb61ed40a7bbfe5a569359159ba31abd.zip op-kernel-dev-57fc978cfb61ed40a7bbfe5a569359159ba31abd.tar.gz |
writeback: control dirty pause time
The dirty pause time shall ultimately be controlled by adjusting
nr_dirtied_pause, since there is relationship
pause = pages_dirtied / task_ratelimit
Assuming
pages_dirtied ~= nr_dirtied_pause
task_ratelimit ~= dirty_ratelimit
We get
nr_dirtied_pause ~= dirty_ratelimit * desired_pause
Here dirty_ratelimit is preferred over task_ratelimit because it's
more stable.
It's also important to limit possible large transitional errors:
- bw is changing quickly
- pages_dirtied << nr_dirtied_pause on entering dirty exceeded area
- pages_dirtied >> nr_dirtied_pause on btrfs (to be improved by a
separate fix, but still expect non-trivial errors)
So we end up using the above formula inside clamp_val().
The best test case for this code is to run 100 "dd bs=4M" tasks on
btrfs and check its pause time distribution.
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Diffstat (limited to 'mm/page_alloc.c')
0 files changed, 0 insertions, 0 deletions