Re: [PATCH 1/1] rcu/tree: add emergency pool for headless case

From: Uladzislau Rezki
Date: Sat Apr 04 2020 - 15:10:29 EST


On Fri, Apr 03, 2020 at 12:14:19PM -0700, Paul E. McKenney wrote:
> On Fri, Apr 03, 2020 at 07:30:51PM +0200, Uladzislau Rezki (Sony) wrote:
> > Maintain an emergency pool for each CPU with some
> > extra objects. There is read-only sysfs attribute,
> > the name is "rcu_nr_emergency_objs". It reflects
> > the size of the pool. As for now the default value
> > is 3.
> >
> > The pool is populated when low memory condition is
> > detected. Please note it is only for headless case
> > it means when the regular SLAB is not able to serve
> > any request, the pool is used.
> >
> > Signed-off-by: Uladzislau Rezki (Sony) <urezki@xxxxxxxxx>
> > ---
> > kernel/rcu/tree.c | 133 +++++++++++++++++++++++++++++++++-------------
> > 1 file changed, 97 insertions(+), 36 deletions(-)
> >
> > diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
> > index 5e26145e9ead..f9f1f935ab0b 100644
> > --- a/kernel/rcu/tree.c
> > +++ b/kernel/rcu/tree.c
> > @@ -114,6 +114,14 @@ int rcu_num_lvls __read_mostly = RCU_NUM_LVLS;
> > int rcu_kfree_nowarn;
> > module_param(rcu_kfree_nowarn, int, 0444);
> >
> > +/*
> > + * For headless variant. Under memory pressure an
> > + * emergency pool can be used if the regular SLAB
> > + * is not able to serve some memory for us.
> > + */
> > +int rcu_nr_emergency_objs = 3;
> > +module_param(rcu_nr_emergency_objs, int, 0444);
>
> Please document this in Documentation/admin-guide/kernel-parameters.txt.
>
Will do that, Paul!

Thanks for good point :)

--
Vlad Rezki