From: Joel Fernandes <joel@joelfernandes.org>
To: Michal Hocko <mhocko@kernel.org>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
rcu@vger.kernel.org, willy@infradead.org, peterz@infradead.org,
neilb@suse.com, vbabka@suse.cz, mgorman@suse.de,
Andrew Morton <akpm@linux-foundation.org>,
Josh Triplett <josh@joshtriplett.org>,
Lai Jiangshan <jiangshanlai@gmail.com>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
"Paul E. McKenney" <paulmck@kernel.org>,
Steven Rostedt <rostedt@goodmis.org>
Subject: Re: [PATCH RFC] rcu/tree: Use GFP_MEMALLOC for alloc memory to free memory pattern
Date: Tue, 31 Mar 2020 12:01:17 -0400 [thread overview]
Message-ID: <20200331160117.GA170994@google.com> (raw)
In-Reply-To: <20200331153450.GM30449@dhcp22.suse.cz>
On Tue, Mar 31, 2020 at 05:34:50PM +0200, Michal Hocko wrote:
> On Tue 31-03-20 10:58:06, Joel Fernandes wrote:
> [...]
> > > diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
> > > index 4be763355c9fb..965deefffdd58 100644
> > > --- a/kernel/rcu/tree.c
> > > +++ b/kernel/rcu/tree.c
> > > @@ -3149,7 +3149,7 @@ static inline struct rcu_head *attach_rcu_head_to_object(void *obj)
> > >
> > > if (!ptr)
> > > ptr = kmalloc(sizeof(unsigned long *) +
> > > - sizeof(struct rcu_head), GFP_ATOMIC | __GFP_NOWARN);
> > > + sizeof(struct rcu_head), GFP_MEMALLOC);
> >
> > Just to add, the main requirements here are:
> > 1. Allocation should be bounded in time.
> > 2. Allocation should try hard (possibly tapping into reserves)
> > 3. Sleeping is Ok but should not affect the time bound.
>
>
> __GFP_ATOMIC | __GFP_HIGH is the way to get an additional access to
> memory reserves regarless of the sleeping status.
>
> Using __GFP_MEMALLOC is quite dangerous because it can deplete _all_ the
> memory. What does prevent the above code path to do that?
Can you suggest what prevents other users of GFP_MEMALLOC from doing that
also? That's the whole point of having a reserve, in normal usage no one will
use it, but some times you need to use it. Keep in mind this is not a common
case in this code here, this is triggered only if earlier allocation attempts
failed. Only *then* we try with GFP_MEMALLOC with promises to free additional
memory soon.
> If a partial access to reserves is sufficient then why the existing
> modifiers (mentioned above are not sufficient?
The point with using GFP_MEMALLOC is it is useful for situations where you
are about to free memory and needed some memory temporarily, to free that. It
depletes it a bit temporarily to free even more. Is that not the point of
PF_MEMALLOC?
* %__GFP_MEMALLOC allows access to all memory. This should only be used when
* 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).
I was just recommending usage of this flag here because it fits the
requirement of allocating some memory to free some memory. I am also Ok with
GFP_ATOMIC with the GFP_NOWARN removed, if you are Ok with that.
thanks,
- Joel
next prev parent reply other threads:[~2020-03-31 16:01 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-31 13:16 [PATCH RFC] rcu/tree: Use GFP_MEMALLOC for alloc memory to free memory pattern Joel Fernandes (Google)
2020-03-31 14:04 ` Uladzislau Rezki
2020-03-31 15:09 ` Joel Fernandes
2020-03-31 16:01 ` Uladzislau Rezki
2020-03-31 17:02 ` Uladzislau Rezki
2020-03-31 17:49 ` Paul E. McKenney
2020-03-31 18:30 ` Joel Fernandes
2020-04-01 12:25 ` Uladzislau Rezki
2020-04-01 13:47 ` Paul E. McKenney
2020-04-01 18:16 ` Uladzislau Rezki
2020-04-01 18:26 ` Paul E. McKenney
2020-04-01 18:37 ` Uladzislau Rezki
2020-04-01 18:54 ` Paul E. McKenney
2020-04-01 19:05 ` Uladzislau Rezki
2020-04-01 19:34 ` Paul E. McKenney
2020-04-01 19:35 ` Uladzislau Rezki
2020-03-31 14:58 ` Joel Fernandes
2020-03-31 15:34 ` Michal Hocko
2020-03-31 16:01 ` Joel Fernandes [this message]
2020-03-31 22:19 ` NeilBrown
2020-04-01 3:25 ` Joel Fernandes
2020-04-01 4:52 ` NeilBrown
2020-04-01 7:23 ` Michal Hocko
2020-04-01 11:14 ` joel
2020-04-01 11:14 ` joel
2020-04-01 12:05 ` Michal Hocko
2020-04-01 13:14 ` Mel Gorman
2020-04-01 14:45 ` Joel Fernandes
2020-03-31 16:12 ` Uladzislau Rezki
2020-04-01 7:09 ` Michal Hocko
2020-04-01 12:32 ` Uladzislau Rezki
2020-04-01 12:55 ` Michal Hocko
2020-04-01 13:08 ` Uladzislau Rezki
2020-04-01 13:15 ` Michal Hocko
2020-04-01 13:22 ` Uladzislau Rezki
2020-04-01 15:28 ` Michal Hocko
2020-04-01 15:46 ` Uladzislau Rezki
2020-04-01 15:57 ` Paul E. McKenney
2020-04-01 16:10 ` Michal Hocko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200331160117.GA170994@google.com \
--to=joel@joelfernandes.org \
--cc=akpm@linux-foundation.org \
--cc=jiangshanlai@gmail.com \
--cc=josh@joshtriplett.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mgorman@suse.de \
--cc=mhocko@kernel.org \
--cc=neilb@suse.com \
--cc=paulmck@kernel.org \
--cc=peterz@infradead.org \
--cc=rcu@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=vbabka@suse.cz \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.