On 08/03/2023 11:19, Juri Lelli wrote: > On 01/03/23 17:03, Qais Yousef wrote: >> On 03/01/23 15:26, Juri Lelli wrote: >>> On 01/03/23 12:28, Qais Yousef wrote: >>>> On 03/01/23 08:31, Juri Lelli wrote: >>> >>> ... >>> >>>>> Not ignoring you guys here, but it turns out I'm quite bogged down with >>>>> other stuff at the moment. :/ So, apologies and I'll try to get to this >>>>> asap. Thanks a lot for all your efforts and time reviewing so far! >>>> >>>> Np, I can feel you :-) >>> >>> Eh. :/ >> >> I hope I did not offend. That was meant as no pressure, I understand. > > No offence at all! I meant "we are all on the same boat it seems". :) > >>> BTW, do you have a repro script of some sort handy I might play with? >> >> Sorry no. You'll just need to suspend to ram. I had a simple patch to measure >> the time around the call and trace_printk'ed the result. >> >> I was working on a android phone which just suspends to ram if you turn the >> screen off and disconnect the usb. > > Looks like I could come up with the following > > https://github.com/jlelli/linux.git deadline/rework-cpusets > https://github.com/jlelli/linux/tree/deadline/rework-cpusets > > which I don't think it's at a point that I feel comfortable to propose > as an RFC (not even sure if it actually makes sense), but it survived my > very light testing. > > Could you please take a look and, if it makes some sense in theory, give > it a try on your end? sched/cpuset: Keep track of SCHED_DEADLINE task in cpusets @@ -2474,6 +2494,11 @@ static int cpuset_can_attach(struct cgroup_taskset *tset) goto out_unlock; } + if (dl_task(task)) { + cs->deadline_tasks++; + cpuset_attach_old_cs->deadline_tasks--; + } + This one looks odd. task is NULL here ? If you move a DL task from one cpuset to another this happens now: root@juno:~# ps2 | grep DLN 82 82 140 0 - DLN sugov:0 83 83 140 0 - DLN sugov:1 1615 1616 140 0 - DLN thread0-0 1615 1617 140 0 - DLN thread0-1 1615 1618 140 0 - DLN thread0-2 1615 1619 140 0 - DLN thread0-3 1615 1620 140 0 - DLN thread0-4 1615 1621 140 0 - DLN thread0-5 1615 1622 140 0 - DLN thread0-6 1615 1623 140 0 - DLN thread0-7 1615 1624 140 0 - DLN thread0-8 1615 1625 140 0 - DLN thread0-9 1615 1626 140 0 - DLN thread0-10 1615 1627 140 0 - DLN thread0-11 <-- root@juno:~# cd /sys/fs/cgroup/cpuset root@juno:~# mkdir cs1 root@juno:~# echo 0 > cs1/cpuset.mems root@juno:~# echo 0,3-5 > cs1/cpuset.cpus root@juno:~# echo 1627 > cs1/tasks root@juno:~# [ 154.968900] *** task=0000000000000000 [...]