From f2efe414ca7a245232bd2f87ecd185c6f87496e7 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Thu, 15 Jan 2026 17:02:27 -0500 Subject: [PATCH 01/13] improve scaling script --- libexec/scaling | 2 +- libexec/scaling.gpl | 86 ++++++++++++++++++++++++++++++++------------- libexec/taskset | 2 ++ 3 files changed, 65 insertions(+), 25 deletions(-) create mode 100755 libexec/taskset diff --git a/libexec/scaling b/libexec/scaling index a2fd8a072d..2afc13666b 100755 --- a/libexec/scaling +++ b/libexec/scaling @@ -82,7 +82,7 @@ def table(benchmarks): for b in benchmarks: threads,benchmark = b[0],b[1] row = [threads] - for k in ['Event','Avg','Total','Orch','Services']: + for k in ['Avg','Total','Orch','Services']: if k in benchmark: if k == 'Services': row.extend(benchmark[k].values()) diff --git a/libexec/scaling.gpl b/libexec/scaling.gpl index c858a734ce..b0ea5f6c03 100644 --- a/libexec/scaling.gpl +++ b/libexec/scaling.gpl @@ -1,4 +1,17 @@ +# parse command line arguments: +datafile = 'scaling.txt' +if (ARGC > 0) { + if (ARGV[1] eq "-u") { + uberMode = 1 + if (ARGC > 1) { + datafile = ARGV[ARGC] + } + } else { + datafile = ARGV[ARGC] + } +} + set terminal svg size 1000,700 set multiplot layout 2,2 @@ -9,43 +22,68 @@ set xlabel 'Threads' set ylabel 'Event Time [ms]' set yrange [0:] -set title 'I/O' -set key outside right width 2 -plot 'scaling.txt' \ - using 1:(($2*$1)) pt 7 with points title columnhead(2) ,\ - '' using 1:((column($#))) pt 7 with points title 'Total' ,\ - '' using 1:($6) pt 7 with points title 'Reader' ,\ - '' using 1:((column($#-1))) pt 7 with points title 'Writer' ,\ - '' using 1:(($6*$1)) pt 7 with points title 'IOver' ,\ +set key outside top center horizontal +set size 0.4,0.5 +set origin 0.0,0.5 +plot datafile \ + using 1:((column($#))) pt 7 with points title 'Total' ,\ + '' using 1:($5) pt 9 with points title 'Reader' ,\ + '' using 1:((column($#-1))) pt 9 with points title 'Writer' ,\ + '' using 1:(($5*$1)) pt 7 with points title 'IOver' + #'' using 1:(($2*$1)) pt 7 with points title columnhead(2) +set size 0.6,1.0 +set origin 0.4,0.0 set title 'Engines' - -# data-ai-uber.yml: -#plot 'scaling.txt' \ +set key outside right vertical +#if (exists("uberMode")) { +# plot datafile \ # using 1:($7) pt 7 with points title columnhead(7) ,\ # '' using 1:($8) pt 7 with points title columnhead(8) ,\ # '' using 1:($9) pt 7 with points title columnhead(9) ,\ # '' using 1:($10) pt 7 with points title columnhead(10) ,\ # '' using 1:($11) pt 7 with points title columnhead(11) ,\ # '' using 1:($12) pt 7 with points title columnhead(12) ,\ - -# rgd-clarode.yml: -plot 'scaling.txt' \ - using 1:($7) pt 7 with points title columnhead(7) ,\ - '' using 1:($14) pt 7 with points title columnhead(14) ,\ - '' using 1:($15) pt 7 with points title columnhead(15) ,\ - '' using 1:($16) pt 7 with points title columnhead(16) ,\ +#} else { + plot datafile \ + using 1:($6) pt 7 with points title columnhead(6) ,\ + '' using 1:($7) pt 7 with points title columnhead(7) ,\ + '' using 1:($8) pt 7 with points title columnhead(8) ,\ + '' using 1:($9) pt 7 with points title columnhead(9) ,\ + '' using 1:($10) pt 7 with points title columnhead(10) ,\ + '' using 1:($11) pt 7 with points title columnhead(11) ,\ + '' using 1:($12) pt 7 with points title columnhead(12) ,\ + '' using 1:($13) pt 7 with points title columnhead(13) ,\ + '' using 1:($14) pt 8 with points title columnhead(14) ,\ + '' using 1:($15) pt 8 with points title columnhead(15) ,\ + '' using 1:($16) pt 8 with points title columnhead(16) ,\ + '' using 1:($17) pt 8 with points title columnhead(17) ,\ + '' using 1:($18) pt 8 with points title columnhead(18) ,\ + '' using 1:($19) pt 8 with points title columnhead(19) ,\ + '' using 1:($20) pt 8 with points title columnhead(20) ,\ + '' using 1:($21) pt 8 with points title columnhead(21) ,\ + '' using 1:($22) pt 9 with points title columnhead(22) ,\ + '' using 1:($23) pt 9 with points title columnhead(23) ,\ + '' using 1:($24) pt 9 with points title columnhead(24) ,\ + '' using 1:($25) pt 9 with points title columnhead(25) ,\ '' using 1:($26) pt 9 with points title columnhead(26) ,\ - '' using 1:($19) pt 7 with points title columnhead(19) ,\ + '' using 1:($27) pt 9 with points title columnhead(27) ,\ '' using 1:($28) pt 9 with points title columnhead(28) ,\ - '' using 1:($33) pt 9 with points title columnhead(33) ,\ + '' using 1:($29) pt 9 with points title columnhead(29) ,\ + '' using 1:($30) pt 6 with points title columnhead(30) ,\ + '' using 1:($31) pt 6 with points title columnhead(31) ,\ + '' using 1:($32) pt 6 with points title columnhead(32) ,\ + '' using 1:($33) pt 6 with points title columnhead(33) +#} set title 'Throughput' set ylabel 'Rate [Hz]' -set size 0.7,0.5 -set origin 0.12,0 +set size 0.4,0.5 +set origin 0,0 +#set size 0.7,0.5 +#set origin 0.12,0 unset key f(x) = m*x -fit [0:24] f(x) 'scaling.txt' using 1:(1/$2*1e3) via m -plot 'scaling.txt' using 1:(1/$2*1e3) pt 7, f(x) +fit [0:24] f(x) datafile using 1:(1/$2*1e3) via m +plot datafile using 1:(1/$2*1e3) pt 7, f(x) diff --git a/libexec/taskset b/libexec/taskset new file mode 100755 index 0000000000..e93ce6931d --- /dev/null +++ b/libexec/taskset @@ -0,0 +1,2 @@ +#!/bin/bash +echo $(numactl -H | grep "^node $1 cpus:" | awk '{for(i=4;i<=NF;++i)print$i}') | sed 's/ /,/g' From a0ca792b7cf2926a9fd0110f9f196519d0e61e6f Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Thu, 15 Jan 2026 17:09:37 -0500 Subject: [PATCH 02/13] separate plotting from clara --- libexec/scaling | 61 ------------------------------------------------- 1 file changed, 61 deletions(-) diff --git a/libexec/scaling b/libexec/scaling index 2afc13666b..fff3d52d81 100755 --- a/libexec/scaling +++ b/libexec/scaling @@ -100,66 +100,6 @@ def save(benchmarks): for row in table(benchmarks): f.write(' '.join([str(x) for x in row])+'\n') -gnuplot=''' -set terminal qt size 1000,700 - -set multiplot layout 2,2 -set datafile columnheaders -set title font 'sans,14' -set key box -set xlabel 'Threads' -set ylabel 'Event Time [ms]' -set yrange [0:] - -set title 'I/O' -set key outside right width 2 -plot 'scaling.txt' \ - using 1:(($2*$1)) pt 7 with points title columnhead(2) ,\ - '' using 1:((column($#))) pt 7 with points title 'Total' ,\ - '' using 1:($6) pt 7 with points title 'Reader' ,\ - '' using 1:((column($#-1))) pt 7 with points title 'Writer' ,\ - '' using 1:(($6*$1)) pt 7 with points title 'IOver' ,\ - -set title 'Engines' - -# data-ai-uber.yml: -#plot 'scaling.txt' \ -# using 1:($7) pt 7 with points title columnhead(7) ,\ -# '' using 1:($8) pt 7 with points title columnhead(8) ,\ -# '' using 1:($9) pt 7 with points title columnhead(9) ,\ -# '' using 1:($10) pt 7 with points title columnhead(10) ,\ -# '' using 1:($11) pt 7 with points title columnhead(11) ,\ -# '' using 1:($12) pt 7 with points title columnhead(12) ,\ - -# rgd-clarode.yml: -plot 'scaling.txt' \ - using 1:($7) pt 7 with points title columnhead(7) ,\ - '' using 1:($14) pt 7 with points title columnhead(14) ,\ - '' using 1:($15) pt 7 with points title columnhead(15) ,\ - '' using 1:($16) pt 7 with points title columnhead(16) ,\ - '' using 1:($26) pt 9 with points title columnhead(26) ,\ - '' using 1:($19) pt 7 with points title columnhead(19) ,\ - '' using 1:($28) pt 9 with points title columnhead(28) ,\ - '' using 1:($33) pt 9 with points title columnhead(33) ,\ - -set title 'Throughput' -set ylabel 'Rate [Hz]' -set size 0.7,0.5 -set origin 0.12,0 -unset key -f(x) = m*x -fit [0:24] f(x) 'scaling.txt' using 1:(1/$2*1e3) via m -plot 'scaling.txt' using 1:(1/$2*1e3) pt 7, f(x) -''' - -def plot(): - import tempfile - with tempfile.NamedTemporaryFile(mode='w') as f: - f.write(gnuplot) - f.flush() - list(run(['gnuplot','-p',f.name])) - input() - if __name__ == '__main__': cfg = cli() if not cfg.P: @@ -168,5 +108,4 @@ if __name__ == '__main__': benchmarks.append([threads, benchmark(cfg, threads)]) show(benchmarks) save(benchmarks) - plot() From c7454cd89614423d89dd193ca1a52245c773ff71 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Thu, 15 Jan 2026 17:20:14 -0500 Subject: [PATCH 03/13] restore uber option --- libexec/scaling.gpl | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/libexec/scaling.gpl b/libexec/scaling.gpl index b0ea5f6c03..3d9228bfa5 100644 --- a/libexec/scaling.gpl +++ b/libexec/scaling.gpl @@ -36,15 +36,15 @@ set size 0.6,1.0 set origin 0.4,0.0 set title 'Engines' set key outside right vertical -#if (exists("uberMode")) { -# plot datafile \ -# using 1:($7) pt 7 with points title columnhead(7) ,\ -# '' using 1:($8) pt 7 with points title columnhead(8) ,\ -# '' using 1:($9) pt 7 with points title columnhead(9) ,\ -# '' using 1:($10) pt 7 with points title columnhead(10) ,\ -# '' using 1:($11) pt 7 with points title columnhead(11) ,\ -# '' using 1:($12) pt 7 with points title columnhead(12) ,\ -#} else { +if (exists("uberMode")) { + plot datafile \ + using 1:($7) pt 7 with points title columnhead(7) ,\ + '' using 1:($8) pt 7 with points title columnhead(8) ,\ + '' using 1:($9) pt 7 with points title columnhead(9) ,\ + '' using 1:($10) pt 7 with points title columnhead(10) ,\ + '' using 1:($11) pt 7 with points title columnhead(11) ,\ + '' using 1:($12) pt 7 with points title columnhead(12) ,\ +} else { plot datafile \ using 1:($6) pt 7 with points title columnhead(6) ,\ '' using 1:($7) pt 7 with points title columnhead(7) ,\ @@ -74,14 +74,12 @@ set key outside right vertical '' using 1:($31) pt 6 with points title columnhead(31) ,\ '' using 1:($32) pt 6 with points title columnhead(32) ,\ '' using 1:($33) pt 6 with points title columnhead(33) -#} +} set title 'Throughput' set ylabel 'Rate [Hz]' set size 0.4,0.5 set origin 0,0 -#set size 0.7,0.5 -#set origin 0.12,0 unset key f(x) = m*x fit [0:24] f(x) datafile using 1:(1/$2*1e3) via m From aa10abadc3a50d9481ec753957822b350abaf5cc Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Thu, 15 Jan 2026 19:17:48 -0500 Subject: [PATCH 04/13] bugfix, try harder to find run-clara --- libexec/scaling | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/libexec/scaling b/libexec/scaling index fff3d52d81..8d3a7896e5 100755 --- a/libexec/scaling +++ b/libexec/scaling @@ -32,14 +32,18 @@ def run(cmd): pass def benchmark(cfg, threads): - import sys,shutil,collections - if not shutil.which('run-clara'): - sys.exit('run-clara is not in $PATH') + import os,sys,shutil,collections + run_clara = shutil.which('run-clara') + if not run_clara: + run_clara = cfg.c + '/plugins/clas12/bin/run-clara' + if not os.path.exists(run_clara): + sys.exit('run-clara is not in $PATH') exiting,benchmarks = False,collections.OrderedDict() - cmd = ['run-clara', + cmd = [run_clara, '-c',cfg.c, '-n',str(cfg.e*int(threads)), '-t',str(threads), + '-l', '-y',cfg.y, '-o',f'tmp-scaling-{threads}', cfg.i] @@ -75,7 +79,7 @@ def table(benchmarks): table = [] header = [ 'Threads' ] b = benchmarks[0][1] - header.extend([x for x in b if x != 'Services']) + header.extend([x for x in b if x != 'Services' and x != 'Event']) if 'Services' in b: header.extend(b['Services'].keys()) table.append(header) From 99194ed830bd79825de4eeb3ebd1a39258dc1ccf Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Thu, 15 Jan 2026 19:18:41 -0500 Subject: [PATCH 05/13] cleanup image --- libexec/scaling.gpl | 58 ++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/libexec/scaling.gpl b/libexec/scaling.gpl index 3d9228bfa5..b3aa29b963 100644 --- a/libexec/scaling.gpl +++ b/libexec/scaling.gpl @@ -1,3 +1,4 @@ +set terminal svg size 1000,700 # parse command line arguments: datafile = 'scaling.txt' @@ -12,44 +13,52 @@ if (ARGC > 0) { } } -set terminal svg size 1000,700 - set multiplot layout 2,2 set datafile columnheaders -set title font 'sans,14' -set key box +set yrange [0:] + +set xlabel 'Threads' +set ylabel 'Rate [Hz]' +set size 0.4,0.45 +set origin 0.0,0.55 +unset key +f(x) = m*x + +fit [0:24] f(x) datafile using 1:(1/$2*1e3) via m +plot datafile using 1:(1/$2*1e3) pt 7, f(x) + set xlabel 'Threads' set ylabel 'Event Time [ms]' -set yrange [0:] +set key box outside top center horizontal +set size 0.4,0.55 +set origin 0.0,0.0 -set key outside top center horizontal -set size 0.4,0.5 -set origin 0.0,0.5 plot datafile \ - using 1:((column($#))) pt 7 with points title 'Total' ,\ + using 1:((column($#))) pt 7 with points title 'Total' ,\ + '' using 1:(($5*$1)) pt 7 with points title 'N-Readers' ,\ '' using 1:($5) pt 9 with points title 'Reader' ,\ '' using 1:((column($#-1))) pt 9 with points title 'Writer' ,\ - '' using 1:(($5*$1)) pt 7 with points title 'IOver' - #'' using 1:(($2*$1)) pt 7 with points title columnhead(2) +#set logscale y set size 0.6,1.0 set origin 0.4,0.0 -set title 'Engines' set key outside right vertical + if (exists("uberMode")) { plot datafile \ - using 1:($7) pt 7 with points title columnhead(7) ,\ - '' using 1:($8) pt 7 with points title columnhead(8) ,\ - '' using 1:($9) pt 7 with points title columnhead(9) ,\ + using 1:($6) pt 7 with points title columnhead(7) ,\ + '' using 1:($7) pt 7 with points title columnhead(7) ,\ + '' using 1:($8) pt 7 with points title columnhead(8) ,\ + '' using 1:($9) pt 7 with points title columnhead(9) ,\ '' using 1:($10) pt 7 with points title columnhead(10) ,\ '' using 1:($11) pt 7 with points title columnhead(11) ,\ '' using 1:($12) pt 7 with points title columnhead(12) ,\ } else { plot datafile \ - using 1:($6) pt 7 with points title columnhead(6) ,\ - '' using 1:($7) pt 7 with points title columnhead(7) ,\ - '' using 1:($8) pt 7 with points title columnhead(8) ,\ - '' using 1:($9) pt 7 with points title columnhead(9) ,\ + using 1:($6) pt 7 with points title columnhead(6) ,\ + '' using 1:($7) pt 7 with points title columnhead(7) ,\ + '' using 1:($8) pt 7 with points title columnhead(8) ,\ + '' using 1:($9) pt 7 with points title columnhead(9) ,\ '' using 1:($10) pt 7 with points title columnhead(10) ,\ '' using 1:($11) pt 7 with points title columnhead(11) ,\ '' using 1:($12) pt 7 with points title columnhead(12) ,\ @@ -73,15 +82,6 @@ if (exists("uberMode")) { '' using 1:($30) pt 6 with points title columnhead(30) ,\ '' using 1:($31) pt 6 with points title columnhead(31) ,\ '' using 1:($32) pt 6 with points title columnhead(32) ,\ - '' using 1:($33) pt 6 with points title columnhead(33) + '' using 1:($33) pt 6 with points title columnhead(33) ,\ } -set title 'Throughput' -set ylabel 'Rate [Hz]' -set size 0.4,0.5 -set origin 0,0 -unset key -f(x) = m*x -fit [0:24] f(x) datafile using 1:(1/$2*1e3) via m -plot datafile using 1:(1/$2*1e3) pt 7, f(x) - From 0956bd3f48176f1d520a70813bc35487a8abbae1 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Fri, 16 Jan 2026 10:47:08 -0500 Subject: [PATCH 06/13] adjust run-clara memory calculation --- bin/run-clara | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/run-clara b/bin/run-clara index 23368264cf..9c94bb6561 100755 --- a/bin/run-clara +++ b/bin/run-clara @@ -55,6 +55,7 @@ inputs=$@ gb_init=$((threads)) gb_max=$((threads+2)) [ $threads -gt 1 ] && ! [ -z ${large+x} ] && gb_max=$((threads*2)) +>>>>>>> ce5e07f62 (adjust run-clara memory calculation) java_opts="-Xms${gb_init}g -Xmx${gb_max}g" # Check configuration: From 8066f39689273125ba7a5f08c5ff9ab250af2c1f Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Fri, 16 Jan 2026 12:48:49 -0500 Subject: [PATCH 07/13] beautify scaling plot --- libexec/scaling.gpl | 112 ++++++++++++++++++++++++++++++-------------- 1 file changed, 77 insertions(+), 35 deletions(-) diff --git a/libexec/scaling.gpl b/libexec/scaling.gpl index b3aa29b963..7e8a263c51 100644 --- a/libexec/scaling.gpl +++ b/libexec/scaling.gpl @@ -1,4 +1,46 @@ -set terminal svg size 1000,700 +set terminal svg size 1000,700 enhanced font 'Verdana, 14' +set palette maxcolors 8 +set palette defined ( \ + 0 '#A6CEE3',\ + 1 '#1F78B4',\ + 2 '#B2DF8A',\ + 3 '#33A02C',\ + 4 '#FB9A99',\ + 5 '#E31A1C',\ + 6 '#FDBF6F',\ + 7 '#FF7F00' ) +set style line 1 pt 7 lt 1 lc rgb '#A6CEE3' # light blue +set style line 2 pt 7 lt 1 lc rgb '#1F78B4' # dark blue +set style line 3 pt 7 lt 1 lc rgb '#B2DF8A' # light green +set style line 4 pt 7 lt 1 lc rgb '#33A02C' # dark green +set style line 5 pt 7 lt 1 lc rgb '#FB9A99' # light red +set style line 6 pt 7 lt 1 lc rgb '#E31A1C' # dark red +set style line 7 pt 7 lt 1 lc rgb '#FDBF6F' # light orange +set style line 8 pt 7 lt 1 lc rgb '#FF7F00' # dark orange +set style line 11 pt 11 lt 1 lc rgb '#A6CEE3' # light blue +set style line 12 pt 11 lt 1 lc rgb '#1F78B4' # dark blue +set style line 13 pt 11 lt 1 lc rgb '#B2DF8A' # light green +set style line 14 pt 11 lt 1 lc rgb '#33A02C' # dark green +set style line 15 pt 11 lt 1 lc rgb '#FB9A99' # light red +set style line 16 pt 11 lt 1 lc rgb '#E31A1C' # dark red +set style line 17 pt 11 lt 1 lc rgb '#FDBF6F' # light orange +set style line 18 pt 11 lt 1 lc rgb '#FF7F00' # dark orange +set style line 21 pt 8 lt 1 lc rgb '#A6CEE3' # light blue +set style line 22 pt 8 lt 1 lc rgb '#1F78B4' # dark blue +set style line 23 pt 8 lt 1 lc rgb '#B2DF8A' # light green +set style line 24 pt 8 lt 1 lc rgb '#33A02C' # dark green +set style line 25 pt 8 lt 1 lc rgb '#FB9A99' # light red +set style line 26 pt 8 lt 1 lc rgb '#E31A1C' # dark red +set style line 27 pt 8 lt 1 lc rgb '#FDBF6F' # light orange +set style line 28 pt 8 lt 1 lc rgb '#FF7F00' # dark orange +set style line 31 pt 6 lt 1 lc rgb '#A6CEE3' # light blue +set style line 32 pt 6 lt 1 lc rgb '#1F78B4' # dark blue +set style line 33 pt 6 lt 1 lc rgb '#B2DF8A' # light green +set style line 34 pt 6 lt 1 lc rgb '#33A02C' # dark green +set style line 35 pt 6 lt 1 lc rgb '#FB9A99' # light red +set style line 36 pt 6 lt 1 lc rgb '#E31A1C' # dark red +set style line 37 pt 6 lt 1 lc rgb '#FDBF6F' # light orange +set style line 38 pt 6 lt 1 lc rgb '#FF7F00' # dark orange # parse command line arguments: datafile = 'scaling.txt' @@ -29,15 +71,15 @@ plot datafile using 1:(1/$2*1e3) pt 7, f(x) set xlabel 'Threads' set ylabel 'Event Time [ms]' -set key box outside top center horizontal +set key nobox outside top center horizontal set size 0.4,0.55 set origin 0.0,0.0 plot datafile \ - using 1:((column($#))) pt 7 with points title 'Total' ,\ - '' using 1:(($5*$1)) pt 7 with points title 'N-Readers' ,\ - '' using 1:($5) pt 9 with points title 'Reader' ,\ - '' using 1:((column($#-1))) pt 9 with points title 'Writer' ,\ + using 1:((column($#))) pt 7 with points title 'Total' ,\ + '' using 1:(($5*$1)) pt 7 with points title 'N-Readers' ,\ + '' using 1:($5) pt 9 with points title 'Reader' ,\ + '' using 1:((column($#-1))) pt 11 with points title 'Writer' ,\ #set logscale y set size 0.6,1.0 @@ -46,7 +88,7 @@ set key outside right vertical if (exists("uberMode")) { plot datafile \ - using 1:($6) pt 7 with points title columnhead(7) ,\ + using 1:($6) pt 7 with points title columnhead(6) ,\ '' using 1:($7) pt 7 with points title columnhead(7) ,\ '' using 1:($8) pt 7 with points title columnhead(8) ,\ '' using 1:($9) pt 7 with points title columnhead(9) ,\ @@ -55,33 +97,33 @@ if (exists("uberMode")) { '' using 1:($12) pt 7 with points title columnhead(12) ,\ } else { plot datafile \ - using 1:($6) pt 7 with points title columnhead(6) ,\ - '' using 1:($7) pt 7 with points title columnhead(7) ,\ - '' using 1:($8) pt 7 with points title columnhead(8) ,\ - '' using 1:($9) pt 7 with points title columnhead(9) ,\ - '' using 1:($10) pt 7 with points title columnhead(10) ,\ - '' using 1:($11) pt 7 with points title columnhead(11) ,\ - '' using 1:($12) pt 7 with points title columnhead(12) ,\ - '' using 1:($13) pt 7 with points title columnhead(13) ,\ - '' using 1:($14) pt 8 with points title columnhead(14) ,\ - '' using 1:($15) pt 8 with points title columnhead(15) ,\ - '' using 1:($16) pt 8 with points title columnhead(16) ,\ - '' using 1:($17) pt 8 with points title columnhead(17) ,\ - '' using 1:($18) pt 8 with points title columnhead(18) ,\ - '' using 1:($19) pt 8 with points title columnhead(19) ,\ - '' using 1:($20) pt 8 with points title columnhead(20) ,\ - '' using 1:($21) pt 8 with points title columnhead(21) ,\ - '' using 1:($22) pt 9 with points title columnhead(22) ,\ - '' using 1:($23) pt 9 with points title columnhead(23) ,\ - '' using 1:($24) pt 9 with points title columnhead(24) ,\ - '' using 1:($25) pt 9 with points title columnhead(25) ,\ - '' using 1:($26) pt 9 with points title columnhead(26) ,\ - '' using 1:($27) pt 9 with points title columnhead(27) ,\ - '' using 1:($28) pt 9 with points title columnhead(28) ,\ - '' using 1:($29) pt 9 with points title columnhead(29) ,\ - '' using 1:($30) pt 6 with points title columnhead(30) ,\ - '' using 1:($31) pt 6 with points title columnhead(31) ,\ - '' using 1:($32) pt 6 with points title columnhead(32) ,\ - '' using 1:($33) pt 6 with points title columnhead(33) ,\ + using 1:($6) ls 1 with points title columnhead(6) ,\ + '' using 1:($7) ls 2 with points title columnhead(7) ,\ + '' using 1:($8) ls 3 with points title columnhead(8) ,\ + '' using 1:($9) ls 4 with points title columnhead(9) ,\ + '' using 1:($10) ls 5 with points title columnhead(10) ,\ + '' using 1:($11) ls 6 with points title columnhead(11) ,\ + '' using 1:($12) ls 7 with points title columnhead(12) ,\ + '' using 1:($13) ls 8 with points title columnhead(13) ,\ + '' using 1:($14) ls 11 with points title columnhead(14) ,\ + '' using 1:($15) ls 12 with points title columnhead(15) ,\ + '' using 1:($16) ls 13 with points title columnhead(16) ,\ + '' using 1:($17) ls 14 with points title columnhead(17) ,\ + '' using 1:($18) ls 15 with points title columnhead(18) ,\ + '' using 1:($19) ls 16 with points title columnhead(19) ,\ + '' using 1:($20) ls 17 with points title columnhead(20) ,\ + '' using 1:($21) ls 18 with points title columnhead(21) ,\ + '' using 1:($22) ls 21 with points title columnhead(22) ,\ + '' using 1:($23) ls 22 with points title columnhead(23) ,\ + '' using 1:($24) ls 23 with points title columnhead(24) ,\ + '' using 1:($25) ls 24 with points title columnhead(25) ,\ + '' using 1:($26) ls 25 with points title columnhead(26) ,\ + '' using 1:($27) ls 26 with points title columnhead(27) ,\ + '' using 1:($28) ls 27 with points title columnhead(28) ,\ + '' using 1:($29) ls 28 with points title columnhead(29) ,\ + '' using 1:($30) ls 31 with points title columnhead(30) ,\ + '' using 1:($31) ls 32 with points title columnhead(31) ,\ + '' using 1:($32) ls 33 with points title columnhead(32) ,\ + '' using 1:($33) ls 34 with points title columnhead(33) ,\ } From 9bfa9f8967ef028dcfbca2b8bfd8bb30c1b023b5 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Fri, 16 Jan 2026 12:52:58 -0500 Subject: [PATCH 08/13] fix label --- libexec/scaling.gpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libexec/scaling.gpl b/libexec/scaling.gpl index 7e8a263c51..56a8452ed7 100644 --- a/libexec/scaling.gpl +++ b/libexec/scaling.gpl @@ -60,7 +60,7 @@ set datafile columnheaders set yrange [0:] set xlabel 'Threads' -set ylabel 'Rate [Hz]' +set ylabel 'Event Rate [Hz]' set size 0.4,0.45 set origin 0.0,0.55 unset key From 2ecccfc10a2375636dc289c50794931168f540c8 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Fri, 16 Jan 2026 20:57:29 -0500 Subject: [PATCH 09/13] remove all plotting remnants --- libexec/scaling | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/libexec/scaling b/libexec/scaling index 8d3a7896e5..e4248eef44 100755 --- a/libexec/scaling +++ b/libexec/scaling @@ -3,20 +3,14 @@ def cli(): import os,sys,argparse cli = argparse.ArgumentParser(description='CLARA scaling test') - cli.add_argument('-P',help='plot only',action='store_true') - cli.add_argument('-y',help='YAML file',default=None) + cli.add_argument('-y',help='YAML file',required=True) cli.add_argument('-c',help='CLARA_HOME path',default=os.getenv('CLARA_HOME',None)) cli.add_argument('-t',help='threads (default=4,8)',default='4,8') cli.add_argument('-e',help='events per thread',default=100,type=int) - cli.add_argument('-i',help='input data file',default=None) + cli.add_argument('-i',help='input data file',required=True) cfg = cli.parse_args() cfg.t = cfg.t.split(',') - if cfg.P: - cfg.i = 'scaling.txt' - else: - if cfg.y is None: sys.exit('-y YAML is required w/o -P') - if cfg.c is None: sys.exit('-c or $CLARA_HOME is required w/o -P') - if cfg.i is None: sys.exit('-i is required') + if cfg.c is None: sys.exit('-c or $CLARA_HOME is required.') return cfg def run(cmd): @@ -106,10 +100,9 @@ def save(benchmarks): if __name__ == '__main__': cfg = cli() - if not cfg.P: - benchmarks = [] - for threads in cfg.t: - benchmarks.append([threads, benchmark(cfg, threads)]) - show(benchmarks) - save(benchmarks) + benchmarks = [] + for threads in cfg.t: + benchmarks.append([threads, benchmark(cfg, threads)]) + show(benchmarks) + save(benchmarks) From ac2a7e26c7777af1ae4b2411df46a77bf97d0988 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Tue, 20 Jan 2026 15:02:56 -0500 Subject: [PATCH 10/13] fix oops --- bin/run-clara | 1 - 1 file changed, 1 deletion(-) diff --git a/bin/run-clara b/bin/run-clara index 9c94bb6561..23368264cf 100755 --- a/bin/run-clara +++ b/bin/run-clara @@ -55,7 +55,6 @@ inputs=$@ gb_init=$((threads)) gb_max=$((threads+2)) [ $threads -gt 1 ] && ! [ -z ${large+x} ] && gb_max=$((threads*2)) ->>>>>>> ce5e07f62 (adjust run-clara memory calculation) java_opts="-Xms${gb_init}g -Xmx${gb_max}g" # Check configuration: From 61db67cf9c216e675f1825b09f6141e146d68779 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Tue, 20 Jan 2026 18:09:17 -0500 Subject: [PATCH 11/13] retain run-clara logs --- libexec/scaling | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libexec/scaling b/libexec/scaling index e4248eef44..6ea506e34d 100755 --- a/libexec/scaling +++ b/libexec/scaling @@ -25,7 +25,7 @@ def run(cmd): if p.returncode != 0: pass -def benchmark(cfg, threads): +def benchmark(cfg, threads, log): import os,sys,shutil,collections run_clara = shutil.which('run-clara') if not run_clara: @@ -44,6 +44,7 @@ def benchmark(cfg, threads): for line in run(cmd): cols = line.split() print(line) + log.write(line+'\n') try: if line.find('Benchmark results:') >= 0: exiting = True @@ -102,7 +103,9 @@ if __name__ == '__main__': cfg = cli() benchmarks = [] for threads in cfg.t: - benchmarks.append([threads, benchmark(cfg, threads)]) + os.makedirs('tmp-scaling-'+threads) + with open(f'tmp-scaling-{threads}/run-clara.log','w') as log: + benchmarks.append([threads, benchmark(cfg, threads, log)]) show(benchmarks) save(benchmarks) From 9e5d6dea25793c03715860f41cf17cda548ffe49 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Tue, 20 Jan 2026 18:10:25 -0500 Subject: [PATCH 12/13] draw fitted slope --- libexec/scaling.gpl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libexec/scaling.gpl b/libexec/scaling.gpl index 56a8452ed7..1589761971 100644 --- a/libexec/scaling.gpl +++ b/libexec/scaling.gpl @@ -63,11 +63,13 @@ set xlabel 'Threads' set ylabel 'Event Rate [Hz]' set size 0.4,0.45 set origin 0.0,0.55 -unset key +set key nobox inside top left f(x) = m*x +m = 2 fit [0:24] f(x) datafile using 1:(1/$2*1e3) via m -plot datafile using 1:(1/$2*1e3) pt 7, f(x) +rate = sprintf('%.1f Hz/CPU',m) +plot datafile using 1:(1/$2*1e3) pt 7 notitle, f(x) title rate set xlabel 'Threads' set ylabel 'Event Time [ms]' From 69699df3c03043a304075f771522172bb07c17d5 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Tue, 20 Jan 2026 18:29:36 -0500 Subject: [PATCH 13/13] add missing import --- libexec/scaling | 1 + 1 file changed, 1 insertion(+) diff --git a/libexec/scaling b/libexec/scaling index 6ea506e34d..41c2a06a43 100755 --- a/libexec/scaling +++ b/libexec/scaling @@ -101,6 +101,7 @@ def save(benchmarks): if __name__ == '__main__': cfg = cli() + import os benchmarks = [] for threads in cfg.t: os.makedirs('tmp-scaling-'+threads)