On Fri, 3 Apr 2020, Michal Hocko wrote: > From: Michal Hocko <mhocko@xxxxxxxx> > > 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@xxxxxxxxxxxxxxxxxxxxxxxx > Signed-off-by: Michal Hocko <mhocko@xxxxxxxx> > --- > 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?