Hi Michal

We can think the some of scanned pages is  reclaimed as reclaimed pages and the rest of pages is just unsuccessful reclaimed pages. vmpressure is tend to unsuccessful reclaimed pages, so obviously the pressure percent is the ratio of unsuccessful reclaimed pages to scanned pages.

If my understanding is wrong, please correct  it.

Thanks.



-------- 原始邮件 --------
发件人:Michal Hocko <mhocko@kernel.org>
时间:周一 7月3日 15:44
收件人:zbestahu <zbestahu@aliyun.com>
抄送:akpm <akpm@linux-foundation.org>,minchan <minchan@kernel.org>,linux-mm <linux-mm@kvack.org>,Yue Hu <huyue2@coolpad.com>,Anton Vorontsov <anton.vorontsov@linaro.org>
主题:Re: [PATCH] mm: vmpressure: simplify pressure ratio calculation

[CC Anton]

On Sat 01-07-17 14:27:39, zbestahu@aliyun.com wrote:
> From: Yue Hu <huyue2@coolpad.com>
>
> The patch removes the needless scale in existing caluation, it
> makes the calculation more simple and more effective.

I suspect the construct is deliberate and done this way because of the
rounding. Your code will behave slightly differently. If that is
intentional then it should be described in the changedlog.

> Signed-off-by: Yue Hu <huyue2@coolpad.com>
> ---
>  mm/vmpressure.c | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/mm/vmpressure.c b/mm/vmpressure.c
> index 6063581..174b2f0 100644
> --- a/mm/vmpressure.c
> +++ b/mm/vmpressure.c
> @@ -111,7 +111,6 @@ static enum vmpressure_levels vmpressure_level(unsigned long pressure)
>  static enum vmpressure_levels vmpressure_calc_level(unsigned long scanned,
>      unsigned long reclaimed)
>  {
> - unsigned long scale = scanned + reclaimed;
>  unsigned long pressure = 0;

>  /*
> @@ -128,8 +127,7 @@ static enum vmpressure_levels vmpressure_calc_level(unsigned long scanned,
>  * scanned. This makes it possible to set desired reaction time
>  * and serves as a ratelimit.
>  */
> - pressure = scale - (reclaimed * scale / scanned);
> - pressure = pressure * 100 / scale;
> + pressure = (scanned - reclaimed) * 100 / scanned;

>  out:
>  pr_debug("%s: %3lu  (s: %lu  r: %lu)\n", __func__, pressure,
> --
> 1.9.1
>

--
Michal Hocko
SUSE Labs