Optimizing a sample Java OpenJDK application
Last updated
Was this helpful?
Was this helpful?
mkdir renaissance; cd renaissance
wget -O renaissance.jar https://github.com/renaissance-benchmarks/renaissance/releases/download/v0.10.0/renaissance-gpl-0.10.0.jar
wget -O jmx_exporter.jar https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.14.0/jmx_prometheus_javaagent-0.14.0.jar
echo -e '--\nwhitelistObjectNames: ["java.lang:*"]' > conf.yamlname: pagerank
description: A system to tune the pagerank benchmarkakamas create system pagerank.yamlname: jvm
componentType: openjdk-11
properties:
prometheus:
instance: jvm
job: jmx-exporterakamas create component jvm.yaml pagerankname: run-pagerank
tasks:
- name: Configure parameters
operator: FileConfigurator
arguments:
source:
hostname: pagerank.akamas.io
username: ubuntu
path: /home/ubuntu/renaissance/java_opts.template
key: key
target:
hostname: pagerank.akamas.io
username: ubuntu
path: /home/ubuntu/renaissance/java_opts
key: key
- name: Run benchmark
operator: Executor
arguments:
command: "cd renaissance; java -javaagent:./jmx_exporter.jar=5556:conf.yaml $(cat java_opts) -jar renaissance.jar -r 2 page-rank"
host:
hostname: pagerank.akamas.io
username: ubuntu
key: key ${jvm.jvm_gcType} ${jvm.jvm_maxHeapSize} ${jvm.jvm_newSize} ${jvm.jvm_survivorRatio} ${jvm.jvm_maxTenuringThreshold}akamas create workflow workflow.yamlprovider: Prometheus
config:
address: pagerank.akamas.io
port: 9090akamas create telemetry-instance prometheus.yaml pagerankname: Optimize PageRank
description: Tweaking the JVM parameters to optimize the page-rank benchmark.
system: pagerank
workflow: run-pagerank
goal:
objective: minimize
function:
formula: memory_used
variables:
memory_used:
metric: jvm.jvm_memory_used
parametersSelection:
- name: jvm.jvm_gcType
- name: jvm.jvm_maxHeapSize
domain: [1250, 2000]
- name: jvm.jvm_newSize
domain: [350, 2000]
- name: jvm.jvm_survivorRatio
- name: jvm.jvm_maxTenuringThreshold
parameterConstraints:
- name: Max heap must always be greater than new size
formula: jvm.jvm_maxHeapSize > jvm.jvm_newSize
steps:
- name: baseline
type: baseline
values:
jvm.jvm_gcType: G1
jvm.jvm_maxHeapSize: 2000
- name: optimize
type: optimize
numberOfExperiments: 30akamas create study study.yaml
akamas start study 'Optimize PageRank'