Messages in this thread | | | Date | Wed, 20 Mar 2019 08:44:40 -0700 | From | "Paul E. McKenney" <> | Subject | Re: [PATCH v2] rcu: Allow to eliminate softirq processing from rcutree |
| |
On Wed, Mar 20, 2019 at 08:21:46AM -0700, Paul E. McKenney wrote: > On Wed, Mar 20, 2019 at 12:32:19PM +0100, Sebastian Andrzej Siewior wrote: > > On 2019-03-19 12:44:19 [+0100], To Paul E. McKenney wrote: > > > diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c > > > index 0f31b79eb6761..0a719f726e149 100644 > > > --- a/kernel/rcu/tree.c > > > +++ b/kernel/rcu/tree.c > > … > > > +/* > > > + * Spawn per-CPU RCU core processing kthreads. > > > + */ > > > +static int __init rcu_spawn_core_kthreads(void) > > > +{ > > > + int cpu; > > > + > > > + for_each_possible_cpu(cpu) > > > + per_cpu(rcu_data.rcu_cpu_has_work, cpu) = 0; > > > + if (!IS_ENABLED(CONFIG_RCU_BOOST) && !rcu_softirq_enabled) > > > > and this needs to become > > - if (!IS_ENABLED(CONFIG_RCU_BOOST) && !rcu_softirq_enabled) > > + if (!IS_ENABLED(CONFIG_RCU_BOOST) && rcu_softirq_enabled) > > > > With this change and hunk that I just sent to Joel I get thee three RCU > > modes with and without BOOST booted. > > > > Unless there is something (and Paul agrees that the Joel hunk is > > correct) I would post a v3 with those changes included. > > Well, I did get a bunch of grace-period hangs of various sorts when I > ran rcutorture like this: > > tools/testing/selftests/rcutorture/bin/kvm.sh --memory 1G --bootargs rcunosoftirq > > I also got a silent hard hang on TREE03. And an rcutorture forward-progress > failure, which goes along with the grace-period hangs. > > So something does need adjustment. I will try again with this change.
And it does seem to work better. I will give it more intense testing later on, but in the meantime I have merged this change into your earlier patch.
We will see whether or not I am able summon up the courage to push it into v5.2, however. ;-)
Thanx, Paul
> > > + return 0; > > > + WARN_ONCE(smpboot_register_percpu_thread(&rcu_cpu_thread_spec), "%s: Could not start rcub kthread, OOM is now expected behavior\n", __func__); > > > + return 0; > > > +} > > > +early_initcall(rcu_spawn_core_kthreads); > > > > Sebastian > >
| |