Skip to content

python: judge the CPU throttle by duty cycle instead of wall-clock ratio - #226

Merged
congwang-mk merged 1 commit into
mainfrom
throttle-test-duty-cycle
Sep 13, 2026
Merged

python: judge the CPU throttle by duty cycle instead of wall-clock ratio#226
congwang-mk merged 1 commit into
mainfrom
throttle-test-duty-cycle

Conversation

@congwang-mk

Copy link
Copy Markdown
Contributor

The throttle test measured wall-clock slowdown, which drifts to 3x on hosts with aggressive frequency scaling even though the SIGSTOP/SIGCONT cycle is exact (wall = 2.00x child CPU time in every run). Measure the duty cycle (child CPU time over wall time) instead, which is the quantity the throttle loop actually controls. Reads 0.50 with a spread under 0.01 on an idle host.

The throttle stops the child for half of every 100ms period, and it does
so precisely: wall time is 2.00x the child's CPU time in every measured
run. The wall-clock ratio still drifts to 3x on hosts with aggressive
frequency scaling (amd-pstate powersave here), because a core that idles
every 50ms clocks down and the awake half needs up to 30% more CPU time
for the same work. Measuring child CPU time against wall time isolates
the duty cycle the throttle actually promises; it sits at 0.50 with a
spread under 0.01 on an idle host and is unchanged with four busy cores.

Signed-off-by: Cong Wang <cwang@multikernel.io>
@congwang-mk
congwang-mk merged commit cf6243b into main Sep 13, 2026
17 checks passed
@congwang-mk
congwang-mk deleted the throttle-test-duty-cycle branch September 13, 2026 01:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant