Re: [PATCH] mm/page-writeback: Update the comment of Dirty position control

From: chi wu
Date: Tue May 11 2021 - 06:01:50 EST


Jan Kara <jack@xxxxxxx> 于2021年5月11日周二 下午5:06写道:
>
> On Tue 11-05-21 13:26:26, Chi Wu wrote:
> > As the value of pos_ratio_polynom() clamp between 0 and
> > 2LL << RATELIMIT_CALC_SHIFT, the global control line should be
> > consistent with it.
> >
> > Signed-off-by: Chi Wu <wuchi.zero@xxxxxxxxx>
> > ---
> > mm/page-writeback.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/mm/page-writeback.c b/mm/page-writeback.c
> > index 0062d5c57d41..e9a4f6cf12bb 100644
> > --- a/mm/page-writeback.c
> > +++ b/mm/page-writeback.c
> > @@ -845,7 +845,7 @@ static long long pos_ratio_polynom(unsigned long setpoint,
> > * ^ pos_ratio
> > * |
> > * | |<===== global dirty control scope ======>|
> > - * 2.0 .............*
> > + * 2.0 * * * * * * *
> > * | .*
> > * | . *
> > * | . *
>
> Generally, pos_ratio is used only within [freerun, limit] range so its
> values outside of that range don't matter much. But you're right that

Thanks.
Yes, most time it is. As the follow code and in the
"dtc->wb_dirty < 8" rampup case, dirty pages may break the rules.

. . . .
if (unlikely(wb->bdi->capabilities & BDI_CAP_STRICTLIMIT)) {
long long wb_pos_ratio;

if (dtc->wb_dirty < 8) {
dtc->pos_ratio = min_t(long long, pos_ratio * 2,
2 << RATELIMIT_CALC_SHIFT);
return;
}

if (dtc->wb_dirty >= wb_thresh)
return;
. . .


> pos_ratio_polynom() clamps the computed value as you describe and we can
> visualize that in the graph as well. Just please move the '*' line you add
> by one space to the right so that the curve really follows the cubic curve
> upto 'freerun' mark (the vertical '.' line).

Thanks.I'll correct it later.

>
> Honza
> --
> Jan Kara <jack@xxxxxxxx>
> SUSE Labs, CR