On Fri 02-08-19 12:07:38, Tejun Heo wrote: > WB_FRN_TIME_CUT_DIV is used to tell the foreign inode detection logic > to ignore short writeback rounds to prevent getting confused by a > burst of short writebacks. The parameter is currently 2 meaning that > anything smaller than half of the running average writback duration > will be ignored. > > This is unnecessarily aggressive. The detection logic uses 16 history > slots and is already reasonably protected against some short bursts > confusing it and the current parameter can lead to tens of seconds of > missed detection depending on the writeback pattern. > > Let's change the parameter to 8, so that it only ignores writeback > with are smaller than 12.5% of the current running average. > > Signed-off-by: Tejun Heo <tj@xxxxxxxxxx> Makes sense to me. You can add: Reviewed-by: Jan Kara <jack@xxxxxxx> Honza > --- > fs/fs-writeback.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > --- a/fs/fs-writeback.c > +++ b/fs/fs-writeback.c > @@ -227,7 +227,7 @@ static void wb_wait_for_completion(struc > /* parameters for foreign inode detection, see wb_detach_inode() */ > #define WB_FRN_TIME_SHIFT 13 /* 1s = 2^13, upto 8 secs w/ 16bit */ > #define WB_FRN_TIME_AVG_SHIFT 3 /* avg = avg * 7/8 + new * 1/8 */ > -#define WB_FRN_TIME_CUT_DIV 2 /* ignore rounds < avg / 2 */ > +#define WB_FRN_TIME_CUT_DIV 8 /* ignore rounds < avg / 8 */ > #define WB_FRN_TIME_PERIOD (2 * (1 << WB_FRN_TIME_SHIFT)) /* 2s */ > > #define WB_FRN_HIST_SLOTS 16 /* inode->i_wb_frn_history is 16bit */ -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR