Re: unexpected result with rcu_nocbs option

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

 



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.

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

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






[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