Re: unexpected result with rcu_nocbs option

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Aug 01, 2024 at 01:34:21PM -0400, Olivier Langlois wrote:
> On Thu, 2024-08-01 at 12:32 -0400, Olivier Langlois wrote:
> > > 
> > > This is the kthread that invokes the callbacks for CPU 1, assuming
> > > you
> > > have a non-preemptible kernel (otherwise rcuop/1 for historical
> > > reasons
> > > that seemed like a good idea at the time).  Do you also have an
> > > rcuos/2?
> > > (See the help text for CONFIG_RCU_NOCB_CPU.)
> > 
> > yes I do.
> > 
> > $ ps -eo pid,cpuid,comm | grep rcu
> >       4     0 kworker/R-rcu_gp
> >       8     0 kworker/0:0-rcu_gp
> >      14     0 rcu_tasks_rude_kthread
> >      15     0 rcu_tasks_trace_kthread
> >      17     3 rcu_sched
> >      18     3 rcuog/0
> >      19     0 rcuos/0
> >      20     0 rcu_exp_par_gp_kthread_worker/0
> >      21     3 rcu_exp_gp_kthread_worker
> >      31     3 rcuos/1
> >      38     3 rcuog/2
> >      39     3 rcuos/2
> >      46     0 rcuos/3
> > 
> > and yes my kernel is built without CONFIG_PREEMPT. Since my system
> > consists of 3 isolated cpus out of 4, I have figured that there was
> > not
> > much to preempt for the overhead coming along with the feature.
> > 
> > but here again, I am thankful for the cue... If all else fail,
> > running
> > the setup with CONFIG_PREEMPT enabled to see if it change anything,
> > this might be something interesting to try.
> 
> I have just set rcutree.rcu_nocb_gp_stride=4.
> 
> $ ps -eo pid,cpuid,comm | grep rcu
>       4     0 kworker/R-rcu_gp
>       8     0 kworker/0:0-rcu_gp
>      14     0 rcu_tasks_rude_kthread
>      15     0 rcu_tasks_trace_kthread
>      17     3 rcu_sched
>      18     3 rcuog/0
>      19     0 rcuos/0
>      20     0 rcu_exp_par_gp_kthread_worker/0
>      21     3 rcu_exp_gp_kthread_worker
>      31     3 rcuos/1
>      38     0 rcuos/2
>      45     0 rcuos/3
> 
> this different setting did not eliminate the sporadic IWI and LOC
> interrupts on CPU1
> 
> I think that I have misunderstood the explanation about the RCU kthread
> groups. I thought that this setting would add a rcuog process for CPU1.

This presentation might be helpful:

	https://www.youtube.com/watch?v=5yTf7u5J_kc

> you didn't seem concerned that rcuog was missing for cpu1.
> rcutree.rcu_nocb_gp_stride sets the group size (stride) and there is 1
> rcuog per group. I guess if I wanted to see a rcuog/1, I would need to
> set rcutree.rcu_nocb_gp_stride=1

The grace-period functions of the lead rcuos kthreads have been pushed
off into a smaller number of rcuog kthreads.  Which is why you do not
(repeat, *not*) have an rcuog kthread for each CPU.

> it is probably not best possible setting but it is easy and simple to
> try out to see if it fix my problem.

You probably do not want an rcuog kthread for each CPU, but it cannot
hurt to try it.

							Thanx, Paul




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux