From 7927d8b7cd2ef5a0d6573e09850ac69d9d4b9691 Mon Sep 17 00:00:00 2001
From: Peter Cai <peter.cai@uwaterloo.ca>
Date: Tue, 14 Feb 2023 14:34:20 -0500
Subject: [PATCH] Add support for experiments with kernel polling

---
 experiments/memcached.shared.sh   | 2 +-
 experiments/memcached_qps_scan.sh | 7 ++++++-
 run.sh                            | 9 +++++++++
 tunings/kernel_polling.sh         | 8 ++++++++
 4 files changed, 24 insertions(+), 2 deletions(-)
 create mode 100644 tunings/kernel_polling.sh

diff --git a/experiments/memcached.shared.sh b/experiments/memcached.shared.sh
index 57009ca..79027df 100644
--- a/experiments/memcached.shared.sh
+++ b/experiments/memcached.shared.sh
@@ -10,7 +10,7 @@ cleanup_mutilate() {
 
 cleanup_memcached() {
     echo "Killing memcached process"
-    kill $MEMCACHED_PID
+    kill -INT $MEMCACHED_PID
 }
 
 start_memcached() {
diff --git a/experiments/memcached_qps_scan.sh b/experiments/memcached_qps_scan.sh
index e6add1c..4492f5a 100644
--- a/experiments/memcached_qps_scan.sh
+++ b/experiments/memcached_qps_scan.sh
@@ -23,7 +23,12 @@ pre_start() {
 }
 
 run_exp() {
-    start_memcached
+    MEMCACHED_ARGS=""
+    if [ "$NAPI_LOCALITY" == "true" ]; then
+        MEMCACHED_ARGS="-N $THREADS"
+    fi
+
+    start_memcached $MEMCACHED_ARGS
     start_mutilate
     warmup
 
diff --git a/run.sh b/run.sh
index 09af22d..e54c9ce 100755
--- a/run.sh
+++ b/run.sh
@@ -26,6 +26,11 @@ while [[ $# -gt 0 ]]; do
             shift
             shift
             ;;
+        --extra-tuning)
+            EXTRA_TUNING="$2"
+            shift
+            shift
+            ;;
         *)
             break
             ;;
@@ -47,6 +52,9 @@ source "./experiments/$EXPERIMENT.sh"
 pre_start
 
 EXPERIMENT_NAME="$EXPERIMENT.$(uname -r)"
+if [ ! -z "$EXTRA_TUNING" ]; then
+    EXPERIMENT_NAME="$EXPERIMENT_NAME.$EXTRA_TUNING"
+fi
 if [ ! -z "$EXPERIMENT_NAME_EXT" ]; then
     EXPERIMENT_NAME="$EXPERIMENT_NAME.$EXPERIMENT_NAME_EXT"
 fi
@@ -57,6 +65,7 @@ rm -rf "$DATA_OUT"
 mkdir -p "$DATA_OUT"
 
 source ./tunings/normalize_queues.sh
+[ ! -z "$EXTRA_TUNING" ] && source ./tunings/"$EXTRA_TUNING".sh
 
 run_exp
 
diff --git a/tunings/kernel_polling.sh b/tunings/kernel_polling.sh
new file mode 100644
index 0000000..9da0c0e
--- /dev/null
+++ b/tunings/kernel_polling.sh
@@ -0,0 +1,8 @@
+if [ ! "$(uname -r)" == "5.15.79-peter" ]; then
+    echo "kernel polling only supported on patched kernel"
+    exit 1
+fi
+
+sysctl net.core.busy_poll=128
+# NAPI locality is needed for multi-threaded experiments
+NAPI_LOCALITY=true
-- 
GitLab