From 68e9eb8772b0eb5d1614d4deaf2f84adf0ad5fe0 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 21 Sep 2026 17:24:31 +0200 Subject: [PATCH 1/3] markers: drop the concept What started out as "stakes", later "markers", is no longer here. It used to be a set value per data-point but it turned out too inflexible and was just never useful. Mean and the moving-mean are the proper values to use. --- scan.pl | 70 +------------------- single.sh | 2 - stakes.conf | 182 ---------------------------------------------------- 3 files changed, 2 insertions(+), 252 deletions(-) delete mode 100644 stakes.conf diff --git a/scan.pl b/scan.pl index 6a20c48..ae06d91 100755 --- a/scan.pl +++ b/scan.pl @@ -12,9 +12,6 @@ # entries to store in each CSV my $roundspergraph = 100; -# Show deltas at the top when mean is this many percent diff vs marker -my $deltathreshold = 0.7; - # Use these many values for the moving average my $movingaverage = 25; @@ -296,26 +293,6 @@ sub storelttb { return $p_value; } -# Figure out the median marker per round (commit) -sub markerpercommit { - my ($filename, $aref) = @_; - my %sta; - my %med; - for my $key (sort keys %$aref) { - my $commit = $git{$key}; - my $bar; - if($marker{$key, $filename, 'val'}) { - # there is a specific marker for this test in this build - $bar = $marker{$key, $filename, 'val'}; - } - $sta{$commit} .= "$bar " if($bar); - } - for my $c(keys %sta) { - $med{$c} = median(split(/ /, $sta{$c})); - } - return %med; -} - sub gencsv { my ($filename, $aref) = @_; my $index = 0; @@ -324,11 +301,8 @@ sub gencsv { my @allv; my $prevc = ""; my @vals; - my $bar = ""; my @o; - my %markers = markerpercommit($filename, $aref); - for my $key (sort keys %$aref) { my $commit = $git{$key}; my $v; @@ -364,17 +338,9 @@ sub gencsv { } $movingav = mean(@movingav); - # there is a specific marker for this test in this build - $bar = $markers{$prevc}; - - if(($bar > 1.2 * $v) || ($bar < 0.8 * $v)) { - # bad bar, ignore - $bar = ""; - } - push @o, sprintf "%u;%s;%s;%s;%s;%s;%s;%.2f\n", $index++, $gitalias{$prevc}, - $min, $v, $max, $movingav, $bar, mean(@allv); + $min, $v, $max, $movingav, "", mean(@allv); $prevc = $commit; } @@ -386,15 +352,9 @@ sub gencsv { shift @movingav; } $movingav = mean(@movingav); - # there is a specific marker for this test in this build - $bar = $markers{$prevc}; - if(($bar > 1.2 * $v) || ($bar < 0.8 * $v)) { - # bad bar, ignore - $bar = ""; - } push @o, sprintf "%u;%s;%s;%s;%s;%s;%s;%.2f\n", $index++, $gitalias{$prevc}, - $min, $v, $max, $movingav, $bar, mean(@allv); + $min, $v, $max, $movingav, "", mean(@allv); return @o; } @@ -593,7 +553,6 @@ sub show { my ($p0, $p25, $p50, $p75, $p100); my $mean; my $decimals = $unit2dec{$unit}; - my $bar = $marker{"default", $filename, 'val'}; my @out; push @out, "

$name ($filename)

"; push @out, "$which is better, $unit\n"; @@ -638,25 +597,6 @@ sub show { push @out, sprintf ", %.2f%% of mean", ($p100 - $p0)/2 * 100 / $mean; } push @out, "\n"; - if($bar) { - my $avdelta; - my $p50delta; - push @out, sprintf "\nMarker: %s %s ('marker' is a set typical value for this test)\n", - $marker{"default", $filename, 'date'}, - $marker{"default", $filename, 'desc'}; - push @out, sprintf " %s\n", showval($bar, $decimals); - $avdelta = $bar - $mean; - push @out, sprintf " %s from mean, (%.2f%%) %s\n", - showval($avdelta, $decimals), - ($avdelta * 100) / $mean, - deltaopinion($avdelta, $which); - $p50delta = $bar - $p50; - push @out, sprintf " %s from P50, (%.2f%%) %s\n", - showval($p50delta, $decimals), - ($p50delta * 100) / $p50, - deltaopinion($p50delta, $which); - } - push @out, "\n"; my $suffix = int(rand(100000000)); @@ -1004,9 +944,6 @@ sub single { elsif(/^confopts: (.*)/) { push @confopts, $1; } - elsif(/^stakes: (.*)/) { - push @markers, $1; - } elsif(/^structs: (.*)\t(\d+)\t\d*/) { my ($struct, $size) = ($1,$2); if($struct eq "Curl_easy") { @@ -1113,9 +1050,6 @@ sub single { } } -# Load the current markers. Each build has its own set. -loadmarkers("stakes.conf"); - for my $l (sort @logs) { single("$logdir/$l"); } diff --git a/single.sh b/single.sh index c18b37e..2cc586c 100755 --- a/single.sh +++ b/single.sh @@ -123,6 +123,4 @@ date "$PREF ----- date parser -----" date "$PREF ----- number parser -----" ./tests/perf/perf numparser | sed 's/^/numparser: /' -# Remember the markers when this ran -cat $PERFDIR/stakes.conf | sed 's/^/stakes: /' date "$PREF done" diff --git a/stakes.conf b/stakes.conf deleted file mode 100644 index 4a65548..0000000 --- a/stakes.conf +++ /dev/null @@ -1,182 +0,0 @@ -# This file sets "markers" for the various tests -# -# A marker is just an ideal value for a specific test, using a set build on a -# specific machine at a specific time. -# -# Markers are used to compare new runs against. Markers can and should be -# updated when there is a reason to. -# -# Each marker has a value, a date and an optional description -# -# The markers are set per test. Each test is identified by its unique name. -# That name is disaplayed within parenteses in the test section subtitles. -# -[100G-speed] - val: 5531140747 - date: 2026-08-15 - desc: adjusted - -[single-numallocs] - val: 99 - date: 2026-08-18 - desc: smaller - -[single-maxalloc] - val: 127974 - date: 2026-09-03 - desc: optimizations - -[h1parallel-speed] - val: 3550345833 - date: 2026-08-23 - desc: adjusted - -[h2parallel-speed] - val: 2588820345 - date: 2026-08-13 - desc: adjusted - -[h3parallel-speed] - val: 1098816436 - date: 2026-08-11 - desc: initial - -[h1parallel-mem] - val: 22269952 - date: 2026-08-15 - desc: adjusted - -[h2parallel-mem] - val: 14516224 - date: 2026-08-14 - desc: adjusted - -[h3parallel-mem] - val: 16025600 - date: 2026-08-15 - desc: initial - -[h1parallel-upload-speed] - val: 2476120686 - date: 2026-08-15 - desc: adjust - -[h2parallel-upload-speed] - val: 1634397715 - date: 2026-08-23 - desc: ajusted - -[h3parallel-upload-speed] - val: 638021337 - date: 2026-08-27 - desc: improved - -[h1parallel-upload-mem] - val: 23076864 - date: 2026-08-17 - desc: adjusted - -[h2parallel-upload-mem] - val: 21196967 - date: 2026-08-11 - desc: initial - -[h3parallel-upload-mem] - val: 40370995 - date: 2026-08-27 - desc: improved - -[h1-requests] - val: 31096 - date: 2026-08-11 - desc: early - -[h2-requests] - val: 30718 - date: 2026-08-15 - desc: adjust - -[h3-requests] - val: 28920 - date: 2026-08-11 - desc: early - -[h1-req-mem] - val: 19825459 - date: 2026-09-03 - desc: adjust - -[h2-req-mem] - val: 13330887 - date: 2026-08-13 - desc: after rss-max - -[h3-req-mem] - val: 13864330 - date: 2026-08-13 - desc: after rss-max - -[easy-handle] - val: 3424 - date: 2026-08-22 - desc: strings redone - -[multi-handle] - val: 672 - date: 2026-09-05 - desc: work - -[connectdata] - val: 760 - date: 2026-09-05 - desc: shrink - -[h1rate-speed] - val: 5120000 - date: 2026-08-17 - desc: exact - -[h1rate-cpu] - val: 2.721 - date: 2026-08-17 - desc: after 25 runs - -[b64enc] - val: 208 - date: 2026-09-03 - desc: initial - -[b64dec] - val: 352 - date: 2026-09-05 - desc: adjusted - -[snprintf] - val: 426 - date: 2026-09-05 - desc: optimized - -[urlparser] - val: 360 - date: 2026-09-01 - desc: initial - -[urlencode] - val: 389 - date: 2026-09-04 - desc: optimized - -[urldecode] - val: 342 - date: 2026-09-04 - desc: optimized - -[simplef] - val: 212 - date: 2026-09-07 - desc: init - -[maprintf] - val: 292 - date: 2026-09-07 - desc: init From df40fd464526f50a087ae389c9e41a530efc398d Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 21 Sep 2026 17:28:29 +0200 Subject: [PATCH 2/3] fixup remove the "marker" from the plot --- graph.plot | 4 ---- 1 file changed, 4 deletions(-) diff --git a/graph.plot b/graph.plot index 731bb77..1d3784b 100644 --- a/graph.plot +++ b/graph.plot @@ -22,9 +22,6 @@ set style line 2 linecolor rgb '#e41a1c' linetype 2 linewidth 2 dashtype 2 # Style for the moving mean set style line 3 linecolor rgb '#4060a0' linetype 1 linewidth 2 dashtype 3 -# Style for the marker -set style line 4 linecolor rgb '#a0a000' linetype 1 linewidth 2 dashtype 4 - set grid unset border @@ -42,7 +39,6 @@ set format y "%.2s %c" set datafile separator ";" plot ARG1 using 1:6 with lines linestyle 3 title "25-round mean", \ - ARG1 using 1:7 with lines linestyle 4 title "marker", \ ARG1 using 1:8 with lines linestyle 2 title "mean", \ ARG1 using 1:3 with lines linestyle 5 title "min", \ ARG1 using 1:5 with lines linestyle 6 title "max", \ From bfaba3403b3b209383ca39afeaed41cdb6b37e13 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 21 Sep 2026 23:27:27 +0200 Subject: [PATCH 3/3] fixup remove more leftovers --- scan.pl | 38 -------------------------------------- 1 file changed, 38 deletions(-) diff --git a/scan.pl b/scan.pl index ae06d91..36e1135 100755 --- a/scan.pl +++ b/scan.pl @@ -738,39 +738,6 @@ sub scorecard_limitrate { return (0+$speed, 0+$cpu); } -sub loadmarkers { - my ($file) = @_; - my $name; - my $date; - my $desc; - my $val; - open(S, "<$file") || - die "found no $file"; - my @all = ; - close(S); - storemarkers("default", @all); -} - -sub storemarkers { - my ($build, @all) = @_; - for(@all) { - if(/^ *#/) { - # comment, skip - next; - } - if(/^\[([^ ]*)]/) { - $name = $1; - } - elsif(/^ *([a-z-]*): (.*)/) { - my ($key, $val) = ($1, $2); - if($key !~ /^(val|date|desc)/) { - die "illegal keyword in $build: $key"; - } - $marker{$build, $name, $key} = $val; - } - } -} - sub builddetails { my ($numrounds) = @_; open(G, "<$outdir/git-hashes") || return; @@ -849,7 +816,6 @@ sub single { my @h1puj; my @h2puj; my @h3puj; - my @markers; my @h1rate; my $git = ""; my $scan = ""; @@ -959,10 +925,6 @@ sub single { } close(F); - if($markers[0]) { - storemarkers($scan, @markers); - } - # Downloads if($h1pj[0]) { my ($speed, $mem, $cpu) = scorecard_dldata(@h1pj);