From d316f6eb651046aab5af47ac264297ac77c669ce Mon Sep 17 00:00:00 2001
From: Peter Cai <peter.cai@uwaterloo.ca>
Date: Wed, 1 Mar 2023 16:24:36 -0500
Subject: [PATCH] Add support for running auxilliary experiments for error bars
 and avg

---
 experiments/memcached.shared.sh |  2 +-
 experiments/perf.shared.sh      |  2 +-
 run.sh                          | 21 +++++++++++++++++++--
 3 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/experiments/memcached.shared.sh b/experiments/memcached.shared.sh
index 0ade27c..fcd1fa7 100644
--- a/experiments/memcached.shared.sh
+++ b/experiments/memcached.shared.sh
@@ -51,7 +51,7 @@ run_mutilate() {
     fi
     echo "Running mutilate with $CONNS connections per agent (core) and QPS = $QPS"
     perf_stat_start "$1"
-    sudo -u $SSH_USER $MUTILATE --noload -c$CONNS $MUTCLIENTS -t30 -u 0 -q $QPS | tee $DATA_OUT/$1.txt
+    sudo -u $SSH_USER $MUTILATE --noload -c$CONNS $MUTCLIENTS -t30 -u 0 -q $QPS | tee $DATA_OUT/$1$EXP_AUX_SUFFIX.txt
     perf_stat_stop
     NO_RUNS=$((NO_RUNS + 1))
 }
diff --git a/experiments/perf.shared.sh b/experiments/perf.shared.sh
index db84939..6012f24 100644
--- a/experiments/perf.shared.sh
+++ b/experiments/perf.shared.sh
@@ -1,5 +1,5 @@
 perf_stat_start() {
-    $PERF stat -C 0-$((THREADS - 1)) -e LLC-load-misses:u,LLC-load-misses:k,mem_load_uops_retired.llc_miss,mem_uops_retired.all_loads,cycles,cycles:u,cycles:k,instructions,instructions:u,instructions:k,stalled-cycles-frontend,stalled-cycles-backend -o "$DATA_OUT/stat_$1.txt" &
+    $PERF stat -C 0-$((THREADS - 1)) -e LLC-load-misses:u,LLC-load-misses:k,mem_load_uops_retired.llc_miss,mem_uops_retired.all_loads,cycles,cycles:u,cycles:k,instructions,instructions:u,instructions:k,stalled-cycles-frontend,stalled-cycles-backend -o "$DATA_OUT/stat_$1$EXP_AUX_SUFFIX.txt" &
     PERF_STAT_PID=$!
 }
 
diff --git a/run.sh b/run.sh
index 47c2fac..02eb196 100755
--- a/run.sh
+++ b/run.sh
@@ -46,6 +46,15 @@ while [[ $# -gt 0 ]]; do
             USERSTACK=true
             shift
             ;;
+        -f|--force)
+            FORCE_REMOVE=true
+            shift
+            ;;
+        --aux)
+            EXP_AUX_SUFFIX="_aux$2"
+            shift
+            shift
+            ;;
         *)
             echo "Unknown option $1"
             exit 1
@@ -122,8 +131,16 @@ fi
 
 DATA_OUT="$EXP_ROOT/data/$EXPERIMENT_NAME"
 
-rm -rf "$DATA_OUT"
-mkdir -p "$DATA_OUT"
+if [ -d "$DATA_OUT" ] && [ -z "$EXP_AUX_SUFFIX" ]; then
+    if [ "$FORCE_REMOVE" == "true" ]; then
+        rm -rf "$DATA_OUT"
+    else
+        echo "Experiment directory $DATA_OUT already exists. Remove it manually or use --force. To run auxillary experiments for multiple sets of data, use --aux <num>"
+        exit 1
+    fi
+else
+    mkdir -p "$DATA_OUT"
+fi
 
 run_exp
 
-- 
GitLab