Makefile 5.96 KB
Newer Older
1
MQNICMOD := $(abspath ../images/mqnic/mqnic.ko)
2
EXP_RUNNER ?= bash
3
4
5

GUESTS := \
    qemu-pair-client \
6
7
8
9
10
11
12
13
    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 \
14
    qemu-pair-server \
15
16
17
    gem5-pair-client \
    gem5-pair-server-cp \
    gem5-pair-client-cp \
18
19
20
21
22
23
24
25
    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 \
26
27
28
29
30
31
32
33
34
    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
35
36
37
38
	qemu-nopaxos-replica-0 \
	qemu-nopaxos-replica-1 \
	qemu-nopaxos-replica-2 \
	qemu-nopaxos-client \
Jialin Li's avatar
Jialin Li committed
39
	qemu-nopaxos-endhost-sequencer \
40
41
42
43
44
	gem5-nopaxos-client \
	gem5-nopaxos-replica-0-cp \
	gem5-nopaxos-replica-1-cp \
	gem5-nopaxos-replica-2-cp \
	gem5-nopaxos-client-cp \
45
46
47
48
49
50
51
52
	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 \
Antoine Kaufmann's avatar
Antoine Kaufmann committed
53
54
    qemu-mtcp-server \
    qemu-mtcp-client \
55
56
    gem5-pair-i40e-server \
    gem5-pair-i40e-client \
57
    gem5-pair-i40e-client-2 \
58
59
    qemu-pair-i40e-server \
    qemu-pair-i40e-client \
60
    qemu-pair-i40e-client-2 \
61
62
    qemu-i40e-rpc-server \
    qemu-i40e-rpc-client \
63
64
    qemu-tas-server \
    qemu-tas-client \
Jialin Li's avatar
Jialin Li committed
65
    qemu-echo-client \
66
67
68
    qemu-echo-server-0 \
    qemu-echo-server-1 \
    qemu-echo-server-2 \
69

70
# experiments we want for the paper
71
EXPERIMENTS := \
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
    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 \

94

95
96
97
#experiments using check points
EXP_CP := \
    gem5-timing-corundum-verilator-pair-cp \
98
    gem5-i40e-pair \
99
    gem5-i40e-mtcp \
100
    gem5-i40e-cc \
101
102
103

#experiments not using check points
EXP_NCP := \
104
    qemu-corundum-bm-echo-switch \
105
106
    qemu-corundum-bm-pair \
    qemu-corundum-bm-switched-1 \
107
    qemu-i40e-bm-mtcp \
108
    qemu-i40e-bm-rpc \
109
    qemu-i40e-bm-pair \
110
    qemu-i40e-bm-tas \
111
    qemu-i40e-bm-cc \
Jialin Li's avatar
Jialin Li committed
112
    qemu-ns3-nopaxos \
Jialin Li's avatar
Jialin Li committed
113
    qemu-ns3-nopaxos-endhost-sequencer \
114

115
116
117
# all experiments in repo
ALL_EXPERIMENTS := \
    $(EXPERIMENTS) \
118
119
    qemu-corundum-bm-pair \
    qemu-corundum-verilator-pair \
120
121
    gem5-kvm-corundum-bm-pair \
    gem5-timing-corundum-verilator-pair \
122
    qemu-ns3-bridge-pair \
123
    qemu-ns3-dumbbell-pair \
124
    gem5-kvm-ns3-dumbbell-pair \
125
126
127
128
129
    gem5-kvm-corundum-verilator-pair \
    gem5-timing-corundum-verilator-pair-udp \
    gem5-timing-corundum-verilator-pair-largewin \
    gem5-timing-corundum-verilator-pair-16f \

130

131
132
REPLICATION ?= 1

133
134
135
136
BUILDDIR := build
OUTDIR := out

GUESTS_TARS := $(addprefix $(BUILDDIR)/,$(addsuffix .tar, $(GUESTS)))
137
EXPERIMENTS_READY := $(addprefix $(OUTDIR)/,$(addsuffix /ready,$(EXPERIMENTS)))
138
139
EXP_CP_READY := $(addprefix $(OUTDIR)/,$(addsuffix /ready,$(EXP_CP)))
EXP_NCP_READY := $(addprefix $(OUTDIR)/,$(addsuffix /ready,$(EXP_NCP)))
140

141
all: guest-tars experiments
142
143
144
145
146
147
148

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

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

149
150
151
REPLIDS := $(shell seq $(REPLICATION))
experiments-ncp: $(EXP_NCP_READY)
experiments-cp: $(EXP_CP_READY)
152
153
experiments: $(EXPERIMENTS_READY)

154
155
define run_ex_ncp_repl
$(OUTDIR)/$(1)/$(2)/ready: experiments/$(addsuffix .sh,$(1)) $(GUESTS_TARS)
156
	$(EXP_RUNNER) $$< $(2)
157
158
159
160
	@# hacks for our NFS :/
	@ls $(OUTDIR) >/dev/null
	@ls $(OUTDIR)/$(1) >/dev/null
	@ls $(OUTDIR)/$(1)/$(2) >/dev/null
161
	touch $$@
162

163
164
endef

165
166
167
168
169
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
170

171
172
define run_ex_cp_repl
$(OUTDIR)/$(1)/$(2)/ready: experiments/$(addsuffix .sh,$(1)) $(OUTDIR)/$(1)/checkpoint/ready $(GUESTS_TARS)
173
	$(EXP_RUNNER) $$< $(2)
174
175
176
177
	@# hacks for our NFS :/
	@ls $(OUTDIR) >/dev/null
	@ls $(OUTDIR)/$(1) >/dev/null
	@ls $(OUTDIR)/$(1)/$(2) >/dev/null
178
179
	touch $$@
endef
180

181
182
183
184
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)
185
	$(EXP_RUNNER) $$<
186
187
188
189
	@# hacks for our NFS :/
	@ls $(OUTDIR) >/dev/null
	@ls $(OUTDIR)/$(1) >/dev/null
	@ls $(OUTDIR)/$(1)/$(2) >/dev/null
190
191
192
193
194
195
196
197
	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))))
198
199
200
201

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

202
203
guest-tars: $(GUESTS_TARS)

204
205
206
207
208
209
210
211
212
213
214
215
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))))