mm/page-writeback.c: print a warning if the vm dirtiness settings are illogical

The vm direct limit setting must be set greater than vm background limit
setting.  Otherwise print a warning to help the operator to figure out
that the vm dirtiness settings is in illogical state.

Link: http://lkml.kernel.org/r/1506592464-30962-1-git-send-email-laoar.shao@gmail.com
Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
Cc: Jan Kara <jack@suse.cz>
Cc: Michal Hocko <mhocko@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Yafang Shao 2017-11-15 17:33:45 -08:00 committed by Linus Torvalds
parent 66e8b438bd
commit 0f6d24f878
2 changed files with 11 additions and 1 deletions

View File

@ -157,6 +157,10 @@ Note: the minimum value allowed for dirty_bytes is two pages (in bytes); any
value lower than this limit will be ignored and the old configuration will be value lower than this limit will be ignored and the old configuration will be
retained. retained.
Note: the value of dirty_bytes also must be set greater than
dirty_background_bytes or the amount of memory corresponding to
dirty_background_ratio.
============================================================== ==============================================================
dirty_expire_centisecs dirty_expire_centisecs
@ -176,6 +180,9 @@ generating disk writes will itself start writing out dirty data.
The total available memory is not equal to total system memory. The total available memory is not equal to total system memory.
Note: dirty_ratio must be set greater than dirty_background_ratio or
ratio corresponding to dirty_background_bytes.
============================================================== ==============================================================
dirty_writeback_centisecs dirty_writeback_centisecs

View File

@ -433,8 +433,11 @@ static void domain_dirty_limits(struct dirty_throttle_control *dtc)
else else
bg_thresh = (bg_ratio * available_memory) / PAGE_SIZE; bg_thresh = (bg_ratio * available_memory) / PAGE_SIZE;
if (bg_thresh >= thresh) if (unlikely(bg_thresh >= thresh)) {
pr_warn("vm direct limit must be set greater than background limit.\n");
bg_thresh = thresh / 2; bg_thresh = thresh / 2;
}
tsk = current; tsk = current;
if (tsk->flags & PF_LESS_THROTTLE || rt_task(tsk)) { if (tsk->flags & PF_LESS_THROTTLE || rt_task(tsk)) {
bg_thresh += bg_thresh / 4 + global_wb_domain.dirty_limit / 32; bg_thresh += bg_thresh / 4 + global_wb_domain.dirty_limit / 32;