[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.DEB.2.21.2004031238571.230548@chino.kir.corp.google.com>
Date: Fri, 3 Apr 2020 12:41:09 -0700 (PDT)
From: David Rientjes <rientjes@...gle.com>
To: Michal Hocko <mhocko@...nel.org>
cc: Andrew Morton <akpm@...ux-foundation.org>,
Joel Fernandes <joel@...lfernandes.org>,
"Paul E. McKenney" <paulmck@...ux.vnet.ibm.com>,
Neil Brown <neilb@...e.de>, linux-mm@...ck.org,
LKML <linux-kernel@...r.kernel.org>,
Michal Hocko <mhocko@...e.com>
Subject: Re: [PATCH 1/2] mm: clarify __GFP_MEMALLOC usage
On Fri, 3 Apr 2020, Michal Hocko wrote:
> From: Michal Hocko <mhocko@...e.com>
>
> It seems that the existing documentation is not explicit about the
> expected usage and potential risks enough. While it is calls out
> that users have to free memory when using this flag it is not really
> apparent that users have to careful to not deplete memory reserves
> and that they should implement some sort of throttling wrt. freeing
> process.
>
> This is partly based on Neil's explanation [1].
>
> [1] http://lkml.kernel.org/r/877dz0yxoa.fsf@notabene.neil.brown.name
> Signed-off-by: Michal Hocko <mhocko@...e.com>
> ---
> include/linux/gfp.h | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/include/linux/gfp.h b/include/linux/gfp.h
> index e5b817cb86e7..e3ab1c0d9140 100644
> --- a/include/linux/gfp.h
> +++ b/include/linux/gfp.h
> @@ -110,6 +110,9 @@ struct vm_area_struct;
> * the caller guarantees the allocation will allow more memory to be freed
> * very shortly e.g. process exiting or swapping. Users either should
> * be the MM or co-ordinating closely with the VM (e.g. swap over NFS).
> + * Users of this flag have to be extremely careful to not deplete the reserve
> + * completely and implement a throttling mechanism which controls the consumption
> + * of the reserve based on the amount of freed memory.
> *
> * %__GFP_NOMEMALLOC is used to explicitly forbid access to emergency reserves.
> * This takes precedence over the %__GFP_MEMALLOC flag if both are set.
Hmm, any guidance that we can offer to users of this flag that aren't
aware of __GFP_MEMALLOC internals? If I were to read this and not be
aware of the implementation, I would ask "how do I know when I'm at risk
of depleting this reserve" especially since the amount of reserve is
controlled by sysctl. How do I know when I'm risking a depletion of this
shared reserve?
Powered by blists - more mailing lists