[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200618203557.GB16976@pc636>
Date: Thu, 18 Jun 2020 22:35:57 +0200
From: Uladzislau Rezki <urezki@...il.com>
To: "Paul E. McKenney" <paulmck@...nel.org>,
Matthew Wilcox <willy@...radead.org>
Cc: Uladzislau Rezki <urezki@...il.com>,
Matthew Wilcox <willy@...radead.org>,
LKML <linux-kernel@...r.kernel.org>, linux-mm@...ck.org,
Andrew Morton <akpm@...ux-foundation.org>,
"Theodore Y . Ts'o" <tytso@....edu>,
Joel Fernandes <joel@...lfernandes.org>,
RCU <rcu@...r.kernel.org>,
Oleksiy Avramchenko <oleksiy.avramchenko@...ymobile.com>
Subject: Re: [PATCH v2 09/16] rcu/tree: Maintain separate array for vmalloc
ptrs
On Thu, Jun 18, 2020 at 12:03:59PM -0700, Paul E. McKenney wrote:
> On Thu, Jun 18, 2020 at 08:34:48PM +0200, Uladzislau Rezki wrote:
> > > > >
> > > > > I suspect that he would like to keep the tracing.
> > > > >
> > > > > It might be worth trying the branches, given that they would be constant
> > > > > and indexed by "i". The compiler might well remove the indirection.
> > > > >
> > > > > The compiler guys brag about doing so, which of course might or might
> > > > > not have any correlation to a given compiler actually doing so. :-/
> > > > >
> > > > > Having a vfree_bulk() might well be useful, but I would feel more
> > > > > confidence in that if there were other callers of kfree_bulk().
> > > > >
> > > > Hmm... I think replacing that with vfree_bulk() is a good idea though.
> > >
> > > In other words, get rid of kfree_bulk() in favor of vfree_bulk()?
> > >
> > kfree_bulk() does not understand vmalloc memory. vfree_bulk() should
> > be implemented to release vmalloc's pointers. On i high level it will
> > be used the same way as kfree_bulk() but for vmalloc ptrs. only.
>
> Ah, I thought that you guys were proposing something that did bulk
> free of both kmalloc and vmalloc memory.
>
I see your point. We could introduce something like:
kvfree_bulk(slab_arra, vmalloc_array);
but i do not have a strong opinion here, even though i tend to
say that it would be odd. Having just vfree_bulk(), i think
would be enough, as a result the code will look like:
<snip>
trace_rcu_invoke_kfree_bulk_callback(
rcu_state.name, bkvhead[i]->nr_records,
bkvhead[i]->records);
if (i == 0)
kfree_bulk(bkvhead[i]->nr_records,
bkvhead[i]->records);
else
vfree_bulk(bkvhead[i]->nr_records,
bkvhead[i]->records);
<snip>
Matthew, what is your thought?
Thanks!
--
Vlad rezki
Powered by blists - more mailing lists