Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding Renaissance Benchmark #51

Draft
wants to merge 77 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 68 commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
e1260ac
Create getmetrics-promql.sh
Prakalp23 Jul 15, 2022
fa68aab
Create getmetrics-promql.sh
Prakalp23 Jul 15, 2022
f9fc6f7
Delete getmetrics-promql.sh
Prakalp23 Jul 15, 2022
5d80c20
Rename getmetrics-promql.sh to getmetrics1-promql.sh
Prakalp23 Jul 15, 2022
115d4f7
Update getmetrics1-promql.sh
Prakalp23 Jul 15, 2022
0e41f94
Update getmetrics1-promql.sh
Prakalp23 Jul 16, 2022
d92ad51
Create renaissance-run.sh
Prakalp23 Jul 16, 2022
8ef4f37
Create renaissance-common.sh
Prakalp23 Jul 17, 2022
d773071
Update renaissance-run.sh
Prakalp23 Jul 17, 2022
eb1b05d
Create renaissance-cleanup.sh
Prakalp23 Jul 18, 2022
cc23294
Update renaissance-run.sh
Prakalp23 Jul 18, 2022
708638d
Create parsemetrics-wrk.sh
Prakalp23 Jul 18, 2022
754adae
Create common.sh
Prakalp23 Jul 18, 2022
5a47cf8
Create deploy.sh
Prakalp23 Jul 18, 2022
4ebd7d0
Update renaissance-run.sh
Prakalp23 Jul 18, 2022
7f3572c
Update renaissance-run.sh
Prakalp23 Jul 18, 2022
c52b5e0
Rename getmetrics1-promql.sh to getmetrics-promql.sh
Prakalp23 Jul 18, 2022
2bf007b
Create test
Prakalp23 Jul 18, 2022
22c7b33
Rename renaissance/common.sh to renaissance/scripts/common.sh
Prakalp23 Jul 18, 2022
02a68e8
Rename renaissance/deploy.sh to renaissance/scripts/deploy.sh
Prakalp23 Jul 18, 2022
8d44801
Update deploy.sh
Prakalp23 Jul 18, 2022
1d23b76
Rename renaissance/getmetrics-promql.sh to renaissance/scripts/getmet…
Prakalp23 Jul 18, 2022
1051fe3
Rename renaissance/parsemetrics-wrk.sh to renaissance/scripts/parseme…
Prakalp23 Jul 18, 2022
494b5b2
Rename renaissance/renaissance-cleanup.sh to renaissance/scripts/rena…
Prakalp23 Jul 18, 2022
243bef0
Rename renaissance/renaissance-common.sh to renaissance/scripts/renai…
Prakalp23 Jul 18, 2022
2ff505c
Rename renaissance/renaissance-run.sh to renaissance/scripts/renaissa…
Prakalp23 Jul 18, 2022
606349e
Create deployement.yaml
Prakalp23 Jul 18, 2022
b3686fd
Create config.yaml
Prakalp23 Jul 18, 2022
abc34c5
Delete test
Prakalp23 Jul 18, 2022
5014f5e
Update deploy.sh
Prakalp23 Jul 18, 2022
604ffd7
Update and rename deploy.sh to renaissance-deploy.sh
Prakalp23 Jul 18, 2022
c5da69a
Update renaissance-common.sh
Prakalp23 Jul 18, 2022
175bc4b
Update getmetrics-promql.sh
Prakalp23 Jul 18, 2022
eb0ec80
Update renaissance-run.sh
Prakalp23 Jul 18, 2022
db8c79d
Update renaissance-run.sh
Prakalp23 Jul 18, 2022
5642e99
Update renaissance-deploy.sh
Prakalp23 Jul 18, 2022
b52f955
Update renaissance-cleanup.sh
Prakalp23 Jul 18, 2022
02549fb
Update and rename deployement.yaml to renaissance.yaml
Prakalp23 Jul 18, 2022
5286e63
Create Dockerfile
Prakalp23 Jul 18, 2022
c61e0ff
Rename renaissance/manifests/config.yaml to renaissance/docker/config…
Prakalp23 Jul 18, 2022
d4b0955
Create service-monitor.yaml
Prakalp23 Jul 18, 2022
f1d4351
fixing issues
Prakalp23 Jul 18, 2022
b399d66
Rename renaissance/scripts/common.sh to renaissance/scripts/utils/com…
Prakalp23 Jul 19, 2022
30cb78d
Create parsemetrics-promql.sh
Prakalp23 Jul 19, 2022
17913f0
Update Dockerfile
Prakalp23 Jul 19, 2022
035f54e
Create readme
Prakalp23 Jul 19, 2022
a398e7f
Fixed some prometheus queries and errors
Prakalp23 Jul 19, 2022
efaa8f0
fixed issues
Prakalp23 Jul 20, 2022
add72fc
fixed issues
Prakalp23 Jul 20, 2022
6f2cf62
commiting changes made to parsemetrics-promql.sh
Prakalp23 Jul 22, 2022
da9fd9b
latest changes
Prakalp23 Jul 23, 2022
b90987c
changed few names in the script
Prakalp23 Jul 24, 2022
7df183c
errors fixed
Prakalp23 Jul 24, 2022
023ea32
changes made to parsemetrics-promql.sh
Prakalp23 Jul 25, 2022
aeba996
changes made to script
Prakalp23 Jul 25, 2022
6ea2a63
changes to scripts
Jul 27, 2022
d5246a0
changes to script
Prakalp23 Jul 27, 2022
3797bc8
changes to remove [] from results
Prakalp23 Jul 28, 2022
eb58112
fixed json format type
Prakalp23 Aug 17, 2022
9698bd0
Made changes to get the results in specific JSON format
Prakalp23 Aug 19, 2022
0e5ec5b
Updating the indentation of the scripts
Prakalp23 Sep 9, 2022
b96b527
Some more changes to the outline of the scripts
Prakalp23 Sep 9, 2022
df85794
Made changes to the copyright year in the scripts
Prakalp23 Sep 9, 2022
b7db1b6
Made the required changes to scripts
Prakalp23 Sep 9, 2022
3c1074d
Made changes to parsedatalog and parsememlog
Prakalp23 Sep 10, 2022
35dcef3
Made changes to the performance scripts
Prakalp23 Sep 12, 2022
86497f1
fixed the output format
Prakalp23 Sep 12, 2022
c718559
Add files via upload
Prakalp23 Sep 12, 2022
8815db4
Update Dockerfile
Prakalp23 Nov 14, 2022
a4d6982
Update Dockerfile
Prakalp23 Nov 14, 2022
e1ef0dc
Update Dockerfile
Prakalp23 Nov 14, 2022
3bee221
Update Dockerfile
Prakalp23 Jan 6, 2023
b02d9f3
Delete renaissance-cleanup.sh
Prakalp23 Jan 6, 2023
e608f62
Delete renaissance-common.sh
Prakalp23 Jan 6, 2023
ac914a4
Delete renaissance-deploy.sh
Prakalp23 Jan 6, 2023
a7b80e1
Add files via upload
Prakalp23 Jan 6, 2023
efe9258
Delete readme
Prakalp23 Jan 6, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ acmeair/acmeair/.metadata
acmeair/acmeair/.classpath
acmeair/acmeair/.project
acmeair/acmeair/.gradle
.idea/
acmeair/jmeter-driver/acmeair-jmeter/build
58 changes: 58 additions & 0 deletions renaissance/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@

# About The Benchmark
The Renaissance Benchmark Suite aggregates common modern JVM workloads, including, but not limited to, Big Data, machine-learning, and functional programming. The suite is intended to be used to optimize just-in-time compilers, interpreters, GCs, and for tools such as profilers, debuggers, or static analyzers, and even different hardware. It is intended to be an open-source, collaborative project, in which the community can propose and improve benchmark workloads.

More information about this benchmark can be found on [Renaissance](https://github.com/renaissance-benchmarks/renaissance)
# Prerequisites
To generate the results from the Renaissance Benchmark,we need to:

- Install minikube(kubernetes cluster),which can be done from [Minikube](https://minikube.sigs.k8s.io/docs/start/) and then install prometheus on the minikube cluster. This can be done by following the steps in the [Autotune Installation](https://github.com/kruize/autotune/blob/master/docs/autotune_install.md).

You,also need to install a driver of your choice for running renaissance onto your local system

Download a driver (docker or podman)

[Docker](https://docs.docker.com/engine/install/)

[Podman](https://podman.io/getting-started/installation)

# How To Run This Benchmark

To run the benchmark on kubernetes cluster to collect performance metrics

./scripts/perf/renaissance-run.sh --clustertype=CLUSTER_TYPE -s BENCHMARK_SERVER -e RESULTS_DIR_PATH [-w WARMUPS] [-m MEASURES] [-i TOTAL_INST] [--iter=TOTAL_ITR] [-r= set redeploy to true] [-n NAMESPACE] [-g RENAISSANCE_IMAGE] [--cpureq=CPU_REQ] [--memreq=MEM_REQ] [--cpulim=CPU_LIM] [--memlim=MEM_LIM] [-b BENCHMARKS] [-R REPETITIONS] [-d DURATION] "

- **CLUSTER_TYPE**: Type of cluster. Supports openshift , minikube.
- **BENCHMARK_SERVER**: Name of the cluster you are using
- **RESULTS_DIR_PATH**: Directory to store results
- **DURATION**: Duration of each warmup and measurement run.
- **WARMUPS**: No.of warmup runs.
- **MEASURES**: No.of measurement runs.
- **ITERATIONS**: No.of iterations.
- **CPU_REQ**: CPU request
- **MEM_REQ**: Memory request
- **CPU_LIM**: CPU limit
- **MEM_LIM**: Memory limit
- **RENAISSANCE_IMAGE**:prakalp23/renaissance1041:latest
- **BENCHMARKS**:Choice of a microbenchmark from Renaissance [Microbenchmarks](https://github.com/renaissance-benchmarks/renaissance)

Example:./renaissance-run.sh --clustertype=minikube -s localhost -e ./results -w 1 -m 1 -i 1 --iter=1 -r -n default --cpureq=1.5 --memreq=3152M --cpulim=1.5 --memlim=3152M -b "page-rank" -g prakalp23/renaissance1041:latest -d 60

# The Experiment Results

The experiment results using the above scripts generates a csv file which contains the resource usage information for the Renaissance Benchmark can be found here

[Renaissance Results](https://github.com/Prakalp23/autotune-results/tree/renaissance/Renaissance)


## Scripts Details

| Script Name | What it does? |
|-------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| perf/getmetrics-promql.sh | Has prometheus queries that are required calculate the metrics required for objective function and the benchmark. |
| perf/parsemetrics-promql.sh | Parse the prometheus metrics data to calculate the average , max and min values as per the requirement of the benchmark. |
| perf/ci.php | Use to measure confidence interval of data. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file is missing, can you include this file.

| perf/parsemetrics-wrk.sh | Parse the metrics data from hyperfoil/wrk load simulator. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file has been removed now, can you update the readme as well. Also add details about other scripts.




10 changes: 10 additions & 0 deletions renaissance/docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
FROM eclipse-temurin:17.0.3_7-jre
WORKDIR /target
RUN wget https://github.com/renaissance-benchmarks/renaissance/releases/download/v0.14.1/renaissance-gpl-0.14.1.jar
COPY renaissance-gpl-0.14.1.jar /target/renaissance-gpl-0.14.1.jar
ADD https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.17.0/jmx_prometheus_javaagent-0.17.0.jar
COPY config.yaml config.yaml
ENV JDK_JAVA_OPTIONS=
ENV BENCHMARK=all
ENV TIME_LIMIT=5
ENTRYPOINT java -javaagent:./jmx_prometheus_javaagent-0.17.0.jar=8080:config.yaml ${JDK_JAVA_OPTIONS} -jar /target/renaissance-gpl-0.14.1.jar -t ${TIME_LIMIT} --csv /output/renaissance-output.csv ${BENCHMARK}
2 changes: 2 additions & 0 deletions renaissance/docker/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
rules:
- pattern: ".*"
54 changes: 54 additions & 0 deletions renaissance/manifests/renaissance.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: renaissance-sample
labels:
app: renaissance-app
spec:
replicas: 1
selector:
matchLabels:
app: renaissance-deployment
template:
metadata:
labels:
name: renaissance-deployment
app: renaissance-deployment
# Add label to the application which is used by kruize/autotune to monitor it
app.kubernetes.io/name: "renaissance-deployment"
app.kubernetes.io/layer: "hotspot"
version: v1
spec:
volumes:
- name: test-volume
containers:
- name: renaissance-server
image: prakalp23/renaissance1041:latest
imagePullPolicy: IfNotPresent
env:
ports:
- containerPort: 8080
resources:
requests:
limits:
volumeMounts:
- name: "test-volume"
mountPath: "/opt/jLogs"
---
apiVersion: v1
kind: Service
metadata:
name: renaissance-service
annotations:
prometheus.io/scrape: 'true'
prometheus.io/path: '/metrics'
labels:
app: renaissance-app
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
name: renaissance-port
selector:
name: renaissance-deployment
13 changes: 13 additions & 0 deletions renaissance/manifests/service-monitor.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: renaissance
labels:
team: renaissance-frontend
spec:
selector:
matchLabels:
app: renaissance-app
endpoints:
- port: renaissance-port
path: '/metrics'
2 changes: 2 additions & 0 deletions renaissance/readme
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# to run the benchmark
Prakalp23 marked this conversation as resolved.
Show resolved Hide resolved
./renaissance-run.sh --clustertype=minikube -s localhost -e ./results -w 1 -m 1 -i 1 --iter=1 -r -n default --cpureq=1.5 --memreq=3152M --cpulim=1.5 --memlim=3152M -b "page-rank" -d 60
Loading