diff options
| author | Can Celik <ogulcancelik@gmail.com> | 2026-08-19 04:43:28 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-08-19 04:43:28 +0300 |
| commit | a5c69beabfc82d9c3f9563eb821139b2e0f3e14f (patch) | |
| tree | 9b7049e4629913dcab40d985df399acee262b67b /scripts/release_perf_producer.pl | |
| parent | 3667151744e379ac5c8f76d57203b675de8a6ebc (diff) | |
fix(perf): eliminate redundant terminal wake work (#2962)
* fix(perf): eliminate redundant terminal wake work
* fix(perf): harden release benchmark gate
* test(perf): strengthen performance guardrails
Diffstat (limited to 'scripts/release_perf_producer.pl')
| -rwxr-xr-x | scripts/release_perf_producer.pl | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/scripts/release_perf_producer.pl b/scripts/release_perf_producer.pl new file mode 100755 index 00000000..e99973cc --- /dev/null +++ b/scripts/release_perf_producer.pl @@ -0,0 +1,26 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Time::HiRes qw(clock_gettime sleep CLOCK_MONOTONIC); + +my ($rate, $gate, $label) = @ARGV; +die "usage: $0 <rate-hz> <gate-file> <label>\n" + unless defined $rate && defined $gate && defined $label + && length $gate && length $label; +die "rate must be a positive number\n" + unless $rate =~ /\A(?:[0-9]+(?:\.[0-9]*)?|\.[0-9]+)\z/ && $rate > 0; + +sleep 0.01 until -e $gate; +$| = 1; +my $period = 1 / $rate; +my $next = clock_gettime(CLOCK_MONOTONIC); +my $sequence = 0; +while (1) { + $sequence++; + printf "\rbench-output-%08d-%s", $sequence, $label; + $next += $period; + my $now = clock_gettime(CLOCK_MONOTONIC); + $next = $now + $period if $next < $now - $period; + my $remaining = $next - $now; + sleep $remaining if $remaining > 0; +} |
