/
functions.sh
175 lines (158 loc) · 6 KB
/
functions.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# OpenTelemetry specific functions
# ensure the script is sourced
if [ "${BASH_SOURCE[0]}" -ef "$0" ]
then
echo "Hey, you should source this script, not execute it!"
exit 1
fi
function getAgent() {
if [ ! -f "${BASE_DIR}/lib/opentelemetry-javaagent.jar" ]
then
mkdir -p "${BASE_DIR}/lib"
wget --output-document="${AGENT_JAR}" \
https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jar
fi
}
function startJaeger {
if [ ! -d "${BASE_DIR}/jaeger-1.24.0-linux-amd64" ] ; then
cd "${BASE_DIR}"
wget https://github.com/jaegertracing/jaeger/releases/download/v1.24.0/jaeger-1.24.0-linux-amd64.tar.gz
tar -xvf jaeger-1.24.0-linux-amd64.tar.gz
rm jaeger-1.24.0-linux-amd64.tar.gz
fi
cd "${BASE_DIR}/jaeger-1.24.0-linux-amd64"
"${BASE_DIR}/jaeger-1.24.0-linux-amd64/jaeger-all-in-one" &> "${BASE_DIR}/jaeger-1.24.0-linux-amd64/jaeger.log" &
cd "${BASE_DIR}"
}
function cleanup {
[ -f "${BASE_DIR}/hotspot.log" ] && mv "${BASE_DIR}/hotspot.log" "${RESULTS_DIR}/hotspot-${i}-$RECURSION_DEPTH-${k}.log"
echo >> "${BASE_DIR}/OpenTelemetry.log"
echo >> "${BASE_DIR}/OpenTelemetry.log"
sync
sleep "${SLEEP_TIME}"
}
## Execute Benchmark
function executeBenchmark() {
for index in $MOOBENCH_CONFIGURATIONS
do
if [ $index == 0 ]
then
runNoInstrumentation 0
cleanup
fi
if [ $index == 1 ]
then
runOpenTelemetryNoLogging 1
cleanup
fi
if [ $index == 2 ]
then
runOpenTelemetryLogging 2
cleanup
fi
if [ $index == 3 ]
then
runOpenTelemetryZipkin 3
cleanup
fi
if [ $index == 4 ]
then
runOpenTelemetryPrometheus 4
cleanup
fi
done
}
# experiment setups
function runNoInstrumentation {
# No instrumentation
info " # ${i}.$RECURSION_DEPTH.${k} ${TITLE[$k]}"
echo " # ${i}.$RECURSION_DEPTH.${k} ${TITLE[$k]}" >> "${BASE_DIR}/OpenTelemetry.log"
export BENCHMARK_OPTS="${JAVA_ARGS_NOINSTR}"
"${MOOBENCH_BIN}" --output-filename "${RAWFN}-${i}-$RECURSION_DEPTH-${k}.csv" \
--total-calls "${TOTAL_NUM_OF_CALLS}" \
--method-time "${METHOD_TIME}" \
--total-threads "${THREADS}" \
--recursion-depth "${RECURSION_DEPTH}" \
${MORE_PARAMS} &> "${RESULTS_DIR}/output_${i}_${RECURSION_DEPTH}_${k}.txt"
}
function runOpenTelemetryNoLogging {
# OpenTelemetry Instrumentation Logging Deactivated
k=$1
info " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]}
echo " # ${i}.$RECURSION_DEPTH.${k} "${TITLE[$k]} >> "${BASE_DIR}/OpenTelemetry.log"
export BENCHMARK_OPTS="${JAVA_ARGS_OPENTELEMETRY_LOGGING_DEACTIVATED}"
"${MOOBENCH_BIN}" --output-filename "${RAWFN}-${i}-$RECURSION_DEPTH-${k}.csv" \
--total-calls "${TOTAL_NUM_OF_CALLS}" \
--method-time "${METHOD_TIME}" \
--total-threads "${THREADS}" \
--recursion-depth "${RECURSION_DEPTH}" \
${MORE_PARAMS} &> "${RESULTS_DIR}/output_${i}_${RECURSION_DEPTH}_${k}.txt"
}
function runOpenTelemetryLogging {
# OpenTelemetry Instrumentation Logging
k=$1
info " # ${i}.$RECURSION_DEPTH.${k} ${TITLE[$k]}"
echo " # ${i}.$RECURSION_DEPTH.${k} ${TITLE[$k]}" >> "${BASE_DIR}/OpenTelemetry.log"
export BENCHMARK_OPTS="${JAVA_ARGS_OPENTELEMETRY_LOGGING}"
"${MOOBENCH_BIN}" --output-filename "${RAWFN}-${i}-${RECURSION_DEPTH}-${k}.csv" \
--total-calls "${TOTAL_NUM_OF_CALLS}" \
--method-time "${METHOD_TIME}" \
--total-threads "${THREADS}" \
--recursion-depth "${RECURSION_DEPTH}" \
${MORE_PARAMS} &> "${RESULTS_DIR}/output_${i}_${RECURSION_DEPTH}_${k}.txt"
if [ ! "$DEBUG" = true ]
then
rm "${RESULTS_DIR}/output_${i}_${RECURSION_DEPTH}_${k}.txt"
else
debug "Keeping opentelemetry logging file"
fi
}
function runOpenTelemetryZipkin {
# OpenTelemetry Instrumentation Zipkin
k=$1
startZipkin
info " # ${i}.$RECURSION_DEPTH.${k} ${TITLE[$k]}"
echo " # ${i}.$RECURSION_DEPTH.${k} ${TITLE[$k]}" >> "${BASE_DIR}/OpenTelemetry.log"
export BENCHMARK_OPTS="${JAVA_ARGS_OPENTELEMETRY_ZIPKIN}"
"${MOOBENCH_BIN}" --output-filename "${RAWFN}-${i}-${RECURSION_DEPTH}-${k}.csv" \
--total-calls "${TOTAL_NUM_OF_CALLS}" \
--method-time "${METHOD_TIME}" \
--total-threads "${THREADS}" \
--recursion-depth "${RECURSION_DEPTH}" \
${MORE_PARAMS} &> "${RESULTS_DIR}/output_${i}_${RECURSION_DEPTH}_${k}.txt"
stopBackgroundProcess
sleep "${SLEEP_TIME}"
}
function runOpenTelemetryJaeger {
# OpenTelemetry Instrumentation Jaeger
k=$1
startJaeger
info " # ${i}.$RECURSION_DEPTH.${k} ${TITLE[$k]}"
echo " # ${i}.$RECURSION_DEPTH.${k} ${TITLE[$k]}" >> "${BASE_DIR}/OpenTelemetry.log"
export BENCHMARK_OPTS="${JAVA_ARGS_OPENTELEMETRY_JAEGER}"
"${MOOBENCH_BIN}" --output-filename "${RAWFN}-${i}-${RECURSION_DEPTH}-${k}.csv" \
--total-calls "${TOTAL_NUM_OF_CALLS}" \
--method-time "${METHOD_TIME}" \
--total-threads "${THREADS}" \
--recursion-depth "${RECURSION_DEPTH}" \
${MORE_PARAMS} &> "${RESULTS_DIR}/output_${i}_${RECURSION_DEPTH}_${k}.txt"
stopBackgroundProcess
sleep "${SLEEP_TIME}"
}
function runOpenTelemetryPrometheus {
# OpenTelemetry Instrumentation Prometheus
k=$1
startPrometheus
info " # ${i}.$RECURSION_DEPTH.${k} ${TITLE[$k]}"
echo " # ${i}.$RECURSION_DEPTH.${k} ${TITLE[$k]}" >> "${BASE_DIR}/OpenTelemetry.log"
export BENCHMARK_OPTS="${JAVA_ARGS_OPENTELEMETRY_PROMETHEUS}"
"${MOOBENCH_BIN}" --output-filename "${RAWFN}-${i}-${RECURSION_DEPTH}-${k}.csv" \
--total-calls "${TOTAL_NUM_OF_CALLS}" \
--method-time "${METHOD_TIME}" \
--total-threads "${THREADS}" \
--recursion-depth "${RECURSION_DEPTH}" \
${MORE_PARAMS} &> "${RESULTS_DIR}/output_${i}_${RECURSION_DEPTH}_${k}.txt"
stopBackgroundProcess
sleep $SLEEP_TIME
}
# end