Auto-tuning HotSpot JVM using OpenTuner OpenTuner Workshop - - PowerPoint PPT Presentation

auto tuning hotspot jvm using opentuner
SMART_READER_LITE
LIVE PREVIEW

Auto-tuning HotSpot JVM using OpenTuner OpenTuner Workshop - - PowerPoint PPT Presentation

Auto-tuning HotSpot JVM using OpenTuner OpenTuner Workshop International Symposium on Code Generation and Optimization 2015 Milinda Fernando (CSE,Univ. of Moratuwa) Tharindu Rusira (CSE, Univ. of Moratuwa) Chalitha Perera (CSE, Univ. of


slide-1
SLIDE 1

Auto-tuning HotSpot JVM using OpenTuner

Milinda Fernando (CSE,Univ. of Moratuwa) Tharindu Rusira (CSE, Univ. of Moratuwa) Chalitha Perera (CSE, Univ. of Moratuwa) Chamara Philips (CSE, Univ. of Moratuwa)

  • Prof. Sanath Jayasena (CSE, Univ. of Moratuwa)
  • Prof. Saman Amarasinghe (CSAIL, MIT)

OpenTuner Workshop International Symposium on Code Generation and Optimization 2015

slide-2
SLIDE 2

Motivation

  • Java Virtual machine is a complex piece of Software
  • Responsible for providing execution environment for Java

programs

  • What if the JVM can execute Java applications better

(faster?)

slide-3
SLIDE 3

JVM and Complexity

  • HotSpot JVM
  • More than 600 tunable flags and parameters
  • How to handle a configuration space of this scale?
slide-4
SLIDE 4

OpenTuner[1]

[1] J. Ansel, S. Kamil, K. Veeramachaneni, U.-M. O'Reilly and S. Amarasinghe, "OpenTuner: An Extensible Framework for Program Autotuning," in MIT CSAIL Technical Report MIT-CSAIL-TR-2013-026, November 1, 2013.

  • [1] provides results for a number of successful case studies
  • GCC/G++ auto-tuner inspired a solution for JVM auto-tuning
  • Multiple search techniques
  • Evolutionary algorithms allow to reach optima aggressively in non-trivial

configuration landscapes

  • works best with massive search spaces and manages computational complexity

really well

slide-5
SLIDE 5

Configuration Manipulator

Used to define the configuration space

def m ani pul ator( sel f ) : m = m ani pul at

  • r

. Confi gur at i

  • nM ani

pul at

  • r

( ) f

  • r

fl ag_set i n sel f . bool _fl ags: f

  • r

fl ag i n fl ag_set : m . add_par am et er ( m ani pul at

  • r

. Enum Par am et er ( fl ag, [ '

  • n'

, '

  • ff

' ] ) ) f

  • r

fl ag_set i n sel f . par am _fl ags: f

  • r

fl ag i n fl ag_set : val ue = fl ag_set [ fl ag] i f ( val ue[ ' m i n' ] > = val ue[ ' m ax' ] ) : m . add_par am et er ( m ani pul at

  • r

. I nt eger Par am et er ( val ue[ ' fl agnam e' ] , val ue[ ' m ax' ] , val ue[ ' m i n' ] ) ) el se: m . add_par am et er ( m ani pul at

  • r

. I nt eger Par am et er ( val ue[ ' fl agnam e' ] , val ue[ ' m i n' ] , val ue[ ' m ax' ] ) return m

slide-6
SLIDE 6

Run function

Measures the quality (fitness) of a given configuration. Eg.

  • For SPECjvm2008, operations per minute (ops/m)
  • For DaCapo, execution time in ms
slide-7
SLIDE 7

JVM Flag Hierarchy

7

JVM flags

ByteCode CodeCache Compilation DeOptimization GC Interpreter Memory Priorities Temporary TieredCompilation + C1

if (TieredCompilation) == TRUE

C2

Common

CMS G1 Throughput Collector ParallelOld Parallel Serial

slide-8
SLIDE 8

JVM Tuner

slide-9
SLIDE 9

Performance Improvement of SPECjvm2008 Startup Benchmarks

slide-10
SLIDE 10

Performance Improvement of Dacapo Benchmarks

slide-11
SLIDE 11

What happens to the JVM when auto-tuned?

  • Observations on heap usage, compilation and class loading before and after tuning
  • Compilation rate has a major impact on performance

DaCapo pmd benchmark CR (38.73%) DaCapo h2 benchmark CR (5.76%)

slide-12
SLIDE 12

Thank You