diff mbox series

mm/page-writeback: Update the comment of Dirty position control

Message ID 20210511052626.19005-1-wuchi.zero@gmail.com (mailing list archive)
State New
Headers show
Series mm/page-writeback: Update the comment of Dirty position control | expand

Commit Message

Chi Wu May 11, 2021, 5:26 a.m. UTC
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@gmail.com>
---
 mm/page-writeback.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jan Kara May 11, 2021, 9:06 a.m. UTC | #1
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@gmail.com>
> ---
>  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
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).

								Honza
Chi Wu May 11, 2021, 10:01 a.m. UTC | #2
Jan Kara <jack@suse.cz> 于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@gmail.com>
> > ---
> >  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@suse.com>
> SUSE Labs, CR
diff mbox series

Patch

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 * * * * * * *
  *     |            .*
  *     |            . *
  *     |            .   *