Java Drag Race Tuning

6,287 views

Published on

Published in: Technology
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,287
On SlideShare
0
From Embeds
0
Number of Embeds
3,395
Actions
Shares
0
Downloads
15
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide

Java Drag Race Tuning

  1. 1. Java ドラッグレース チューニング Takayoshi Kimura Senior Software Maintenance Engineer Global Support Service, Red Hat
  2. 2. Java VM 起動速度遅い
  3. 3. そんな幻想を !ぶち壊す
  4. 4. 環境 ● Dell Latitude E6320 ● 法人向けラップトップ ● Intel(R) Core(TM) i7-2620M CPU @ 2.70GHz ● 16GB memory
  5. 5. 環境 ● 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
  6. 6. WildFly 8.0.0.Alpha4
  7. 7. started in 2412ms
  8. 8. Tuned WildFly 8.0.0.Alpha4
  9. 9. started in 1059ms
  10. 10. ?なにをしたのか ● 2412ms から 1059ms ● 224% パフォーマンス向上 ● 2 点 ● ふつうに JVM オプションの変更 ● ふつうそんなことやらねーよ、って いう荒技
  11. 11. Java VM オプション ● -client ● 32bit のみ ● -server ● -XX:+TieredCompilation ● -XX:TieredStopAtLevel=1
  12. 12. Java VM オプション ● サーバアプリケーションでは最 適化が抑制されるため長期的に はパフォーマンス不利 ● -client ● -XX:TieredStopAtLevel=1
  13. 13. Java VM オプション ● TieredCompilation ● Java 8 からデフォルトで有効 ● codecache の使用量が多くなる
  14. 14. Java VM オプション ● -Xverify:none ● クラス検証無効化 ● テスト環境や本番環境では検証は有 効にしておこう
  15. 15. デモ ● WildFly 8.0.0.Alpha4 の JVM オ プションチューニング ● 前 : 2400ms ● 後 : 1200ms
  16. 16. !まだいける
  17. 17. 荒技 #!/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 $TMPDIR mkdir -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 . fi rm -rf $TMPDIR
  18. 18. デモ ● WildFly 8.0.0.Alpha4 に荒技適 用 ● 前 : 1200ms ● 後 : 1050ms
  19. 19. まとめ ソフトウェア チューニング前 (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
  20. 20. まとめ ● JVM オプション ● -Xverify:none ● -XX:+TieredCompilation ● -XX:TieredStopAtLevel=1 ● 非圧縮 jar

×