2020-05-09 06:14:27

by Tan Hu

[permalink] [raw]
Subject: [PATCH v2] lib/flex_proportions.c: cleanup __fprop_inc_percpu_max

If the given type has fraction smaller than max_frac/FPROP_FRAC_BASE,
the code could be modified to call __fprop_inc_percpu() directly and
easier to understand. After this patch, fprop_reflect_period_percpu()
will be called twice, and quicky return on pl->period == p->period
test, so it would not result to significant downside of performance.

Thanks for Jan's guidance.

Signed-off-by: Tan Hu <[email protected]>
---
lib/flex_proportions.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/lib/flex_proportions.c b/lib/flex_proportions.c
index 7852bfff5..451543937 100644
--- a/lib/flex_proportions.c
+++ b/lib/flex_proportions.c
@@ -266,8 +266,7 @@ void __fprop_inc_percpu_max(struct fprop_global *p,
if (numerator >
(((u64)denominator) * max_frac) >> FPROP_FRAC_SHIFT)
return;
- } else
- fprop_reflect_period_percpu(p, pl);
- percpu_counter_add_batch(&pl->events, 1, PROP_BATCH);
- percpu_counter_add(&p->events, 1);
+ }
+
+ __fprop_inc_percpu(p, pl);
}
--
2.19.1


2020-05-11 11:25:24

by Jan Kara

[permalink] [raw]
Subject: Re: [PATCH v2] lib/flex_proportions.c: cleanup __fprop_inc_percpu_max

On Sat 09-05-20 14:12:33, Tan Hu wrote:
> If the given type has fraction smaller than max_frac/FPROP_FRAC_BASE,
> the code could be modified to call __fprop_inc_percpu() directly and
> easier to understand. After this patch, fprop_reflect_period_percpu()
> will be called twice, and quicky return on pl->period == p->period
> test, so it would not result to significant downside of performance.
>
> Thanks for Jan's guidance.
>
> Signed-off-by: Tan Hu <[email protected]>

Thanks for the patch. It looks good to me. You can add:

Reviewed-by: Jan Kara <[email protected]>

Honza

> ---
> lib/flex_proportions.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/lib/flex_proportions.c b/lib/flex_proportions.c
> index 7852bfff5..451543937 100644
> --- a/lib/flex_proportions.c
> +++ b/lib/flex_proportions.c
> @@ -266,8 +266,7 @@ void __fprop_inc_percpu_max(struct fprop_global *p,
> if (numerator >
> (((u64)denominator) * max_frac) >> FPROP_FRAC_SHIFT)
> return;
> - } else
> - fprop_reflect_period_percpu(p, pl);
> - percpu_counter_add_batch(&pl->events, 1, PROP_BATCH);
> - percpu_counter_add(&p->events, 1);
> + }
> +
> + __fprop_inc_percpu(p, pl);
> }
> --
> 2.19.1
>
--
Jan Kara <[email protected]>
SUSE Labs, CR