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