Re: [PATCH v2 00/12] sched: Address schbench regression

From: Shrikanth Hegde
Date: Mon Jul 07 2025 - 14:21:14 EST




On 7/7/25 14:35, Shrikanth Hegde wrote:


On 7/2/25 17:19, Peter Zijlstra wrote:
Hi!

Previous version:

   https://lkml.kernel.org/r/20250520094538.086709102@xxxxxxxxxxxxx


Changes:
  - keep dl_server_stop(), just remove the 'normal' usage of it (juril)
  - have the sched_delayed wake list IPIs do select_task_rq() (vingu)
  - fixed lockdep splat (dietmar)
  - added a few preperatory patches


Patches apply on top of tip/master (which includes the disabling of private futex)
and clm's newidle balance patch (which I'm awaiting vingu's ack on).

Performance is similar to the last version; as tested on my SPR on v6.15 base:



Hi Peter,
Gave this a spin on a machine with 5 cores (SMT8) PowerPC system.

I see significant regression in schbench. let me know if i have to test different
number of threads based on the system size.
Will go through the series and will try a bisect meanwhile.



Used "./schbench -L -m 4 -M auto -t 64 -n 0 -t 60 -i 60" for git bisect.
Also kept HZ=1000


Git bisect points to
# first bad commit: [dc968ba0544889883d0912360dd72d90f674c140] sched: Add ttwu_queue support for delayed tasks

Note:
at commit: "sched: Change ttwu_runnable() vs sched_delayed" there is a small regression.

-------------------------------------
Numbers at different commits:
-------------------------------------
commit 8784fb5fa2e0042fe3b1632d4876e1037b695f56 <<<< baseline
Merge: 11119b0b378a 94b59d5f567a
Author: Borislav Petkov (AMD) <bp@xxxxxxxxx>
Date: Sat Jul 5 19:24:35 2025 +0200

Merge irq/drivers into tip/master

Wakeup Latencies percentiles (usec) runtime 30 (s) (39778894 total samples)
50.0th: 14 (11798914 samples)
90.0th: 27 (15931329 samples)
* 99.0th: 42 (3032865 samples)
99.9th: 64 (346598 samples)

RPS percentiles (requests) runtime 30 (s) (31 total samples)
20.0th: 1394688 (18 samples)
* 50.0th: 1394688 (0 samples)
90.0th: 1398784 (11 samples)

--------------------------------------

commit 88ca74dd6fe5d5b03647afb4698238e4bec3da39 (HEAD) <<< Still good commit
Author: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Date: Wed Jul 2 13:49:34 2025 +0200

sched: Use lock guard in sched_ttwu_pending()

Wakeup Latencies percentiles (usec) runtime 30 (s) (40132792 total samples)
50.0th: 14 (11986044 samples)
90.0th: 27 (15143836 samples)
* 99.0th: 46 (3267133 samples)
99.9th: 72 (333940 samples)
RPS percentiles (requests) runtime 30 (s) (31 total samples)
20.0th: 1402880 (23 samples)
* 50.0th: 1402880 (0 samples)
90.0th: 1406976 (8 samples)

-----------------------------------------------------------------

commit 755d11feca4544b4bc6933dcdef29c41585fa747 <<< There is a small regression.
Author: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Date: Wed Jul 2 13:49:35 2025 +0200

sched: Change ttwu_runnable() vs sched_delayed

Wakeup Latencies percentiles (usec) runtime 30 (s) (39308991 total samples)
50.0th: 18 (12991812 samples)
90.0th: 34 (14381736 samples)
* 99.0th: 56 (3399332 samples)
99.9th: 84 (342508 samples)

RPS percentiles (requests) runtime 30 (s) (31 total samples)
20.0th: 1353728 (21 samples)
* 50.0th: 1353728 (0 samples)
90.0th: 1357824 (10 samples)

-----------------------------------------------------------

commit dc968ba0544889883d0912360dd72d90f674c140 <<<< Major regression
Author: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Date: Wed Jul 2 13:49:36 2025 +0200

sched: Add ttwu_queue support for delayed tasks

Wakeup Latencies percentiles (usec) runtime 30 (s) (19818598 total samples)
50.0th: 111 (5891601 samples)
90.0th: 214 (7947099 samples)
* 99.0th: 283 (1749294 samples)
99.9th: 329 (177336 samples)

RPS percentiles (requests) runtime 30 (s) (31 total samples)
20.0th: 654336 (7 samples)
* 50.0th: 660480 (11 samples)
90.0th: 666624 (11 samples)