Optimizing a sample Java OpenJ9 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: java-ibm-j9vm-8
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/j9_opts.template
key: key
target:
hostname: pagerank.akamas.io
username: ubuntu
path: /home/ubuntu/renaissance/j9_opts
key: key
- name: Run benchmark
operator: Executor
arguments:
command: "cd renaissance; java -javaagent:./jmx_exporter.jar=5556:conf.yaml $(cat j9_opts) -jar renaissance.jar -r 2 page-rank"
host:
hostname: pagerank.akamas.io
username: ubuntu
key: key ${jvm.j9vm_gcPolicy} ${jvm.j9vm_maxHeapSize} ${jvm.j9vm_newSpaceFixed} ${jvm.j9vm_minFreeHeap} ${jvm.j9vm_maxFreeHeap} ${jvm.j9vm_gcThreads}akamas create workflow workflow.yamlprovider: Prometheus
config:
address: pagerank.akamas.io
port: 9090akamas create telemetry-instance prometheus.yaml pagerankname: Optimize PageRank
description: Tweaking the Eclipse OpenJ9 parameters to optimize the page-rank benchmark.
system: pagerank
workflow: run-pagerank
goal:
objective: minimize
function:
formula: memory_used:max
variables:
memory_used:
metric: jvm.jvm_memory_used
parametersSelection:
- name: jvm.j9vm_gcPolicy
- name: jvm.j9vm_maxHeapSize
domain: [1250, 2000]
- name: jvm.j9vm_newSpaceFixed
domain: [350, 2000]
- name: jvm.j9vm_minFreeHeap
- name: jvm.j9vm_maxFreeHeap
- name: jvm.j9vm_gcThreads
parameterConstraints:
- name: Max heap must always be greater than the new size
formula: jvm.j9vm_maxHeapSize > jvm.j9vm_newSpaceFixed
- name: Max free always greater than min free
formula: jvm.j9vm_minFreeHeap + 0.05 < jvm.j9vm_maxFreeHeap
steps:
- name: baseline
type: baseline
values:
jvm.jvm_gcType: gencon
jvm.jvm_maxHeapSize: 2000
- name: optimize
type: optimize
numberOfExperiments: 30akamas create study study.yaml
akamas start study 'Optimize PageRank'