Commit f65c4bc3 authored by Antoine Kaufmann's avatar Antoine Kaufmann
Browse files

experiments: remove old Makefile & shell scripts

parent 015109d6
MQNICMOD := $(abspath ../images/mqnic/mqnic.ko)
EXP_RUNNER ?= bash
GUESTS := \
qemu-pair-client \
qemu-pair-client-8-1 \
qemu-pair-client-8-2 \
qemu-pair-client-8-3 \
qemu-pair-client-8-4 \
qemu-pair-client-8-5 \
qemu-pair-client-8-6 \
qemu-pair-client-8-7 \
qemu-pair-client-8-8 \
qemu-pair-server \
gem5-pair-client \
gem5-pair-server-cp \
gem5-pair-client-cp \
gem5-pair-client-8-1 \
gem5-pair-client-8-2 \
gem5-pair-client-8-3 \
gem5-pair-client-8-4 \
gem5-pair-client-8-5 \
gem5-pair-client-8-6 \
gem5-pair-client-8-7 \
gem5-pair-client-8-8 \
gem5-pair-server-udp \
gem5-pair-client-udp-0m \
gem5-pair-client-udp-10m \
gem5-pair-client-udp-30m \
gem5-pair-client-udp-50m \
gem5-pair-client-udp-80m \
gem5-pair-client-udp-100m \
gem5-pair-client-udp-120m \
gem5-pair-client-udp-150m \
qemu-nopaxos-replica-0 \
qemu-nopaxos-replica-1 \
qemu-nopaxos-replica-2 \
qemu-nopaxos-client \
qemu-nopaxos-endhost-sequencer \
gem5-nopaxos-client \
gem5-nopaxos-replica-0-cp \
gem5-nopaxos-replica-1-cp \
gem5-nopaxos-replica-2-cp \
gem5-nopaxos-client-cp \
qemu-vr-replica-0 \
qemu-vr-replica-1 \
qemu-vr-replica-2 \
qemu-vr-client \
gem5-vr-replica-0-cp \
gem5-vr-replica-1-cp \
gem5-vr-replica-2-cp \
gem5-vr-client-cp \
qemu-mtcp-server \
qemu-mtcp-client \
gem5-pair-i40e-server \
gem5-pair-i40e-client \
gem5-pair-i40e-client-2 \
qemu-pair-i40e-server \
qemu-pair-i40e-client \
qemu-pair-i40e-client-2 \
qemu-i40e-rpc-server \
qemu-i40e-rpc-client \
qemu-tas-server \
qemu-tas-client \
qemu-echo-client \
qemu-echo-server-0 \
qemu-echo-server-1 \
qemu-echo-server-2 \
# experiments we want for the paper
EXPERIMENTS := \
qemu-ns3-nopaxos \
qemu-ns3-nopaxos-verilator \
gem5-timing-corundum-verilator-ns3-nopaxos-nocp \
gem5-timing-corundum-bm-ns3-nopaxos-nocp \
qemu-ns3-vr \
qemu-ns3-vr-verilator \
gem5-timing-corundum-verilator-ns3-vr-nocp \
gem5-timing-corundum-bm-ns3-vr-nocp \
qemu-corundum-bm-switched-1 \
qemu-corundum-bm-switched-8 \
qemu-corundum-verilator-switched-1 \
qemu-corundum-verilator-switched-8 \
gem5-timing-corundum-verilator-switched-1-nocp \
gem5-timing-corundum-verilator-switched-8-nocp \
gem5-timing-corundum-verilator-pair-udp-0m \
gem5-timing-corundum-verilator-pair-udp-10m \
gem5-timing-corundum-verilator-pair-udp-30m \
gem5-timing-corundum-verilator-pair-udp-50m \
gem5-timing-corundum-verilator-pair-udp-80m \
gem5-timing-corundum-verilator-pair-udp-100m \
gem5-timing-corundum-verilator-pair-udp-150m \
#experiments using check points
EXP_CP := \
gem5-timing-corundum-verilator-pair-cp \
gem5-i40e-pair \
gem5-i40e-mtcp \
gem5-i40e-cc \
#experiments not using check points
EXP_NCP := \
qemu-corundum-bm-echo-switch \
qemu-corundum-bm-pair \
qemu-corundum-bm-switched-1 \
qemu-i40e-bm-mtcp \
qemu-i40e-bm-rpc \
qemu-i40e-bm-pair \
qemu-i40e-bm-tas \
qemu-i40e-bm-cc \
qemu-ns3-nopaxos \
qemu-ns3-nopaxos-endhost-sequencer \
# all experiments in repo
ALL_EXPERIMENTS := \
$(EXPERIMENTS) \
qemu-corundum-bm-pair \
qemu-corundum-verilator-pair \
gem5-kvm-corundum-bm-pair \
gem5-timing-corundum-verilator-pair \
qemu-ns3-bridge-pair \
qemu-ns3-dumbbell-pair \
gem5-kvm-ns3-dumbbell-pair \
gem5-kvm-corundum-verilator-pair \
gem5-timing-corundum-verilator-pair-udp \
gem5-timing-corundum-verilator-pair-largewin \
gem5-timing-corundum-verilator-pair-16f \
REPLICATION ?= 1
BUILDDIR := build
OUTDIR := out
GUESTS_TARS := $(addprefix $(BUILDDIR)/,$(addsuffix .tar, $(GUESTS)))
EXPERIMENTS_READY := $(addprefix $(OUTDIR)/,$(addsuffix /ready,$(EXPERIMENTS)))
EXP_CP_READY := $(addprefix $(OUTDIR)/,$(addsuffix /ready,$(EXP_CP)))
EXP_NCP_READY := $(addprefix $(OUTDIR)/,$(addsuffix /ready,$(EXP_NCP)))
all: guest-tars experiments
clean:
rm -rf $(BUILDDIR) $(OUTDIR)
#######################################
# Running experiments
REPLIDS := $(shell seq $(REPLICATION))
experiments-ncp: $(EXP_NCP_READY)
experiments-cp: $(EXP_CP_READY)
experiments: $(EXPERIMENTS_READY)
define run_ex_ncp_repl
$(OUTDIR)/$(1)/$(2)/ready: experiments/$(addsuffix .sh,$(1)) $(GUESTS_TARS)
$(EXP_RUNNER) $$< $(2)
@# hacks for our NFS :/
@ls $(OUTDIR) >/dev/null
@ls $(OUTDIR)/$(1) >/dev/null
@ls $(OUTDIR)/$(1)/$(2) >/dev/null
touch $$@
endef
define run_ex_ncp
$(foreach i,$(REPLIDS),$(eval $(call run_ex_ncp_repl,$(1),$(i))))
$(OUTDIR)/$(1)/ready: experiments/$(addsuffix .sh,$(1)) $(addprefix $(OUTDIR)/$(1)/,$(addsuffix /ready,$(REPLIDS)))
touch $$@
endef
define run_ex_cp_repl
$(OUTDIR)/$(1)/$(2)/ready: experiments/$(addsuffix .sh,$(1)) $(OUTDIR)/$(1)/checkpoint/ready $(GUESTS_TARS)
$(EXP_RUNNER) $$< $(2)
@# hacks for our NFS :/
@ls $(OUTDIR) >/dev/null
@ls $(OUTDIR)/$(1) >/dev/null
@ls $(OUTDIR)/$(1)/$(2) >/dev/null
touch $$@
endef
define run_ex_cp
$(foreach i,$(REPLIDS),$(eval $(call run_ex_cp_repl,$(1),$(i))))
$(OUTDIR)/$(1)/checkpoint/ready: experiments/$(addsuffix -mck.sh,$(1)) $(GUESTS_TARS)
$(EXP_RUNNER) $$<
@# hacks for our NFS :/
@ls $(OUTDIR) >/dev/null
@ls $(OUTDIR)/$(1) >/dev/null
@ls $(OUTDIR)/$(1)/$(2) >/dev/null
touch $$@
$(OUTDIR)/$(1)/ready: experiments/$(addsuffix .sh,$(1)) $(addprefix $(OUTDIR)/$(1)/,$(addsuffix /ready,$(REPLIDS)))
touch $$@
endef
$(foreach sc, $(EXP_CP),$(eval $(call run_ex_cp,$(sc))))
$(foreach sc, $(EXP_NCP),$(eval $(call run_ex_ncp,$(sc))))
#######################################
# Guest Tars
guest-tars: $(GUESTS_TARS)
define build_guest
$(1)_OBJS := $(wildcard guests/$(1)/*)
$(BUILDDIR)/$(1).tar: $$($(1)_OBJS)
rm -rf $(BUILDDIR)/$(1)
mkdir -p $(BUILDDIR)/$(1)/guest
cp $(MQNICMOD) $(BUILDDIR)/$(1)/guest/
cp $$($(1)_OBJS) $(BUILDDIR)/$(1)/guest/
cd $(BUILDDIR)/$(1) && tar cf $$(abspath $$@) guest/
rm -rf $(BUILDDIR)/$(1)
endef
$(foreach guest,$(GUESTS), $(eval $(call build_guest,$(guest))))
#!/bin/bash
EHSIM_BASE="$(readlink -f $(dirname ${BASH_SOURCE[0]})/..)"
QEMU_CMD="$EHSIM_BASE/qemu/x86_64-softmmu/qemu-system-x86_64"
QEMU_IMG="$EHSIM_BASE/qemu/qemu-img"
GEM5_BASE="$EHSIM_BASE/gem5"
NS3_BASE="$EHSIM_BASE/ns-3"
OUTDIR_BASE="$EHSIM_BASE/experiments/out"
WORKDIR_BASE="$OUTDIR_BASE"
if [ -f local-config.sh ] ; then
source local-config.sh
fi
if [ ! -d "$EHSIM_BASE" ] ; then
echo "\$EHSIM_BASE should be set to the absolute path of the root"\
"of this repo (local-config.sh)"
exit 1
fi
if [ ! -f "$QEMU_CMD" ] ; then
echo "\$QEMU_CMD should be set to the absolute path to a QEMU instance"\
"with cosim support (local-config.sh)"
exit 1
fi
if [ ! -d "$GEM5_BASE" ] ; then
echo "\$GEM5_BASE should be set to the absolute path to a built gem5 repo"\
"(local-config.sh)"
exit 1
fi
if [ ! -d "$NS3_BASE" ] ; then
echo "\$NS3_BASE should be set to the absolute path to a built ns3 repo"\
"(local-config.sh)"
exit 1
fi
QEMU_IMAGE=$EHSIM_BASE/images/output-base/base
QEMU_KERNEL=$EHSIM_BASE/images/bzImage
GEM5_IMAGE=$EHSIM_BASE/images/output-base/base.raw
GEM5_KERNEL=$EHSIM_BASE/images/vmlinux
# Args:
# - experiment name
init_out() {
export OUTDIR=$OUTDIR_BASE/$1/$2
export WORKDIR=$WORKDIR_BASE/$1/$2
rm -rf $OUTDIR $WORKDIR
mkdir -p $OUTDIR $WORKDIR
date > $OUTDIR/starttime
}
# Args:
# - Instance name
# - Cosim instance
# - secondary hard drive
# - [optional primary image name: default ubuntu1804-base]
# - [optional: additinoal qemu arguments]
run_qemu() {
img_a="$WORKDIR/qemu.hd.a.$1"
img_b="$WORKDIR/qemu.hd.b.$1"
pcisock="$WORKDIR/pci.$2"
rm -f $img_a $img_b
echo Creating disk for qemu $1
if [ -z "$4" ]; then
$QEMU_IMG create -f qcow2 -o backing_file=$QEMU_IMAGE $img_a
else
$QEMU_IMG create -f qcow2 -o backing_file="$EHSIM_BASE/images/output-$4/$4" $img_a
fi
cp $3 $img_b
echo Starting qemu $1
#i40e.debug=0x8fffffff
#hugepages=1024
$QEMU_CMD -machine q35 -cpu host \
-drive file=$img_a,if=ide,index=0,media=disk \
-drive file=$img_b,if=ide,index=1,media=disk,driver=raw \
-kernel $QEMU_KERNEL \
-append "earlyprintk=ttyS0 console=ttyS0 root=/dev/sda1 init=/home/ubuntu/guestinit.sh rw" \
-serial mon:stdio -m $((16 * 1024)) -smp 1 -display none -enable-kvm \
-nic none \
-chardev socket,path=$pcisock,id=cosimcd \
-device cosim-pci,chardev=cosimcd \
$5 &>$OUTDIR/qemu.$1.log &
pid=$!
ALL_PIDS="$ALL_PIDS $pid"
return $pid
}
# Args:
# - Instance name
# - Cosim instance
# - secondary hard drive
# - cpu type
# - checkpoint dir
# - extra flags
# - [optional primary image name: default ubuntu1804-base]
run_gem5() {
echo Starting gem5 $1
pcisock="$WORKDIR/pci.$2"
shm="$WORKDIR/shm.$2"
cpdir="$WORKDIR/../checkpoint/checkpoints.$5"
mkdir -p $cpdir
if [ -z "$7" ]; then
img="$GEM5_IMAGE"
else
img="$EHSIM_BASE/images/output-$7/$7.raw"
fi
$GEM5_BASE/build/X86/gem5.opt \
--outdir=$OUTDIR/gem5.out.$1 \
$GEM5_BASE/configs/cosim/cosim.py \
--caches --l2cache --l3cache\
--l1d_size=32kB \
--l1i_size=32kB \
--l2_size=2MB \
--l3_size=32MB \
--cacheline_size=64 \
--cpu-clock=3GHz \
--kernel=$GEM5_KERNEL --disk-image=$img --disk-image=$3 \
--cpu-type=$4 --mem-size=16GB --cosim-pci=$pcisock --cosim-shm=$shm \
--ddio-enabled --ddio-way-part=8 --mem-type=DDR4_2400_16x4 \
--checkpoint-dir="$cpdir" $6 \
&>$OUTDIR/gem5.$1.log &
pid=$!
ALL_PIDS="$ALL_PIDS $pid"
return $pid
}
# Args:
# - Instance name
run_corundum_verilator() {
echo Starting corundum_verilator $1
$EHSIM_BASE/corundum/corundum_verilator \
$WORKDIR/pci.$1 $WORKDIR/eth.$1 $WORKDIR/shm.$1 \
&>$OUTDIR/corundum_verilator.$1.log &
pid=$!
ALL_PIDS="$ALL_PIDS $pid"
return $pid
}
# Args:
# - Instance name
run_corundum_bm() {
echo Starting corundum_bm $1
$EHSIM_BASE/corundum_bm/corundum_bm \
$WORKDIR/pci.$1 $WORKDIR/eth.$1 $WORKDIR/shm.$1 \
&>$OUTDIR/corundum_bm.$1.log &
pid=$!
ALL_PIDS="$ALL_PIDS $pid"
return $pid
}
# Args:
# - Instance name
run_i40e_bm() {
echo Starting i40e $1
$EHSIM_BASE/i40e_bm/i40e_bm \
$WORKDIR/pci.$1 $WORKDIR/eth.$1 $WORKDIR/shm.$1 \
&>$OUTDIR/i40e_bm.$1.log &
pid=$!
ALL_PIDS="$ALL_PIDS $pid"
return $pid
}
# Args:
# - Instance name
# - sim instance 1
# - sim instance 2
# - [optional: pcap filename]
run_wire() {
echo Starting wire $1
if [ -z "$4" ]; then
pcap=
else
pcap="$OUTDIR/$4.pcap"
fi
$EHSIM_BASE/net_wire/net_wire \
$WORKDIR/eth.$2 $WORKDIR/eth.$3 $pcap &>$OUTDIR/wire.$1.log &
pid=$!
ALL_PIDS="$ALL_PIDS $pid"
return $pid
}
# Args:
# - Instance name
# - sim instance 1
# - sim instance 2
# - [sim instance 3, ...]
run_switch() {
echo Starting switch $1
args=
for iface in ${@:2}
do
args="$args -s $WORKDIR/eth.$iface"
done
$EHSIM_BASE/net_switch/net_switch \
$args &>$OUTDIR/switch.$1.log &
pid=$!
ALL_PIDS="$ALL_PIDS $pid"
return $pid
}
# Args:
# - Instance name
# - Port names
run_ns3_bridge() {
ports=""
for p in $2; do
epath="`readlink -f $WORKDIR/eth.$p`"
ports="$ports --CosimPort=$epath"
done
$NS3_BASE/cosim-run.sh cosim cosim-bridge-example \
$ports &>$OUTDIR/ns3_bridge.$1.log &
pid=$!
ALL_PIDS="$ALL_PIDS $pid"
return $pid
}
# Args:
# - Instance name
# - Left Port names
# - Right Port names
# - Other args
run_ns3_dumbbell() {
ports=""
for p in $2; do
epath="`readlink -f $WORKDIR/eth.$p`"
ports="$ports --CosimPortLeft=$epath"
done
for p in $3; do
epath="`readlink -f $WORKDIR/eth.$p`"
ports="$ports --CosimPortRight=$epath"
done
$NS3_BASE/cosim-run.sh cosim cosim-dumbbell-example \
$ports $4 &>$OUTDIR/ns3_dumbbell.$1.log &
pid=$!
ALL_PIDS="$ALL_PIDS $pid"
return $pid
}
# Args:
# - Instance name
# - Client Port names
# - Server Port names
# - Other args
run_ns3_sequencer() {
ports=""
for p in $2; do
epath="`readlink -f $WORKDIR/eth.$p`"
ports="$ports --ClientPort=$epath"
done
for p in $3; do
epath="`readlink -f $WORKDIR/eth.$p`"
ports="$ports --ServerPort=$epath"
done
for p in $4; do
epath="`readlink -f $OUTDIR/eth.$p`"
ports="$ports --EndhostSequencerPort=$epath"
done
$NS3_BASE/cosim-run.sh sequencer sequencer-single-switch-example \
$ports $5 &>$OUTDIR/ns3_sequencer.$1.log &
pid=$!
ALL_PIDS="$ALL_PIDS $pid"
return $pid
}
cleanup() {
echo Cleaning up
for p in $ALL_PIDS ; do
kill $p &>/dev/null
done
sleep 1
for p in $ALL_PIDS ; do
kill -KILL $p &>/dev/null
done
if [ "$OUTDIR" != "$WORKDIR" ]; then
rm -rf $WORKDIR
else
rm -f $WORKDIR/{qemu.hd.*,shm.*,pci.*,eth.*}
fi
date >>$OUTDIR/endtime
}
sighandler() {
echo "Caught Interrupt, aborting...."
cleanup
exit 1
}
trap "sighandler" SIGINT
#!/bin/bash
source common-functions.sh
init_out gem5-i40e-cc checkpoint
# first run to checkpoint with fast CPU
run_i40e_bm a
run_i40e_bm b
run_i40e_bm c
sleep 2
run_ns3_bridge bridge "a b c"
run_gem5 a a build/gem5-pair-i40e-server.tar X86KvmCPU server "--cosim-type=i40e"
run_gem5 b b build/gem5-pair-i40e-client.tar X86KvmCPU client "--cosim-type=i40e"
run_gem5 c c build/gem5-pair-i40e-client-2.tar X86KvmCPU client2 "--cosim-type=i40e"
client_pid=$!
wait $client_pid
cleanup
echo "Took checkpoint successfully"
#!/bin/bash
source common-functions.sh
init_out gem5-i40e-cc $1
echo "Restoring from checkpoint"
# then run with timing CPU
run_i40e_bm a
run_i40e_bm b
run_i40e_bm c
sleep 0.5
run_ns3_bridge bridge "a b c"
run_gem5 a a build/gem5-pair-i40e-server.tar TimingSimpleCPU server "-r 0 --cosim-sync --cosim-type=i40e"
run_gem5 b b build/gem5-pair-i40e-client.tar TimingSimpleCPU client "-r 0 --cosim-sync --cosim-type=i40e"
run_gem5 c c build/gem5-pair-i40e-client-2.tar TimingSimpleCPU client2 "-r 0 --cosim-sync --cosim-type=i40e"
client_pid=$!
wait $client_pid
cleanup
#!/bin/bash
source common-functions.sh
init_out gem5-i40e-pair checkpoint
# first run to checkpoint with fast CPU
run_i40e_bm a
run_i40e_bm b
sleep 2
run_wire ab a b
run_gem5 a a build/gem5-pair-i40e-server.tar X86KvmCPU server "--cosim-type=i40e"
run_gem5 b b build/gem5-pair-i40e-client.tar X86KvmCPU client "--cosim-type=i40e"
client_pid=$!
wait $client_pid
cleanup
echo "Took checkpoint successfully"
#!/bin/bash
source common-functions.sh
init_out gem5-i40e-pair $1
echo "Restoring from checkpoint"
# then run with timing CPU
run_i40e_bm a
run_i40e_bm b
sleep 0.5
run_wire a a b
run_gem5 a a build/gem5-pair-i40e-server.tar TimingSimpleCPU server "-r 0 --cosim-sync --cosim-type=i40e"
run_gem5 b b build/gem5-pair-i40e-client.tar TimingSimpleCPU client "-r 0 --cosim-sync --cosim-type=i40e"
client_pid=$!
wait $client_pid
cleanup
#!/bin/bash
source common-functions.sh
init_out gem5-kvm-corundum-bm-pair $1
run_corundum_bm a
run_corundum_bm b
sleep 0.5
run_wire ab a b
run_gem5 a a build/qemu-pair-server.tar X86KvmCPU a
run_gem5 b b build/gem5-pair-client.tar X86KvmCPU b
client_pid=$!
wait $client_pid
cleanup
#!/bin/bash
source common-functions.sh
init_out gem5-kvm-ns3-dumbbell-pair $1
run_corundum_bm a
run_corundum_bm b
sleep 0.5
run_ns3_dumbbell ab "a" "b"
run_gem5 a a build/qemu-pair-server.tar X86KvmCPU a
run_gem5 b b build/gem5-pair-client.tar X86KvmCPU b
client_pid=$!
wait $client_pid
cleanup
#!/bin/bash
source common-functions.sh
init_out gem5-ns3-nopaxos-kvm-bm $1
run_corundum_bm c0
run_corundum_bm r0
run_corundum_bm r1
run_corundum_bm r2
sleep 0.5
run_ns3_sequencer nopaxos "c0" "r0 r1 r2"
run_gem5 r0 r0 build/qemu-nopaxos-replica-0.tar X86KvmCPU r0 "" nopaxos
sleep 1
run_gem5 r1 r1 build/qemu-nopaxos-replica-1.tar X86KvmCPU r1 "" nopaxos
run_gem5 r2 r2 build/qemu-nopaxos-replica-2.tar X86KvmCPU r2 "" nopaxos
sleep 1
run_gem5 c0 c0 build/gem5-nopaxos-client.tar X86KvmCPU c0 "" nopaxos
client_pid=$!
wait $client_pid
cleanup
#!/bin/bash
source common-functions.sh
init_out gem5-timing-corundum-bm-ns3-nopaxos-nocp $1
# first run to checkpoint with fast CPU
run_corundum_bm c0
run_corundum_bm r0
run_corundum_bm r1
run_corundum_bm r2
sleep 0.5
run_ns3_sequencer nopaxos "c0" "r0 r1 r2"
run_gem5 r0 r0 build/gem5-nopaxos-replica-0-cp.tar TimingSimpleCPU r0 "" nopaxos
sleep 60
run_gem5 r1 r1 build/gem5-nopaxos-replica-1-cp.tar TimingSimpleCPU r1 "" nopaxos
run_gem5 r2 r2 build/gem5-nopaxos-replica-2-cp.tar TimingSimpleCPU r2 "" nopaxos
sleep 60
run_gem5 c0 c0 build/gem5-nopaxos-client-cp.tar TimingSimpleCPU c0 "" nopaxos
client_pid=$!
wait $client_pid
cleanup
#!/bin/bash
source common-functions.sh
init_out gem5-timing-corundum-bm-ns3-nopaxos $1
# first run to checkpoint with fast CPU
run_corundum_bm c0
run_corundum_bm r0
run_corundum_bm r1
run_corundum_bm r2
sleep 0.5
run_ns3_sequencer nopaxos "c0" "r0 r1 r2"
run_gem5 r0 r0 build/gem5-nopaxos-replica-0-cp.tar X86KvmCPU r0 "" nopaxos
run_gem5 r1 r1 build/gem5-nopaxos-replica-1-cp.tar X86KvmCPU r1 "" nopaxos
run_gem5 r2 r2 build/gem5-nopaxos-replica-2-cp.tar X86KvmCPU r2 "" nopaxos
run_gem5 c0 c0 build/gem5-nopaxos-client-cp.tar X86KvmCPU c0 "" nopaxos
client_pid=$!
wait $client_pid
cleanup
echo "took checkpoint successfully"
# then run with timing CPU
run_corundum_bm c0_cp
run_corundum_bm r0_cp
run_corundum_bm r1_cp
run_corundum_bm r2_cp
sleep 0.5
run_ns3_sequencer nopaxos_cp "c0_cp" "r0_cp r1_cp r2_cp"
run_gem5 r0_cp r0_cp build/gem5-nopaxos-replica-0-cp.tar TimingSimpleCPU r0 "-r 0" nopaxos
run_gem5 r1_cp r1_cp build/gem5-nopaxos-replica-1-cp.tar TimingSimpleCPU r1 "-r 0" nopaxos
run_gem5 r2_cp r2_cp build/gem5-nopaxos-replica-2-cp.tar TimingSimpleCPU r2 "-r 0" nopaxos
run_gem5 c0_cp c0_cp build/gem5-nopaxos-client-cp.tar TimingSimpleCPU c0 "-r 0" nopaxos
client_pid=$!
wait $client_pid
cleanup
#!/bin/bash
source common-functions.sh
init_out gem5-timing-corundum-bm-ns3-vr-nocp $1
# first run to checkpoint with fast CPU
run_corundum_bm c0
run_corundum_bm r0
run_corundum_bm r1
run_corundum_bm r2
sleep 0.5
run_ns3_sequencer vr "c0" "r0 r1 r2"
run_gem5 r0 r0 build/gem5-vr-replica-0-cp.tar TimingSimpleCPU r0
sleep 60
run_gem5 r1 r1 build/gem5-vr-replica-1-cp.tar TimingSimpleCPU r1
run_gem5 r2 r2 build/gem5-vr-replica-2-cp.tar TimingSimpleCPU r2
sleep 60
run_gem5 c0 c0 build/gem5-vr-client-cp.tar TimingSimpleCPU c0
client_pid=$!
wait $client_pid
cleanup
#!/bin/bash
source common-functions.sh
init_out gem5-timing-corundum-verilator-ns3-nopaxos-nocp $1
run_corundum_verilator c0
run_corundum_verilator r0
run_corundum_verilator r1
run_corundum_verilator r2
sleep 0.5
run_ns3_sequencer nopaxos "c0" "r0 r1 r2"
run_gem5 r0 r0 build/gem5-nopaxos-replica-0-cp.tar TimingSimpleCPU r0 "--cosim-sync" nopaxos
run_gem5 r1 r1 build/gem5-nopaxos-replica-1-cp.tar TimingSimpleCPU r1 "--cosim-sync" nopaxos
run_gem5 r2 r2 build/gem5-nopaxos-replica-2-cp.tar TimingSimpleCPU r2 "--cosim-sync" nopaxos
run_gem5 c0 c0 build/gem5-nopaxos-client-cp.tar TimingSimpleCPU c0 "--cosim-sync" nopaxos
client_pid=$!
wait $client_pid
cleanup
#!/bin/bash
source common-functions.sh
init_out gem5-timing-corundum-verilator-ns3-nopaxos $1
# first run to checkpoint with fast CPU
run_corundum_verilator c0
run_corundum_verilator r0
run_corundum_verilator r1
run_corundum_verilator r2
sleep 0.5
run_ns3_sequencer nopaxos "c0" "r0 r1 r2"
run_gem5 r0 r0 build/gem5-nopaxos-replica-0-cp.tar X86KvmCPU r0 "" nopaxos
run_gem5 r1 r1 build/gem5-nopaxos-replica-1-cp.tar X86KvmCPU r1 "" nopaxos
run_gem5 r2 r2 build/gem5-nopaxos-replica-2-cp.tar X86KvmCPU r2 "" nopaxos
run_gem5 c0 c0 build/gem5-nopaxos-client-cp.tar X86KvmCPU c0 "" nopaxos
client_pid=$!
wait $client_pid
cleanup
echo "took checkpoint successfully"
# then run with timing CPU
run_corundum_verilator c0_cp
run_corundum_verilator r0_cp
run_corundum_verilator r1_cp
run_corundum_verilator r2_cp
sleep 0.5
run_ns3_sequencer nopaxos_cp "c0_cp" "r0_cp r1_cp r2_cp"
run_gem5 r0_cp r0_cp build/gem5-nopaxos-replica-0-cp.tar TimingSimpleCPU r0 "-r 0 --cosim-sync" nopaxos
run_gem5 r1_cp r1_cp build/gem5-nopaxos-replica-1-cp.tar TimingSimpleCPU r1 "-r 0 --cosim-sync" nopaxos
run_gem5 r2_cp r2_cp build/gem5-nopaxos-replica-2-cp.tar TimingSimpleCPU r2 "-r 0 --cosim-sync" nopaxos
run_gem5 c0_cp c0_cp build/gem5-nopaxos-client-cp.tar TimingSimpleCPU c0 "-r 0 --cosim-sync" nopaxos
client_pid=$!
wait $client_pid
cleanup
#!/bin/bash
source common-functions.sh
init_out gem5-timing-corundum-verilator-ns3-vr-nocp $1
run_corundum_verilator c0
run_corundum_verilator r0
run_corundum_verilator r1
run_corundum_verilator r2
sleep 0.5
run_ns3_sequencer vr "c0" "r0 r1 r2"
run_gem5 r0 r0 build/gem5-vr-replica-0-cp.tar TimingSimpleCPU r0 "--cosim-sync"
run_gem5 r1 r1 build/gem5-vr-replica-1-cp.tar TimingSimpleCPU r1 "--cosim-sync"
run_gem5 r2 r2 build/gem5-vr-replica-2-cp.tar TimingSimpleCPU r2 "--cosim-sync"
run_gem5 c0 c0 build/gem5-vr-client-cp.tar TimingSimpleCPU c0 "--cosim-sync"
client_pid=$!
wait $client_pid
cleanup
#!/bin/bash
source common-functions.sh
init_out gem5-timing-corundum-verilator-pair-cp checkpoint
# first run to checkpoint with fast CPU
run_corundum_verilator a
run_corundum_verilator b
sleep 2
run_wire ab a b
sleep 1
run_gem5 a a build/gem5-pair-server-cp.tar X86KvmCPU server
sleep 1
run_gem5 b b build/gem5-pair-client-cp.tar X86KvmCPU client
client_pid=$!
wait $client_pid
cleanup
echo "Took checkpoint successfully"
#!/bin/bash
source common-functions.sh
init_out gem5-timing-corundum-verilator-pair-cp $1
echo "Restoring from checkpoint"
# then run with timing CPU
run_corundum_verilator a_cp
run_corundum_verilator b_cp
sleep 2
run_wire ab_cp a_cp b_cp
sleep 1
run_gem5 a_cp a_cp build/gem5-pair-server-cp.tar TimingSimpleCPU server "-r 0 --cosim-sync"
sleep 1
run_gem5 b_cp b_cp build/gem5-pair-client-cp.tar TimingSimpleCPU client "-r 0 --cosim-sync"
client_pid=$!
wait $client_pid
cleanup
#!/bin/bash
source common-functions.sh
init_out gem5-timing-corundum-verilator-pair-udp-0m $1
run_corundum_verilator a
run_corundum_verilator b
sleep 0.5
run_wire ab a b
run_gem5 a a build/gem5-pair-server-udp.tar TimingSimpleCPU server "--cosim-sync"
run_gem5 b b build/gem5-pair-client-udp-0m.tar TimingSimpleCPU client "--cosim-sync"
client_pid=$!
wait $client_pid
cleanup
#!/bin/bash
source common-functions.sh
init_out gem5-timing-corundum-verilator-pair-udp-100m $1
run_corundum_verilator a
run_corundum_verilator b
sleep 0.5
run_wire ab a b
run_gem5 a a build/gem5-pair-server-udp.tar TimingSimpleCPU server "--cosim-sync"
run_gem5 b b build/gem5-pair-client-udp-100m.tar TimingSimpleCPU client "--cosim-sync"
client_pid=$!
wait $client_pid
cleanup
#!/bin/bash
source common-functions.sh
init_out gem5-timing-corundum-verilator-pair-udp-10m $1
run_corundum_verilator a
run_corundum_verilator b
sleep 0.5
run_wire ab a b
run_gem5 a a build/gem5-pair-server-udp.tar TimingSimpleCPU server "--cosim-sync"
run_gem5 b b build/gem5-pair-client-udp-10m.tar TimingSimpleCPU client "--cosim-sync"
client_pid=$!
wait $client_pid
cleanup
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment