Skip to content

Commit 34e7066

Browse files
Add some Dacapo benchmarks to be run on PRs (#6911)
1 parent 632ec88 commit 34e7066

File tree

7 files changed

+119
-2
lines changed

7 files changed

+119
-2
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -73,3 +73,4 @@ upstream.env
7373
# Benchmarks #
7474
benchmark/reports
7575
benchmark/tracer
76+
benchmark/dacapo/scratch

.gitlab/benchmarks.yml

+10
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,14 @@ benchmarks-load:
4242
- ./steps/run-benchmarks.sh load
4343
- ./steps/analyze-results.sh load
4444

45+
benchmarks-dacapo:
46+
extends: .benchmarks
47+
script:
48+
- !reference [ .benchmarks, script ]
49+
- ./steps/capture-hardware-software-info.sh
50+
- ./steps/run-benchmarks.sh dacapo
51+
- ./steps/analyze-results.sh dacapo
52+
4553
benchmarks-post-results:
4654
extends: .benchmarks
4755
script:
@@ -53,6 +61,8 @@ benchmarks-post-results:
5361
artifacts: true
5462
- job: benchmarks-load
5563
artifacts: true
64+
- job: benchmarks-dacapo
65+
artifacts: true
5666

5767
.dsm-kafka-benchmarks:
5868
stage: benchmarks

benchmark/Dockerfile

+20
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,22 @@ RUN cd insecure-bank \
3131
&& ./gradlew bootWar \
3232
&& cp build/libs/*.war /insecure-bank.war
3333

34+
# Dacapo download
35+
FROM debian:bookworm-slim as dacapo
36+
RUN apt-get update \
37+
&& apt-get -y install wget unzip \
38+
&& apt-get -y clean \
39+
&& rm -rf /var/lib/apt/lists/*
40+
41+
ARG DACAPO_VERSION=23.11-chopin
42+
# The data for the big benchmarks is removed too ensure the final docker image is not too big
43+
RUN wget -nv -O dacapo.zip https://download.dacapobench.org/chopin/dacapo-$DACAPO_VERSION.zip \
44+
&& mkdir /dacapo \
45+
&& unzip dacapo.zip -d /dacapo/ \
46+
&& rm -rf /dacapo/dacapo-$DACAPO_VERSION/dat/luindex \
47+
&& rm -rf /dacapo/dacapo-$DACAPO_VERSION/dat/lusearch \
48+
&& rm -rf /dacapo/dacapo-$DACAPO_VERSION/dat/graphchi \
49+
&& rm dacapo.zip
3450

3551
FROM debian:bookworm-slim
3652

@@ -75,3 +91,7 @@ ENV PETCLINIC=/app/spring-petclinic.jar
7591

7692
COPY --from=insecure-bank /insecure-bank.war /app/insecure-bank.war
7793
ENV INSECURE_BANK=/app/insecure-bank.war
94+
95+
COPY --from=dacapo /dacapo/ /app/
96+
ARG DACAPO_VERSION=23.11-chopin
97+
ENV DACAPO=/app/dacapo-$DACAPO_VERSION.jar

benchmark/benchmarks.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ rm -rf "${REPORTS_DIR}"
3838
mkdir -p "${REPORTS_DIR}"
3939

4040
if [[ "$#" == '0' ]]; then
41-
for type in 'startup' 'load'; do
41+
for type in 'startup' 'load' 'dacapo'; do
4242
run_benchmarks "$type"
4343
done
4444
else

benchmark/dacapo/benchmark.json

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
{
2+
"name": "dacapo_${BENCHMARK}",
3+
"setup": "bash -c \"mkdir -p ${OUTPUT_DIR}/${VARIANT}\"",
4+
"run": "bash -c \"java ${JAVA_OPTS} -jar ${DACAPO} --converge --scratch-directory=${OUTPUT_DIR}/${VARIANT}/scratch --latency-csv ${BENCHMARK} &> ${OUTPUT_DIR}/${VARIANT}/dacapo.log\"",
5+
"timeout": 150,
6+
"iterations": 1,
7+
"variants": {
8+
"${NO_AGENT_VARIANT}": {
9+
"env": {
10+
"VARIANT": "${NO_AGENT_VARIANT}",
11+
"JAVA_OPTS": ""
12+
}
13+
},
14+
"tracing": {
15+
"env": {
16+
"VARIANT": "tracing",
17+
"JAVA_OPTS": "-javaagent:${TRACER}"
18+
}
19+
},
20+
"profiling": {
21+
"env": {
22+
"VARIANT": "profiling",
23+
"JAVA_OPTS": "-javaagent:${TRACER} -Ddd.profiling.enabled=true"
24+
}
25+
},
26+
"appsec": {
27+
"env": {
28+
"VARIANT": "appsec",
29+
"JAVA_OPTS": "-javaagent:${TRACER} -Ddd.appsec.enabled=true -Ddd.iast.enabled=false"
30+
}
31+
},
32+
"iast": {
33+
"env": {
34+
"VARIANT": "iast",
35+
"JAVA_OPTS": "-javaagent:${TRACER} -Ddd.iast.enabled=true"
36+
}
37+
},
38+
"iast_GLOBAL": {
39+
"env": {
40+
"VARIANT": "iast_GLOBAL",
41+
"JAVA_OPTS": "-javaagent:${TRACER} -Ddd.iast.enabled=true -Ddd.iast.context.mode=GLOBAL"
42+
}
43+
}
44+
}
45+
}

benchmark/dacapo/run.sh

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/usr/bin/env bash
2+
set -eu
3+
4+
source "${UTILS_DIR}/update-java-version.sh" 11
5+
6+
function message() {
7+
echo "$(date +"%T"): $1"
8+
}
9+
10+
run_benchmark() {
11+
local type=$1
12+
13+
message "dacapo benchmark: ${type} started"
14+
15+
# export the benchmark
16+
export BENCHMARK="${type}"
17+
18+
# create output folder for the test
19+
export OUTPUT_DIR="${REPORTS_DIR}/dacapo/${type}"
20+
mkdir -p "${OUTPUT_DIR}"
21+
22+
# substitute environment variables in the json file
23+
benchmark=$(mktemp)
24+
# shellcheck disable=SC2046
25+
# shellcheck disable=SC2016
26+
envsubst "$(printf '${%s} ' $(env | cut -d'=' -f1))" <benchmark.json >"${benchmark}"
27+
28+
# run the sirun test
29+
sirun "${benchmark}" &>"${OUTPUT_DIR}/${type}.json"
30+
31+
message "dacapo benchmark: ${type} finished"
32+
}
33+
34+
if [ "$#" == '2' ]; then
35+
run_benchmark "$2"
36+
else
37+
for benchmark in biojava tomcat ; do
38+
run_benchmark "${benchmark}"
39+
done
40+
fi
41+

benchmark/startup/petclinic/benchmark.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
"appsec_no_iast": {
2828
"env": {
2929
"VARIANT": "appsec",
30-
"JAVA_OPTS": "-javaagent:${TRACER} -Ddd.benchmark.enabled=true -Ddd.benchmark.output.dir=${OUTPUT_DIR}/appsec_no_iast -Ddd.appsec.enabled=true -Ddd.iast.enabled=false"
30+
"JAVA_OPTS": "-Ddd.appsec.enabled=true -Ddd.iast.enabled=false"
3131
}
3232
},
3333
"iast": {

0 commit comments

Comments
 (0)