take into account of dedicated cpu(s)
authorLaurent Mazet <mazet@softndesign.org>
Sun, 12 Oct 2025 21:21:18 +0000 (23:21 +0200)
committerLaurent Mazet <mazet@softndesign.org>
Sun, 12 Oct 2025 21:21:18 +0000 (23:21 +0200)
generatecandle.sh
generatedoc.sh
generateplot.sh
gettable.awk
gettable.sh
test.sh

index 93d8c2e12b56b3682db0367bb4f165e61549dbbc..040df9c3ef5cabe88c07152f4ba6c69c09b806f0 100755 (executable)
@@ -3,18 +3,29 @@
 base=$(cd $(dirname $0); pwd)
 
 for csv; do
-  core="any core"
   sed 1d $csv | cut -d, -f1 | sort | uniq | while IFS=$'\n' read title; do
 
-    name=$($base/getname.sh "$title")
+    test=$($base/getname.sh "$title")
 
-    output=$name.pdf
+    for dcore in 0 1 2; do
 
-    awk -F, '$1 == "'"$title"'" { sub (/[^,]*,/, ""); gsub (/,/, " "); print }' $csv > $name.tab
+      name=$test-${dcore}k
 
-    cat $base/candles.gp | \
-      m4 -D CORE="$core" -D DATA="$name.tab" -D TITLE="$title" | \
-      gnuplot > "$output"
+      case "$dcore" in
+      0) core="any core";;
+      1) core="1 core";;
+      2) core="2 cores";;
+      esac
+
+      awk -F, '$1 == "'"$title"'" && $2 == '$dcore' { sub (/[^,]*,/, ""); gsub (/,/, " "); print }' $csv > $name.tab
+      if [ -s $name.tab ]; then
+        cat $base/candles.gp | \
+          m4 -D CORE="$core" -D DATA="$name.tab" -D TITLE="$title" | \
+          gnuplot > $name.pdf
+      else
+        rm -f $name.tab
+      fi
+    done
   done
 done
 
index 205485245efebfecc5f94d45475784638ec77680..3181c322d480428508f195960b2a475406497ebf 100755 (executable)
@@ -8,27 +8,34 @@ echo "<body>"
 
 for tab; do
 
-  test=$(echo $tab | sed 's/.tab//')
+  test=$(echo $tab | awk -F'[.-]' '{ print $1 }')
+  dcore=$(echo $tab | awk -F'[.-]' '{ print $2 }' | sed 's/k//')
+
   title=$($base/getname.sh -r $test)
+  case $dcore in
+  0) core="No dedicated core";;
+  1) core="1 dedicated core";;
+  2) core="1 dedicated cores";;
+  esac
 
-  echo "<h2>$title</h2>"
+  echo "<h2>$title - $core</h2>"
 
   echo "<h3>Statistic summary</h3>"
 
   echo "<table border=\"1\" cellpadding=\"5\" cellspacing=\"2\" width=\"100%\">"
   echo "<thead><tr><th width=\"12%\">Load<br>(%)</th><th width=\"12%\">Minimum<br>(us)</th><th width=\"12%\">Average<br>(us)</th><th width=\"12%\">Maximun<br>(us)</th><th width=\"12%\">Standard Dev.<br>(us)</th><th width=\"12%\">25th %<br>(us)</th><th width=\"12%\">Median<br>(us)</th><th width=\"12%\">75th %<br>(us)</th></tr></thead>"
   echo "<tbody>"
-  awk '{ printf "<tr>"; for (i=0; i<NF; i++) printf "<td>%s</td>", $(i+1); printf "</tr>\n" }' $tab
+  awk '{ printf "<tr>"; for (i=1; i<NF; i++) printf "<td>%s</td>", $(i+1); printf "</tr>\n" }' $tab
   echo "</tbody>"
   echo "</table>"
 
-  echo "<div><a href=\"$test.pdf\"><img src=\"$test.png\" width=\"80%\"/></a></div>"
+  echo "<div><a href=\"$test-${dcore}k.pdf\"><img src=\"$test-${dcore}k.png\" width=\"80%\"/></a></div>"
 
   for load in $(cat $tab | cut -f1 -d\ ); do
     echo "<h3>Measures with load of $load%</h3>"
     echo "<div>"
-    echo "<a href=\"$test-$load%-raw.pdf\"><img src=\"$test-$load%-raw.png\" width=\"49%\"/></a>"
-    echo "<a href=\"$test-$load%-hist.pdf\"><img src=\"$test-$load%-hist.png\" width=\"49%\"/></a>"
+    echo "<a href=\"$test-${dcore}k-${load}%-raw.pdf\"><img src=\"$test-${dcore}k-${load}%-raw.png\" width=\"49%\"/></a>"
+    echo "<a href=\"$test-${dcore}k-${load}%-hist.pdf\"><img src=\"$test-${dcore}k-${load}%-hist.png\" width=\"49%\"/></a>"
     echo "</div>"
   done
 
index f0d08ea0c672ae39193c5eb270716f812f7b3984..cc3f4bf0427fe5d2c8c48f1771667e693bd3b9ff 100755 (executable)
@@ -7,7 +7,7 @@ for data; do
 
   title=$(awk '/Test:/ { sub(/[^:]*: /, ""); print}' $log)
   core=$(awk -F: '/Dedicated core/ { print  ($2 == 0) ? "any core" : $2 " core" ($2 > 1 ? "s" : "") }' $log)
-  load=$(echo $data | sed 's/.*-\([0-9]*\)%.*/\1%/')
+  load=$(awk '/CPU load/ { print $3 }' $log)
 
   output=$(echo $data | sed 's/\.dat/-raw.pdf/')
   cat $base/rawmeasures.gp | \
index 478316b9e1e0fd0cfd246b1a745880b3728a9ce7..13ecff78b56f13e049a317c0f1c0c391542407fa 100755 (executable)
@@ -2,7 +2,9 @@
 
 BEGIN {
     OFS=","
-    #print "Test", "Load", "Minimum (us)", "Average (us)", "Maximun (us)", "Standard Dev. (us)", "25th % (us)", "Median (us)", "75th % (us)"
+    if (!nohead) {
+        print "Test", "Dedicated core(s)", "Load (%)", "Minimum (us)", "Average (us)", "Maximun (us)", "Standard Dev. (us)", "25th % (us)", "Median (us)", "75th % (us)"
+    }
 }
 
 /Test:/ {
@@ -12,6 +14,8 @@ BEGIN {
 
 { sub (/us$/, "") }
 
+/Dedicated/ { dcore=$3 }
+/CPU load/ { load=$3 }
 /Minimum/ { min=$3 }
 /Maximum/ { max=$3 }
 /Average/ { avg=$3 }
@@ -22,6 +26,5 @@ BEGIN {
 /75th/ { p75=$4 }
 
 /Histogram/ {
-    print test, COMMENT, min, avg, max, std, p25, med, p75
+    print test, dcore, load, min, avg, max, std, p25, med, p75
 }
-# for p in 0 100; do ./gettable.awk -v COMMENT=$p% test-$p%.log; done > result.csv
index 910f561de00d5843afe8d308026693bebc61b6a5..9e5e8d54dc08b3937fc6677758c14955c8d50ce8 100755 (executable)
@@ -2,14 +2,16 @@
 
 base=$(cd $(dirname $0); pwd)
 
-echo "Test,Load (%),Minimum (us),Average (us),Maximun (us),Standard Dev. (us),25th % (us),Median (us),75th % (us)"
+awk '/nohead/ {getline; sub(/print/, ""); gsub (/ *"/, ""); print}' $base/gettable.awk
 
 nbcpu=$(grep -c processor /proc/cpuinfo)
-for t in *.exe; do
-  t=$(echo $t | sed 's/\.exe//');
-  for k in $(seq 0 $nbcpu); do
-    p=$(expr $k \* 100 / $nbcpu)
-    f=$t-$p%.log
-    [ -f $f ] && awk -f $base/gettable.awk -v COMMENT=$p $f
+for exe in *.exe; do
+  test=$(echo $exe | sed 's/\.exe//');
+  for core in $(seq 0 2); do
+    for cpu in $(seq 0 $nbcpu); do
+      load=$(expr $cpu \* 100 / $nbcpu)
+      name=${test}-${core}k-${load}%
+      [ -f $name.log ] && awk -f $base/gettable.awk -v nohead=1 $name.log
+    done
   done
 done
diff --git a/test.sh b/test.sh
index 9c871b9854f401dc26d8a7b75839904dac093999..0d52a9936f15948384e18cb7735504c17ccaa8e6 100755 (executable)
--- a/test.sh
+++ b/test.sh
@@ -1,15 +1,21 @@
 #!/bin/sh
 
+nbcpu=$(grep -c processor /proc/cpuinfo)
+
 run() {
-  cpu=$1
-  load=$2
+  dcore=$1
+  lcpu=$2
+  nbcpu=$3
+  load=$(expr $lcpu \* 100 / $nbcpu)
   for exe in *.exe; do
     test=$(echo $exe | sed 's/\.exe//')
+    name=$test-${dcore}k-${load}%
     echo "\033[0;1mTest $test\033[0;0m"
-    ./getinfo.sh | tee $test-$load.log
-    { ./$exe -d 1 -n 10000 -s -o $test-$load.dat | tee -a $test-$load.log; \
+    ./getinfo.sh | tee $name.log
+    echo "CPU load: $load% ($lcpu/$nbcpu)" | tee -a $name.log
+    { ./$exe -d 1 -k $dcore -n 10000 -s -o $name.dat | tee -a $name.log; \
       kill -2 $(ps -e | awk '/[l]oad/ || /[s]leep/ { print $1 }') 2>/dev/null; } &
-    ./load -n $cpu >/dev/null
+    ./load -n $lcpu >/dev/null
     echo "Cleaning..."
     sleep 1
   done
@@ -18,8 +24,8 @@ run() {
 touch purge
 rm -f purge *.log *.dat
 
-nbcpu=$(grep -c processor /proc/cpuinfo)
-for k in $(seq 0 $nbcpu); do
-  p=$(expr $k \* 100 / $nbcpu)
-  run $k $p%
+for d in 0 1 2; do
+  for c in $(seq 0 $nbcpu); do
+    run $d $c $nbcpu
+  done
 done