writeback: reset wb_domain->dirty_limit[_tstmp] when memcg domain size changes
authorTejun Heo <tj@kernel.org>
Fri, 22 May 2015 22:23:34 +0000 (18:23 -0400)
committerJens Axboe <axboe@fb.com>
Tue, 2 Jun 2015 14:38:13 +0000 (08:38 -0600)
commit2529bb3aadc40a93e642f5f3650f63379a964467
treeced5264ace40ca3cbb6899233f7caa1bd79a0903
parent841710aa6e4acd066ab9fe8c8cb6f4e4e6709d83
writeback: reset wb_domain->dirty_limit[_tstmp] when memcg domain size changes

The amount of available memory to a memcg wb_domain can change as
memcg configuration changes.  A domain's ->dirty_limit exists to
smooth out sudden drops in dirty threshold; however, when a domain's
size actually drops significantly, it hinders the dirty throttling
from adjusting to the new configuration leading to unexpected
behaviors including unnecessary OOM kills.

This patch resolves the issue by adding wb_domain_size_changed() which
resets ->dirty_limit[_tstmp] and making memcg call it on configuration
changes.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Jan Kara <jack@suse.cz>
Cc: Wu Fengguang <fengguang.wu@intel.com>
Cc: Greg Thelen <gthelen@google.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
include/linux/writeback.h
mm/memcontrol.c