On 2025.11.29 15:46 Christian Loehle wrote: > On 11/16/25 12:31, Rafael J. Wysocki wrote: >> Hi, >> >> This series is based on >> >> https://lore.kernel.org/linux-pm/6228387.lOV4Wx5bFT@rafael.j.wysocki/ >> >> and the previous teo updates sent recently. >> >> It fixes a reverse condition in teo_update() (first patch) and quite >> dramatically simplifies the "intercepts" logic in teo_select() (second >> patch). >> > > FWIW nothing note worthy in my tests, as expected. > Tested-by: Christian Loehle <christian.loehle@arm.com> Same here. Most results were within +/- 3%. I made a mistake and didn't include one patch, and had to go back and re-do many tests. No need to read further unless you want to. System: Processor: Intel(R) Core(TM) i5-10600K CPU @ 4.10GHz, 6 cores 12 CPUs. CPU frequency scaling driver: intel_pstate; Governor performance. HWP: Enabled. Kernel: 6.18-rc4, to be able to re-use some previous test results. Patch legend: 0ed8b4d13e03 (HEAD -> ver-2) cpuidle: governors: teo: Rework the handling of tick wakeups <<< ver3 2ae756ea9507 sched/idle: disable tick in idle=poll idle entry <<< ver2 5a0b904e467b cpuidle: governors: teo: Simplify intercepts-based state lookup 390ef7a94166 cpuidle: governors: teo: Fix tick_intercepts handling in teo_update() fcfd905b2d92 cpuidle: governors: teo: Decay metrics below DECAY_SHIFT threshold <<< rc4-rjw 870005165dd8 cpuidle: governors: teo: Use s64 consistently in teo_update() 538e62c2304b cpuidle: governors: teo: Drop redundant function parameter 4c5e9f0c553b cpuidle: governors: teo: Drop incorrect target residency check 6146a0f1dfae (tag: v6.18-rc4, origin/master, origin/HEAD, master) Linux 6.18-rc4 <<< rc4-teo Interesting result 1: 6 ping pong pairs, no work per token stop, 105,000,000 loops: rc4-teo: Average: 5.53143 uSec per loop rc4-rjw: Average: 5.50305 uSec per loop -0.51% (Better) ver2: Average: 4.71545 uSec per loop -14.75% ver3: Average: 4.75843 uSec per loop -13.97% Idle state 0 residency goes from about <1% for the first 2 tests to about 18% for the last 2 tests. Idle state 1 residency goes from about 27% for the first 2 tests to about 0% for the last 2 tests. Interesting result 2: 12 CPU token passing ring with a specific work packet per token stop: Times are uSec/loop. rc4-teo: test runs: 286 average 1407.054587 reference max 1504.4721 min 1191.2274 range 313.2447 rc4-rjw: test runs: 606 average 1436.159564 +2.07% (worse) max 1528.4379 min 1197.0521 range 331.3858 ver2: test runs: 256 average 1477.551961 +5.01% (worse) max 1537.4085 min 1295.7111 range 241.6974 ver3: test runs: 156 average 1161.19326 -17.47% (better) max 1241.5409 min 1152.9638 range 88.5771 Idle state 1 Residency is about 9% for ver3 verses 3.5% for ver2 " cpuidle: governors: teo: Rework the handling of tick wakeups" pushes out the idle state transition as a function of the work packet per stop. This operating point was cherry picked from a test that varied work per token stop over a wide range. Interesting result 3: adrestia test: While the actual test results were uneventful, looking at the tail of the wakeup time histogram revealed a tightening with ver3. Such an improvement wouldn't show up in the 90th percentile, witch is declared as the wakeup latency. See the attached detail graph. For completeness, results (times are uSec): rc4-teo-2.txt: entries: 2000000 min: 2417 ave: 2655 90th percentile: 2739 max: 347648 rc4-teo.txt: entries: 2000000 min: 2433 ave: 2649 90th percentile: 2745 max: 12339 ver2.txt: entries: 2000000 min: 2302 ave: 2630 90th percentile: 2724 max: 12382 ver3.txt entries: 2000000 min: 2450 ave: 2652 90th percentile: 2727 max: 12297 ver3-2.txt: entries: 2000000 min: 2409 ave: 2668 90th percentile: 2751 max: 13663 ver3-3.txt: entries: 2000000 min: 2391 ave: 2644 90th percentile: 2714 max: 11554 ... Doug
© 2016 - 2025 Red Hat, Inc.