Re: [PATCH] mm: Set min_free_kbytes with user_min_free_kbytes when user_min_free_kbytes is preferred

From: Andrew Morton
Date: Tue Sep 28 2021 - 18:29:22 EST


On Tue, 28 Sep 2021 20:23:17 +0800 Liangcai Fan <liangcaifan19@xxxxxxxxx> wrote:

> The 'min_free_kbytes' and 'user_min_free_kbytes' maybe inconsistent
> after a few times of memory hotplug.

What does "inconsistent" mean here?

Please describe the problem in more detail, perhaps with examples.

> When 'new_min_free_kbytes' is not larger than 'user_min_free_kbytes',
> set 'min_free_kbytes' with 'user_min_free_kbytes' rather than leave
> it as the 'new_min_free_kbytes' calculated for the last time.
>
> Signed-off-by: Liangcai Fan <liangcaifan19@xxxxxxxxx>
> Cc: Chunyan Zhang <zhang.lyra@xxxxxxxxx>
> ---
> mm/page_alloc.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index b37435c..ddf9dc1 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -8467,6 +8467,12 @@ int __meminit init_per_zone_wmark_min(void)
> if (min_free_kbytes > 262144)
> min_free_kbytes = 262144;
> } else {
> + /*
> + * Set 'min_free_kbytes' with 'user_min_free_kbytes' rather than
> + * leave it as the 'new_min_free_kbytes' calculated for the last
> + * time.
> + */

This comment explains what the code is doing, which is almost always
obvious from reading the code! A better comment will describe *why*
the code is doing whatever is does. "why, not what", please.

> + min_free_kbytes = user_min_free_kbytes;
> pr_warn("min_free_kbytes is not updated to %d because user defined value %d is preferred\n",
> new_min_free_kbytes, user_min_free_kbytes);
> }