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 <t...@kernel.org>

Makes sense to me. You can add:

Reviewed-by: Jan Kara <j...@suse.cz>

                                                                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 <j...@suse.com>
SUSE Labs, CR

Reply via email to