diff --git a/experiments/memcached.shared.sh b/experiments/memcached.shared.sh
index bff6da45f8b10ae356accf665ac654cf67a49591..0ade27c0f421fdd9e27e944ffc1bd45399c9ef68 100644
--- a/experiments/memcached.shared.sh
+++ b/experiments/memcached.shared.sh
@@ -25,8 +25,8 @@ cleanup_memcached() {
 
 start_memcached() {
     echo "Starting memcached"
-    echo "taskset -c 0-$((THREADS - 1)) $MEMCACHED $MEMCACHED_ARGS -u root -t $THREADS -b 16384 -c 32768 -m 10240 -o hashpower=24,no_lru_maintainer,no_lru_crawler" 
-    taskset -c 0-$((THREADS - 1)) $MEMCACHED $MEMCACHED_ARGS -u root -t $THREADS -b 16384 -c 32768 -m 10240 -o hashpower=24,no_lru_maintainer,no_lru_crawler &
+    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 &
     MEMCACHED_PID=$!
 }
 
diff --git a/tunings/base.sh b/tunings/base.sh
index 0224423d03cf4cf5b07765190255fb69380a9f06..395132c801dd9f730bb17cdfba65d9a1ef5cee4f 100644
--- a/tunings/base.sh
+++ b/tunings/base.sh
@@ -25,3 +25,5 @@ sysctl net.core.busy_read=0
 sysctl net.core.dev_weight=64
 sysctl net.core.netdev_budget=300
 sysctl net.core.netdev_budget_usecs=8000
+
+export THREAD_TAIL_OFFSET=0
diff --git a/tunings/irq_packing.sh b/tunings/irq_packing.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f0d4e1c97473f1df12202f623518b1b87dda1224
--- /dev/null
+++ b/tunings/irq_packing.sh
@@ -0,0 +1,11 @@
+if [ "$THREADS" -ne 8 ]; then
+    echo "IRQ packing can only be done with 8 threads"
+    exit 1
+fi
+
+export THREAD_TAIL_OFFSET=2
+
+# IRQ packing 2-2-6 scheme
+ethtool -L $NET_IF rx 2 tx 8
+$EXP_ROOT/irq.sh set 0 7
+$EXP_ROOT/irq.sh set rx 6 7