RE: [PATCH v2 0/2] sched/fair: Randomize equally shallow idle CPU picks
From: Doug Smythies
Date: Thu Sep 24 2026 - 20:04:09 EST
On 2026.09.17 08:39 Christian Loehle wrote:
> Concurrent slow-path selectors can converge on the same idle CPU before
> either task is enqueued. Remove the idle-recency preference and randomize
> equal-latency choices in a single scan.
>
> The testing platform is a 160-CPU, dual-socket Altra with unusually large
> 80-CPU candidate groups at NUMA level.
>
> Median stress-ng throughput (bogo ops/s):
>
> --fork --fork-max Baseline Patched Change
> ------------------------------------------------------
> 1 1 779.19 829.82 +6.50%
> 16 1 5070.95 5277.62 +4.08%
> 16 4 7692.64 7963.30 +3.52%
> 32 1 8662.82 8733.79 +0.82%
> 64 1 11880.47 12001.01 +1.01%
...
I tried this patch set on my test computer with a Intel
i5-10600K processor. 6 cores, 12 CPUs.
Kernel 7.3-rc3 = baseline
+ this patch set = cl-rand
Conclusion: In general, this patch set was a 1 to 3% improvement.
Note: Test repeatability was a struggle. In the end 2 methods
were used:
1.) flush memory before each test.
2.) to achieve steady state dwell for 15 minutes then use the data afterwards.
Test 1:
9 forks, 60 seconds per test, 25 tests:
Baseline average 65867.05 bogo ops/sec
cl-rand average: 66832.20 bogo ops/sec
change: +1.47%
see also attached graph repeat.png
Test 2: (180 seconds per test)
Forks baseline cl-rand change
1 12071.48 12367.39 2.45%
2 22602.59 23497.74 3.96%
3 32213.33 32462.99 0.78%
4 39746.02 40087.31 0.86%
5 45360.23 47015.42 3.65%
6 54130.07 56579.27 4.52%
7 56944.66 59386.18 4.29%
8 62117.57 63722.8 2.58%
9 62897.63 66471.27 5.68%
10 68009.88 68252.56 0.36%
11 69676.68 71783.96 3.02%
12 75560.96 76041.47 0.64%
13 79663.55 83064.74 4.27%
14 84745.02 85474.34 0.86%
15 85057.97 87075.07 2.37%
16 84897.81 87075.36 2.56%
17 84934.24 86977.66 2.41%
18 84857.44 87068.16 2.61%
19 84300.27 86398.89 2.49%
20 82743.13 86399.7 4.42%
21 84262.03 83751.36 -0.61%
22 83497.87 85038.63 1.85%
23 82650.21 85242.53 3.14%
24 82105.6 84055.71 2.38%
25 82526.08 83319.76 0.96%
Test 3:
9 forks, 3600 second dwell test, data every 20 seconds.
Averages calculated from 17 to 56.67 minutes into test.
The first 17 minutes of data was not used.
Baseline average 59740.52 bogo ops/sec
cl-rand average: 61199.35 bogo ops/sec
change: +2.44%
see also attached graph dwell.png
Test 4:
Concurrent random hdd disk reads from a 500 Gigabyte file.
As the requested jobs per second begins to backup
the patched kernel does better.
See the attached graph actual.png
... Doug
Attachment:
repeat.png
Description: PNG image
Attachment:
dwell.png
Description: PNG image
Attachment:
actual.png
Description: PNG image