diff --git a/experiments/extra.shared.sh b/experiments/extra.shared.sh index 62fa1cfb2211eacfd867444cbefea7e8ea6203b4..ff5158cbdd06785a4178c75360cea0923ab6fa4b 100644 --- a/experiments/extra.shared.sh +++ b/experiments/extra.shared.sh @@ -1,7 +1,7 @@ perf_stat_start() { local opt_args="" if [ "$PERF_STAT_NO_CORES" != "true" ]; then - opt_args="$opt_args -C 0-$((THREADS - 1))" + opt_args="$opt_args -C $FIRST_CPU-$((FIRST_CPU + THREADS - 1))" fi $PERF stat $PERF_EXTRA_ARGS $opt_args -e LLC-load-misses:u,LLC-load-misses:k,LLC-loads:u,LLC-loads:k,LLC-store-misses:u,LLC-store-misses:k,LLC-stores:u,LLC-stores:k,task-clock,cycles:u,cycles:k,instructions:u,instructions:k -o "$DATA_OUT/stat_$1$EXP_AUX_SUFFIX.txt" & PERF_STAT_PID=$! @@ -14,7 +14,7 @@ perf_stat_stop() { perf_record_start() { local opt_args="" if [ "$PERF_STAT_NO_CORES" != "true" ]; then - opt_args="$opt_args -C 0-$((THREADS - 1))" + opt_args="$opt_args -C $FIRST_CPU-$((FIRST_CPU + THREADS - 1))" fi pushd "$DATA_OUT" diff --git a/experiments/memcached.shared.sh b/experiments/memcached.shared.sh index d6423f1677a21d2555c1a8eb31ab94141de5b97b..f0a550c6a8f5fe89561c21b09f5bccea66d9b830 100644 --- a/experiments/memcached.shared.sh +++ b/experiments/memcached.shared.sh @@ -28,8 +28,8 @@ cleanup_memcached() { start_memcached() { echo "Starting memcached" - echo "taskset -c 0-$((THREADS - 1 - THREAD_TAIL_OFFSET)) $MEMCACHED $MEMCACHED_ARGS -u root -t $((THREADS - THREAD_TAIL_OFFSET)) -b 16384 -c 32768 -m 10240 -o hashpower=24,no_lru_maintainer,no_lru_crawler" - taskset -c 0-$((THREADS - 1 - THREAD_TAIL_OFFSET)) $MEMCACHED $MEMCACHED_ARGS -u root -t $((THREADS - THREAD_TAIL_OFFSET)) -b 16384 -c 32768 -m 10240 -o hashpower=24,no_lru_maintainer,no_lru_crawler & + echo "taskset -c $FIRST_CPU-$((FIRST_CPU + THREADS - 1 - THREAD_TAIL_OFFSET)) $MEMCACHED $MEMCACHED_ARGS -u root -t $((THREADS - THREAD_TAIL_OFFSET)) -b 16384 -c 32768 -m 10240 -o hashpower=24,no_lru_maintainer,no_lru_crawler" + taskset -c $FIRST_CPU-$((FIRST_CPU + THREADS - 1 - THREAD_TAIL_OFFSET)) $MEMCACHED $MEMCACHED_ARGS -u root -t $((THREADS - THREAD_TAIL_OFFSET)) -b 16384 -c 32768 -m 10240 -o hashpower=24,no_lru_maintainer,no_lru_crawler & MEMCACHED_PID=$! if [ "$PERF_STAT_ONLY_MEMCACHED" == "true" ]; then PERF_EXTRA_ARGS_ORIG="$PERF_EXTRA_ARGS" diff --git a/run.sh b/run.sh index 57560b79b9c59b6d0622ee63e064c243402f1475..f05ab9280082651fbf915c5104537b176751c67a 100755 --- a/run.sh +++ b/run.sh @@ -8,6 +8,7 @@ if [ "$UID" -ne 0 ]; then fi EXTRA_TUNING=() +FIRST_CPU=0 export EXP_ROOT="$PWD" @@ -38,6 +39,11 @@ while [[ $# -gt 0 ]]; do shift shift ;; + --first-cpu) + FIRST_CPU=$2 + shift + shift + ;; --fstack) FSTACK=true USERSTACK=true @@ -122,6 +128,9 @@ if [ "${#EXTRA_TUNING[@]}" -gt 0 ]; then EXPERIMENT_NAME="$EXPERIMENT_NAME.$tuning" done fi +if [ $FIRST_CPU -gt 0 ]; then + EXPERIMENT_NAME="$EXPERIMENT_NAME.first$FIRST_CPU" +fi if [ "$FSTACK" == "true" ]; then EXPERIMENT_NAME="$EXPERIMENT_NAME.fstack" fi diff --git a/tunings/irq_on_ht.sh b/tunings/irq_on_ht.sh index e8e351ba2a0a7404ce63c7d48fe6e9f5c5c0a965..893a57ba8631c080181863a33f72974f22606063 100644 --- a/tunings/irq_on_ht.sh +++ b/tunings/irq_on_ht.sh @@ -1,2 +1,7 @@ +if [ "$FIRST_CPU" -ne 0 ]; then + echo "FIRST_CPU must be 0" + exit 1 +fi + $EXP_ROOT/irq.sh set 16 $((THREADS + 16 - 1)) $EXP_ROOT/irq.sh set rx 16 $((THREADS + 16 - 1)) diff --git a/tunings/irq_packing.sh b/tunings/irq_packing.sh index f0d4e1c97473f1df12202f623518b1b87dda1224..d7635bd15710e7c6358683bca859d8530c38b0a3 100644 --- a/tunings/irq_packing.sh +++ b/tunings/irq_packing.sh @@ -1,5 +1,5 @@ -if [ "$THREADS" -ne 8 ]; then - echo "IRQ packing can only be done with 8 threads" +if [ "$THREADS" -ne 8 ] || [ "$FIRST_CPU" -ne 0 ]; then + echo "IRQ packing can only be done with 8 threads and FIRST_CPU must be 0" exit 1 fi diff --git a/tunings/normalize_queues.sh b/tunings/normalize_queues.sh index 48e878a1d308b6f89e11d11a7f822b1cf525fb9c..d45731013c18f73a8223b2998dbf9391f5e52bab 100644 --- a/tunings/normalize_queues.sh +++ b/tunings/normalize_queues.sh @@ -1,3 +1,3 @@ ethtool -L $NET_IF rx $THREADS tx $THREADS || true -$EXP_ROOT/irq.sh set 0 $((THREADS - 1)) -$EXP_ROOT/irq.sh set rx 0 $((THREADS - 1)) +$EXP_ROOT/irq.sh set $FIRST_CPU $((FIRST_CPU + THREADS - 1)) +$EXP_ROOT/irq.sh set rx $FIRST_CPU $((FIRST_CPU + THREADS - 1))