Java Drag Race Tuning

Preview:

DESCRIPTION

 

Citation preview

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

Takayoshi Kimura

Senior Software Maintenance EngineerGlobal Support Service, Red Hat

Java VM起動速度遅い

そんな幻想を!ぶち壊す

環境

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

2.70GHz● 16GB memory

環境

● 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

WildFly 8.0.0.Alpha4

started in2412ms

TunedWildFly

8.0.0.Alpha4

started in1059ms

?なにをしたのか

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

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

Java VM オプション

● -client● 32bit のみ

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

Java VM オプション

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

Java VM オプション

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

Java VM オプション

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

デモ

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

!まだいける

荒技#!/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

デモ

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

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

(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

まとめ

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

● 非圧縮 jar

Recommended