RE: [PATCH v2] sched/task_group: Re-layout structure to reduce false sharing

From: Deng, Pan
Date: Tue Jun 27 2023 - 10:56:00 EST




> -----Original Message-----
> From: Chen, Yu C <yu.c.chen@xxxxxxxxx>
> Sent: Tuesday, June 27, 2023 4:08 PM
> To: Tim Chen <tim.c.chen@xxxxxxxxxxxxxxx>
> Cc: Lu, Aaron <aaron.lu@xxxxxxxxx>; Peter Zijlstra <peterz@xxxxxxxxxxxxx>;
> Vincent Guittot <vincent.guittot@xxxxxxxxxx>; Ingo Molnar
> <mingo@xxxxxxxxxx>; Juri Lelli <juri.lelli@xxxxxxxxxx>; Deng, Pan
> <pan.deng@xxxxxxxxx>; Chen, Tim C <tim.c.chen@xxxxxxxxx>; linux-
> kernel@xxxxxxxxxxxxxxx; Li, Tianyou <tianyou.li@xxxxxxxxx>; Ma, Yu
> <yu.ma@xxxxxxxxx>; Zhu, Lipeng <lipeng.zhu@xxxxxxxxx>
> Subject: Re: [PATCH v2] sched/task_group: Re-layout structure to reduce
> false sharing
>
> On 2023-06-26 at 10:09:10 -0700, Tim Chen wrote:
> > On Mon, 2023-06-26 at 15:52 +0800, Chen Yu wrote:
> > >
> > >
> > > diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index
> > > ec7b3e0a2b20..067f1310bad2 100644
> > > --- a/kernel/sched/sched.h
> > > +++ b/kernel/sched/sched.h
> > > @@ -1958,8 +1958,10 @@ static inline void set_task_rq(struct
> > > task_struct *p, unsigned int cpu) #endif
> > >
> > > #ifdef CONFIG_RT_GROUP_SCHED
> > > - p->rt.rt_rq = tg->rt_rq[cpu];
> > > - p->rt.parent = tg->rt_se[cpu];
> > > + if (p->sched_class = &rt_sched_class) {
> > > + p->rt.rt_rq = tg->rt_rq[cpu];
> > > + p->rt.parent = tg->rt_se[cpu];
> > > + }
> >
> > If we avoid the assignment for non-rt task, do you see it further
> > improves c2c bounce?
> >
> I did not see noticeable extra throughput improvement from netperf, with
> above change + Aaron's fix + Pan's cacheline alignment adjustment.

Echo Yu.
Cacheline alignment adjustment resolved set_task_rq c2c bounce with load_avg,
The remained cycles of "assignment for non-rt task" is little according to perf record
data, the should be the reason of no extra throughput improvement.

Thanks
Pan
>
> thanks,
> Chenyu