Java Drag Race Tuning

21
Java ドラッグレース チューニング Takayoshi Kimura Senior Software Maintenance Engineer Global Support Service, Red Hat
  • date post

    11-Sep-2014
  • Category

    Technology

  • view

    4.796
  • download

    7

description

 

Transcript of Java Drag Race Tuning

Page 1: Java Drag Race Tuning

Java ドラッグレースチューニング

Takayoshi Kimura

Senior Software Maintenance EngineerGlobal Support Service, Red Hat

Page 2: Java Drag Race Tuning

Java VM起動速度遅い

Page 3: Java Drag Race Tuning

そんな幻想を!ぶち壊す

Page 4: Java Drag Race Tuning

環境

● Dell Latitude E6320● 法人向けラップトップ● Intel(R) Core(TM) i7-2620M CPU @

2.70GHz● 16GB memory

Page 5: Java Drag Race Tuning

環境

● Fedora 19 64bit● Linux 3.10.5-201.fc19.x86_64● java-1.7.0-openjdk-1.7.0.25-

2.3.12.3.fc19.x86_64

Page 6: Java Drag Race Tuning

WildFly 8.0.0.Alpha4

Page 7: Java Drag Race Tuning

started in2412ms

Page 8: Java Drag Race Tuning

TunedWildFly

8.0.0.Alpha4

Page 9: Java Drag Race Tuning

started in1059ms

Page 10: Java Drag Race Tuning

?なにをしたのか

● 2412ms から 1059ms● 224% パフォーマンス向上

● 2 点● ふつうに JVM オプションの変更● ふつうそんなことやらねーよ、っていう荒技

Page 11: Java Drag Race Tuning

Java VM オプション

● -client● 32bit のみ

● -server● -XX:+TieredCompilation● -XX:TieredStopAtLevel=1

Page 12: Java Drag Race Tuning

Java VM オプション

● サーバアプリケーションでは最適化が抑制されるため長期的にはパフォーマンス不利● -client● -XX:TieredStopAtLevel=1

Page 13: Java Drag Race Tuning

Java VM オプション

● TieredCompilation● Java 8 からデフォルトで有効● codecache の使用量が多くなる

Page 14: Java Drag Race Tuning

Java VM オプション

● -Xverify:none● クラス検証無効化● テスト環境や本番環境では検証は有効にしておこう

Page 15: Java Drag Race Tuning

デモ

● WildFly 8.0.0.Alpha4 の JVM オプションチューニング● 前 : 2400ms● 後 : 1200ms

Page 16: Java Drag Race Tuning

!まだいける

Page 17: Java Drag Race Tuning

荒技#!/bin/sh

# Example: $ find . -type f -name \*.jar | xargs -n1 fatjar

set -e

JARFILE=$(realpath $1)TMPDIR=/tmp/fatjar.tmp

echo "Fat $JARFILE"rm -rf $TMPDIRmkdir -p $TMPDIR(cd $TMPDIR; jar xf $JARFILE)if [ -f $TMPDIR/META-INF/MANIFEST.MF ]; then jar c0fm $JARFILE $TMPDIR/META-INF/MANIFEST.MF -C $TMPDIR .else jar c0f $JARFILE -C $TMPDIR .firm -rf $TMPDIR

Page 18: Java Drag Race Tuning

デモ

● WildFly 8.0.0.Alpha4 に荒技適用● 前 : 1200ms● 後 : 1050ms

Page 19: Java Drag Race Tuning

まとめソフトウェア チューニング前

(ms)チューニング後(ms)

WildFly 8.0.0.Alpha4 2400 1100

GlassFish 4.0.0 4000 1300

JBoss EAP 6.1.0 2200 1100

JBoss EAP 5.2.0 13800 7000

JRuby 1.7.4 1000 620

Clojure 1.5.1 800 390

Scala 2.10.2 460 410

Groovy 2.1.6 550 270

Page 20: Java Drag Race Tuning

まとめ

● JVM オプション● -Xverify:none● -XX:+TieredCompilation● -XX:TieredStopAtLevel=1

● 非圧縮 jar

Page 21: Java Drag Race Tuning