diff --git a/caladan.config b/caladan.config new file mode 100644 index 0000000000000000000000000000000000000000..dec39571364ce2246f5e649604737fcf1906a192 --- /dev/null +++ b/caladan.config @@ -0,0 +1,7 @@ +# an example runtime config file +host_addr 192.168.199.1 +host_netmask 255.255.255.0 +host_gateway 192.168.199.1 +runtime_kthreads {threads} +runtime_guaranteed_kthreads {threads} +runtime_priority lc diff --git a/configs/base.sh b/configs/base.sh index 9e1de6c1e0e3fb098ed7b2a88459674e615165a4..05a0da510e145f744b90861bb2288abd51f5b169 100644 --- a/configs/base.sh +++ b/configs/base.sh @@ -3,6 +3,7 @@ CPUPOWER=cpupower X86_ENERGY_PERF_POLICY=x86_energy_perf_policy PERF=perf FSTACK_SRC=/home/p5cai/workspace/f-stack +CALADAN_SRC=/home/p5cai/workspace/caladan # Execute all SSH commands under this user # so that we don't need ssh keys for root diff --git a/configs/memcached.sh b/configs/memcached.sh index fdb8e0d6d20a9351dfa103c277c2b07fb167f2c9..0b84614725475ed03259db1cfb84fcc4aa4a9a10 100644 --- a/configs/memcached.sh +++ b/configs/memcached.sh @@ -1,2 +1,3 @@ MEMCACHED=/home/p5cai/workspace/memcached/memcached MEMCACHED_FSTACK=/home/p5cai/workspace/memcached-fstack/memcached +MEMCACHED_CALADAN=/home/p5cai/workspace/memcached-caladan/memcached diff --git a/experiments/memcached.shared.sh b/experiments/memcached.shared.sh index 56f30e816d67754bd3c14e66ced3fdf0184c661e..bff6da45f8b10ae356accf665ac654cf67a49591 100644 --- a/experiments/memcached.shared.sh +++ b/experiments/memcached.shared.sh @@ -25,7 +25,8 @@ cleanup_memcached() { start_memcached() { echo "Starting memcached" - taskset -c 0-$((THREADS - 1)) $MEMCACHED -u root -t $THREADS -b 16384 -c 32768 -m 10240 -o hashpower=24,no_lru_maintainer,no_lru_crawler $MEMCACHED_ARGS 2>&1 > /tmp/memcached.lastexp.log & + 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 & MEMCACHED_PID=$! } @@ -65,6 +66,10 @@ memcached_pre_start() { if [ "$FSTACK" == "true" ]; then MEMCACHED="$MEMCACHED_FSTACK" + elif [ "$CALADAN" == "true" ]; then + MEMCACHED="$MEMCACHED_CALADAN" + MEMCACHED_ARGS="$MEMCACHED_ARGS $CALADAN_CONFIG -p 11211" + REINIT_RUNS=9999 # Caladan does not support restarting the application process properly fi EXPERIMENT_NAME_EXT="t$THREADS.c$CONNS" diff --git a/experiments/memcached_qps_scan.sh b/experiments/memcached_qps_scan.sh index 5f16937e44a4f928ebf6a9bb8fec4fd2aafb9d74..511841fdf43190a53604436de6aeec031cb17847 100644 --- a/experiments/memcached_qps_scan.sh +++ b/experiments/memcached_qps_scan.sh @@ -6,6 +6,11 @@ QPS_STEP_PER_THREAD=5000 pre_start() { memcached_pre_start + + if [ "$CALADAN" == "true" ]; then + QPS_STEP_PER_THREAD=20000 + QPS_END_PER_THREAD=330000 + fi } run_exp() { diff --git a/run.sh b/run.sh index db897271f319194f87bb104f82e9e9b059242022..47c2facd387ad8630710e24980e9f59c60bcd8b7 100755 --- a/run.sh +++ b/run.sh @@ -41,6 +41,11 @@ while [[ $# -gt 0 ]]; do USERSTACK=true shift ;; + --caladan) + CALADAN=true + USERSTACK=true + shift + ;; *) echo "Unknown option $1" exit 1 @@ -80,6 +85,23 @@ if [ "$USERSTACK" == "true" ]; then mount -t hugetlbfs nodev /mnt/huge || true fi +if [ "$CALADAN" == "true" ]; then + pkill iokerneld || true + pkill memcached || true + if [ "$THREADS" -le 1 ]; then + echo "Must allocate one thread for IOKernel" + exit 1 + fi + CALADAN_CONFIG=/tmp/caladan.config + sed "s/{threads}/$((THREADS - 1))/g" ./caladan.config > $CALADAN_CONFIG + $CALADAN_SRC/scripts/setup_machine.sh || true + sleep 5 + echo "Starting up Caladan iokernel" + $CALADAN_SRC/iokerneld simple noht & + CALADAN_PID=$! + sleep 5 +fi + source "./experiments/$EXPERIMENT.sh" pre_start $@ @@ -91,6 +113,9 @@ fi if [ "$FSTACK" == "true" ]; then EXPERIMENT_NAME="$EXPERIMENT_NAME.fstack" fi +if [ "$CALADAN" == "true" ]; then + EXPERIMENT_NAME="$EXPERIMENT_NAME.caladan" +fi if [ ! -z "$EXPERIMENT_NAME_EXT" ]; then EXPERIMENT_NAME="$EXPERIMENT_NAME.$EXPERIMENT_NAME_EXT" fi @@ -103,3 +128,7 @@ mkdir -p "$DATA_OUT" run_exp post_start + +if [ "$CALADAN" == "true" ]; then + kill -KILL "$CALADAN_PID" +fi