[SRU][N][PATCH 0/2] Performance degrades rapidly when spawning more processes to run benchmark

Gerald Yang gerald.yang at canonical.com
Thu Sep 4 08:06:47 UTC 2025


BugLink: https://bugs.launchpad.net/bugs/2122006

[Impact]

When running erlang benchmark:
https://github.com/jessestimpson/ets_load_benchmark_public.git

Spwan more processes, the performance drops rapidly compare to 1 process,
this issue was introduced on 5.18 kernel, 5.17 doesn't have this issue.

Description of benchmark:
n = number of processes
f = % of performance relative to n = 1
r = raw rate,
t = time

5.17 benchmark result:
n,f,r,t
1,1.0,9120867,5.003
2,0.5061354891733854,4616394,5.001
4,0.08950992302914515,816408,5.006
8,0.01184452801350521,108032,5.098
16,0.010647457942399005,97114,5.182
32,0.010625520850290194,96913,5.672
64,0.010831249272826072,98790,12.418
128,0.010497878077414494,95749,27.061
256,0.010104340575500272,92160,57.469

5.18 benchmark result:
n,f,r,t
1,1.0,9382016,5.004
2,0.4953986691824555,4647838,5.001
4,0.10023648870773996,940420,5.005
8,0.008932429179095262,83804,6.195
16,0.0018372315021540654,17236,9.243
32,9.585592402608068e-4,8993,22.119
64,8.145250697989274e-4,7641,91.865
128,7.778153535259693e-4,7297,278.728
256,7.679856301480621e-4,7205,633.869

This can be reproduced on noble 6.8 kernel:
n,f,r,t
1,1.0,9319448,5.005
2,0.48816914209026224,4549467,5.001
4,0.08824585392034001,822402,5.004
8,0.0023127649346702354,21553,6.444
16,0.0010507673678827175,9792,10.905
32,8.959956782593959e-4,8350,22.648
64,0.0013944409643284223,12995,6.551
128,7.658929844955412e-4,7137,294.023
256,7.462181950964878e-4,6954,619.978

this commit has just merged into this plucky 6.14 SRU cycle

[Fix]

Upstream fixes this issue in cpuidle governor:
commit 85975daeaa4d6ec560bfcd354fc9c08ad7f38888
Author: Rafael J. Wysocki <rafael.j.wysocki at intel.com>
Date: Thu Feb 6 15:29:05 2025 +0100

    cpuidle: menu: Avoid discarding useful information

and also a follwoing commit to fix the above commit:
commit fa3fa55de0d6177fdcaf6fc254f13cc8f33c3eed
Author: Rafael J. Wysocki <rafael.j.wysocki at intel.com>
Date: Mon Aug 11 17:03:11 2025 +0200

    cpuidle: governors: menu: Avoid using invalid recent intervals data

    Marc has reported that commit 85975daeaa4d ("cpuidle: menu: Avoid
    discarding useful information") caused the number of wakeup interrupts
    to increase on an idle system [1], which was not expected to happen
    after merely allowing shallower idle states to be selected by the
    governor in some cases.

[Test Plan]

Use the following steps can easily reproduce the issue:

sudo apt install erlang-base -y
git clone https://github.com/jessestimpson/ets_load_benchmark_public.git
cd ets_load_benchmark_public
erlc ets_load_benchmark.erl
erl -noshell -s ets_load_benchmark -eval 'init:stop().'

[Where problems could occur]

These patches fix the cpuidle governor issue and are verified by upstream,
if something really goes wrong, it could only affect cpu idle policy and cause more power consumption.k

Rafael J. Wysocki (2):
  cpuidle: menu: Avoid discarding useful information
  cpuidle: governors: menu: Avoid using invalid recent intervals data

 drivers/cpuidle/governors/menu.c | 34 +++++++++++++++++++++++++++-----
 1 file changed, 29 insertions(+), 5 deletions(-)

-- 
2.43.0




More information about the kernel-team mailing list