Makefile 3.81 KB
Newer Older
1
2
3
4
MQNICMOD := $(abspath ../images/mqnic/mqnic.ko)

GUESTS := \
    qemu-pair-client \
5
6
7
8
9
10
11
12
    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 \
13
    qemu-pair-server \
14
15
16
    gem5-pair-client \
    gem5-pair-server-cp \
    gem5-pair-client-cp \
17
18
19
20
21
22
23
24
    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 \
25
26
27
28
29
30
31
32
33
    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 \
Jialin Li's avatar
Jialin Li committed
34
35
36
37
	qemu-nopaxos-replica-0 \
	qemu-nopaxos-replica-1 \
	qemu-nopaxos-replica-2 \
	qemu-nopaxos-client \
38
39
40
41
42
	gem5-nopaxos-client \
	gem5-nopaxos-replica-0-cp \
	gem5-nopaxos-replica-1-cp \
	gem5-nopaxos-replica-2-cp \
	gem5-nopaxos-client-cp \
43
44
45
46
47
48
49
50
51
	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 \

52
# experiments we want for the paper
53
EXPERIMENTS := \
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
    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 \

# all experiments in repo
ALL_EXPERIMENTS := \
    $(EXPERIMENTS) \
79
80
    qemu-corundum-bm-pair \
    qemu-corundum-verilator-pair \
81
82
    gem5-kvm-corundum-bm-pair \
    gem5-timing-corundum-verilator-pair \
83
    qemu-ns3-bridge-pair \
84
    qemu-ns3-dumbbell-pair \
85
    gem5-kvm-ns3-dumbbell-pair \
86
87
88
89
90
    gem5-kvm-corundum-verilator-pair \
    gem5-timing-corundum-verilator-pair-udp \
    gem5-timing-corundum-verilator-pair-largewin \
    gem5-timing-corundum-verilator-pair-16f \

91

92
93
REPLICATION ?= 1

94
95
96
97
BUILDDIR := build
OUTDIR := out

GUESTS_TARS := $(addprefix $(BUILDDIR)/,$(addsuffix .tar, $(GUESTS)))
98
EXPERIMENTS_READY := $(addprefix $(OUTDIR)/,$(addsuffix /ready,$(EXPERIMENTS)))
99

100
all: guest-tars experiments
101
102
103
104
105
106
107

clean:
	rm -rf $(BUILDDIR) $(OUTDIR)

#######################################
# Running experiments

108
109
experiments: $(EXPERIMENTS_READY)

110
111
112
113
114
115
116
117
118
119
120
define run_experiment_repl
$(OUTDIR)/%/$(1)/ready: experiments/%.sh $(GUESTS_TARS)
	bash $$< $(1)
	touch $$@
endef

REPLIDS := $(shell seq $(REPLICATION))

$(foreach i,$(REPLIDS), $(eval $(call run_experiment_repl,$(i))))

$(OUTDIR)/%/ready: experiments/%.sh $(addprefix $(OUTDIR)/%/,$(addsuffix /ready,$(REPLIDS)))
121
	touch $@
122
123
124
125

#######################################
# Guest Tars

126
127
guest-tars: $(GUESTS_TARS)

128
129
130
131
132
133
134
135
136
137
138
139
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))))