Re: [RFC PATCH] sched/feec: Simplify the traversal of pd'cpus

From: Xuewen Yan
Date: Wed Aug 20 2025 - 07:09:49 EST


On Tue, Aug 19, 2025 at 10:01 PM Dietmar Eggemann
<dietmar.eggemann@xxxxxxx> wrote:
>
> On 19.08.25 03:02, Xuewen Yan wrote:
> > On Mon, Aug 18, 2025 at 11:24 PM Dietmar Eggemann
> > <dietmar.eggemann@xxxxxxx> wrote:
> >>
> >> On 18.08.25 12:05, Xuewen Yan wrote:
> >>> On Fri, Aug 15, 2025 at 9:01 PM Dietmar Eggemann
> >>> <dietmar.eggemann@xxxxxxx> wrote:
> >>>>
> >>>> On 14.08.25 10:52, Xuewen Yan wrote:
> >>>>> Hi Dietmar,
> >>>>>
> >>>>> On Thu, Aug 14, 2025 at 4:46 PM Dietmar Eggemann
> >>>>> <dietmar.eggemann@xxxxxxx> wrote:
> >>>>>>
> >>>>>> On 12.08.25 10:33, Xuewen Yan wrote:
>
> [...]
>
> >> Looks like we do need also the sd cpumask here.
> >>
> >> Consider this tri-gear system:
> >>
> >> # cat /sys/devices/system/cpu/cpu*/cpu_capacity
> >> 160
> >> 160
> >> 160
> >> 160
> >> 498
> >> 498
> >> 1024
> >> 1024
> >>
> >> and 2 exclusive cpusets cs1={0-1,4,6} and cs2={2-3,5,7}, so EAS is
> >> possible in all 3 root_domains (/, /cs1, /cs2):
> >
> > Isn't your CPU an ARM Dynamiq architecture?
> > In my understanding, for Dynamiq arch, there is only one MC domain...
> > Did I miss something?
>
> Ah, should have mentioned that this is qemu. I used a dts file
> (qemu-system-aarch64 ... -dtb foo.dtb) with individual
> 'next-level-cache' entries for the CPUs {0-3}, {4-5} and {6-7} so that's
> why you see MC & PKG. Removing those gives you a system with only MC:

Thank you for your patience in explaining:)
Looks like we do need also the sd cpumask here.

Thanks!

>
> [ 106.986828] CPU2 attaching sched-domain(s):
> [ 106.987846] domain-0: span=2-3,5,7 level=MC
> [ 106.987941] groups: 2:{ span=2 cap=159 }, 3:{ span=3 cap=154 }, 5:{
> span=5 cap=495 }, 7:{ span=7 cap=991 }
> [ 106.988842] CPU3 attaching sched-domain(s):
> [ 106.989096] domain-0: span=2-3,5,7 level=MC
> [ 106.989136] groups: 3:{ span=3 cap=154 }, 5:{ span=5 cap=495 }, 7:{
> span=7 cap=991 }, 2:{ span=2 cap=159 }
> [ 106.989679] CPU5 attaching sched-domain(s):
> [ 106.989692] domain-0: span=2-3,5,7 level=MC
> [ 106.989773] groups: 5:{ span=5 cap=495 }, 7:{ span=7 cap=991 }, 2:{
> span=2 cap=159 }, 3:{ span=3 cap=154 }
> [ 106.990466] CPU7 attaching sched-domain(s):
> [ 106.990482] domain-0: span=2-3,5,7 level=MC
> [ 106.990632] groups: 7:{ span=7 cap=991 }, 2:{ span=2 cap=159 }, 3:{
> span=3 cap=154 }, 5:{ span=5 cap=495 }
> [ 106.997604] root domain span: 2-3,5,7
> [ 106.998267] CPU0 attaching sched-domain(s):
> [ 106.998278] domain-0: span=0-1,4,6 level=MC
> [ 106.998295] groups: 0:{ span=0 cap=159 }, 1:{ span=1 cap=160 }, 4:{
> span=4 cap=496 }, 6:{ span=6 cap=995 }
> [ 106.998584] CPU1 attaching sched-domain(s):
> [ 106.998592] domain-0: span=0-1,4,6 level=MC
> [ 106.998604] groups: 1:{ span=1 cap=160 }, 4:{ span=4 cap=496 }, 6:{
> span=6 cap=995 }, 0:{ span=0 cap=159 }
> [ 106.999477] CPU4 attaching sched-domain(s):
> [ 106.999487] domain-0: span=0-1,4,6 level=MC
> [ 106.999504] groups: 4:{ span=4 cap=496 }, 6:{ span=6 cap=995 }, 0:{
> span=0 cap=159 }, 1:{ span=1 cap=160 }
> [ 107.000070] CPU6 attaching sched-domain(s):
> [ 107.000082] domain-0: span=0-1,4,6 level=MC
> [ 107.000095] groups: 6:{ span=6 cap=995 }, 0:{ span=0 cap=159 }, 1:{
> span=1 cap=160 }, 4:{ span=4 cap=496 }
> [ 107.000721] root domain span: 0-1,4,6
> [ 107.001152] root_domain 2-3,5,7: pd6:{ cpus=6-7 nr_pstate=4 } pd4:{
> cpus=4-5 nr_pstate=4 } pd0:{ cpus=0-3 nr_pstate=4 }
> [ 107.001869] root_domain 0-1,4,6: pd6:{ cpus=6-7 nr_pstate=4 } pd4:{
> cpus=4-5 nr_pstate=4 } pd0:{ cpus=0-3 nr_pstate=4 }
>
> [...]