PowerPoint Presentation

Similar documents
Oracle パブリック・クラウド・サービス無料トライアル 申込手順書

How to Use the PowerPoint Template

2

開発・運用時のガイド JDK8への移行に伴う留意点 [UNIX]

Null

How to Use the PowerPoint Template

Java Day Tokyo 2017 ダウンロード資料

Microsoft PowerPoint ppt

ベース0516.indd

2D/3D CAD データ管理導入手法実践セミナー Autodesk Vault 最新バージョン情報 Presenter Name 2013 年 4 月 2013 Autodesk

[HO-2] NetBeansとGlassFishではじめるJava EE7ハンズオン

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

ダウンロード方法 アルテラのソフトウェアをインストールするためのダウンロード ファイルには以下の種類があります.tar フォーマットのソフトウェアとデバイス ファイルがバンドルされたセット ダウンロードとインストールをカスタマイズするための個別の実行ファイル ディスクに焼いて他の場所にインストールす

IBM Internet Security Systems NTFS ファイルシステム必須 一覧の 以後にリリースされた Service Pack (Release 2 等は除く ) は特に記載の無い限りサポートいたします メモリ 最小要件 512MB 推奨要件 1GB 最小要件 9GB 推奨要件

ダウンロード方法アルテラのソフトウェアをインストールするためのダウンロード ファイルには以下の種類があります.tar フォーマットのソフトウェアとデバイス ファイルの完全なセット ダウンロードとインストールをカスタマイズするための個別の実行ファイル ディスクに焼いて他の場所にインストールするための

Oracle Data Pumpのパラレル機能

HP Workstation 総合カタログ

Veritas System Recovery 18 System Recovery Disk

[3-F] コンテナとJavaとOracle JETによるアプリ開発ハッカソン

WebLogic Server 12c is Java SE 7 Java EE 6 Readiness

Software Tag Implementation in Adobe Products

.N..

橡ボーダーライン.PDF

About me! 足立昌彦 / +Masahiko.Adachi )! バイドゥ株式会社技術顧問 (Simeji)! 株式会社カブク Co-Founder! Google Developer Expert (Android)

Introduction Purpose This training course describes the configuration and session features of the High-performance Embedded Workshop (HEW), a key tool

Oracle Corporation

IronPython による柔軟なゲーム開発 筑波大学 AmusementCreators

PowerPoint Presentation

第 7 章 ユーザー データ用表領域の管理 この章では 表や索引を格納するユーザー データ用表領域の作成や 作成後のメンテナンスに ついて解説します 1. ユーザー データ用表領域の管理概要 2. ユーザー データ用表領域作成時の考慮事項 3. ユーザー データ用表領域の作成 4. ユーザー データ

Javaセキュアコーディングセミナー2013東京第1回 演習の解説

テクニカルホワイトペーパー HP Sure Run HP PC のハードウェア強制されたアプリケーション永続性 HP Sure Run は ハードウェア強制アプリケーション永続化ソリューションで OS の実行中にポリシー適用ハードウェアとの通信を維持する機能を備えています OS 内の HP Sure

基本操作ガイド

操作ガイド(本体操作編)

How to Use the PowerPoint Template

Oracle Application Server 10g( )インストール手順書

Microsoft Word - HowToSetupVault_mod.doc

開発・運用時のガイド JDK11への移行に伴う留意点

17章 プログラムの提供

1. 電 子 メール カレンダー 連 絡 先 の 統 合 Outlook は 受 信 箱 の 操 作 方 法 が 一 貫 して いる 点 が 何 も 考 えなくても 自 然 に 操 作 できる と お 客 様 に 好 評 です Gmail では 操 作 性 に 影 響 する 機 能 更 新 が 頻

操作ガイド(本体操作編)

Slide 1

Introduction Purpose This training course demonstrates the use of the High-performance Embedded Workshop (HEW), a key tool for developing software for

Oracle データベース移行計画アセスメント:移行前

CUCM と VCS 間のセキュア SIP トランクの設定例

HTTP 404 への対処

パフォーマンス徹底比較 Seasar2 vs Spring 2006/04/12 株式会社電通国際情報サービスひがやすを株式会社アークシステム本間宏崇 Copyright the Seasar Foundation and the others all rights reserved.

TH-47LFX60 / TH-47LFX6N

PostgreSQL SQL チューニング入門 ~ Explaining Explain より ~ 2012 年 11 月 30 日 株式会社アシスト 田中健一朗

Oracle Data Pumpのパラレル機能

IM-SecureSignOn

自己紹介 長田悠吾 (Yugo Nagata) SRA OSS, Inc. 日本支社 PostgreSQL 技術支援 コンサルティング PostgreSQL インターナル講座講師 研究開発 Copyright 2018 SRA OSS, Inc. Japan All right

~~~~~~~~~~~~~~~~~~ wait Call CPU time 1, latch: library cache 7, latch: library cache lock 4, job scheduler co

富士通製プラットフォーム 「PRIMEPOWER/PRIMERGY」及び、富士通製ミドルウェア 「Interstage」とVantage Analyzer 動作検証完了報告書

WebOTXプロファイラを使用したメモリリーク調査方法

Oracle Application Server 10g(9

— intra-mart Accel Platform セットアップガイド (WebSphere編)   第7版  

untitled

基本操作ガイド


Salesforce DX.key

HULFT-DataMagic Ver2.2.0 製品対応OS

untitled

Microsoft Word - QlikView Server Memory Management and CPU Utilization_Technical Brief_Jpn.docx

Transcription:

JDK 8 JVM Improvements David Buck Java SE Sustaining Engineering 日本オラクル株式会社 #jdt2014_c2 1

The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle s products remains at the sole discretion of Oracle. 2

Hello Everybody! バック デイビッド Java SE の Sustaining Engineering 元 JRockit のエンジニア HotSpot と JRockit 両方の JVM を担当 Blog: https://blogs.oracle.com/buck/ 3

Agenda PermGen の廃止 Tiered Compilation その他の改善 4

PermGen の廃止 JEP 122: Remove the Permanent Generation 5

PermGen とは クラスのメタデータなどを格納する場所 例えば : バイトコード intern された文字列 static フィールドの値 6

7

PermGen の良くないところ サイジングが困難 考えられるポイント ロードするクラスの数 ロードするクラスの大きさ クラスのオーバーヘッド 結局 試行錯誤 デフォルトが小さい : 64MB-85MB パフォーマンスへの悪影響 8

PermGen の良いところ 9

ソリューション PermGen を廃止 Metaspace メタスペースを導入 10

11

Metaspace vs. PermGen ( デフォルトでは ) サイズの制限がない ユーザが意識する必要性がない GC システムが管理する必要がない GC のパフォーマンスが良くなる アンロードを ClassLoader の単位で行う断片化が発生しにくい 12

13

ClassLoader Metachunk 14 各 ClassLoader が自分の Metaspace を持つ Metaspace が複数の Metachunk を持つ Virtualspace が複数の Metachunk を含む Virtual Space

High Water Mark ( 高水位標 ) Full GC が発生しないと Metaspace のコレクションが行われない Full GC の頻度が低いシステムのメモリ使用量を制御する必要がある Metaspace のサイズが HWM を超えると Full GC が実行される 調整する必要がある場合 Full GC の頻度が高すぎる時 メモリの使用量が大きすぎる時 15

Compressed Oops ( 圧縮参照 ) の概念 64-bit のマシンでも オブジェクトのアドレスを 32-bit に格納する Java ヒープの使用量を節約 ヒープのベースアドレスからのオフセットを利用 さらにアドレスの LSB を省略 16

Klass ポインターも圧縮しましょう Compressed Oops と同じように Java Heap を節約 Compressed Class Pointer Space (CCPS) というメモリエリアを用意 パフォーマンスに最も影響を及ぼすデータだけを格納する InstanceKlass ArrayKlass vtable それ以外は MetaSpace メソッド バイトコード ConstantPool など 17

18

19

新しいコマンドラインのオプション -XX:MaxMetaspaceSize デフォルト = unlimited MetaSpace の最大サイズ ( バイト数 ) を設定する 20

新しいコマンドラインオプション -XX:MetaspaceSize デフォルト = 21MB 起動時に Full GC の頻度を減らすために大きくする 21

新しいコマンドラインオプション -XX:MinMetaspaceFreeRatio デフォルト = 40 -XX:MaxMetaspaceFreeRatio デフォルト = 70 High Water Mark の拡張と縮小を制御する 22

新しいコマンドラインオプション -XX:+UseCompressedClassPointers 64-bit では デフォルトで有効 -XX:CompressedClassSpaceSize デフォルト = 1G 変更が出来ないため デフォルト値が大きい 起動時にはメモリを reserve するだけ 必要に応じて commit していく 23

MBean の変更 新しい MemoryManagerMXBean: MetaspaceManager 新しいメモリプール MXBean: Metaspace と CompressedClassSpace 両方とも MemoryType.NON_HEAP Metaspace の Usage は両方 (MS と CCS) の合計 PermGen メモリプールがなくなりました 24

ツールも対応する jmap -permstat jmap -clstats jstat -gc jcmd <pid> GC.class_stats 対象の JVM のコマンドラインで -XX:+UnlockDiagnosticVMOptions を追加することが必要 25

Tiered Compilation ( 階層型コンパイル ) 26

ちょっと待って これは JDK8 の新機能ではないでしょう! 古い実装は HotSpot Express で 6u25 までバックポートされました JDK8 ではようやくデフォルトで有効! JDK8 の新しい実装は従来のバージョンよりかなり充実 27

背景 : HotSpot の二つの JIT コンパイラ C1 (-client) コンパイル処理が速い 生成されるコードが ( 比較的 ) 速くない C2 (-server) コンパイル処理に時間がかかる 生成されるコードが速い 28

つまり 起動を速くしたい場合 : C1 起動後のパフォーマンスが必要な場合 : C2 29

Tiered Compilation の概要 Tiered Compilation は両方のコンパイラを平行で利用 速い起動 起動後のパフォーマンスもいい 30

Tiered Compilation の概要 従来の流れ C1 (client) ステップ1: インタプリタ実行しながら Hot なメソッドを検出する ステップ2: ネイティブ Hot と判断したメソッドを JIT コンパイルし 実行する 31

Tiered Compilation の概要 従来の流れ C2 (server) ステップ1: インタプリタ実行しながらプロファイリングする ステップ2: ネイティブ Hot と判断したメソッドを 1で取得したプロファイリングデータを使って JIT コンパイルし 実行する 32

Tiered Compilation の概要 重要なポイント! C2 がプロファイリングデータを必要とするので データを取得するためにインタプリタのフェーズが長い 33

Tiered Compilation の概要 インタプリタと C2 の間に C1 を入れて C1 でプロファイリングのデータを取得 34

コンパイルのレベル level 0 - インタプリタ level 1 - C1 フル最適化 ( プロファイリングなし ) level 2 - C1 呼び出し (invocation) とループ (back-edge) のプロファイリング level 3 - C1 フルプロファイリング (level 2 + MDO) Level 2 より約 30% 遅い level 4 - C2 branch call receiver type typecheck 35

コンパイルレベルの遷移 一番理想的なシナリオ level 0 -> level 3 -> level 4 0: インタプリタで実行され Hot メソッドとして検出される 3: フルプロファイリングのC1でコンパイルされる 4:C2が3のデータを使って 再コンパイルする 36

コンパイルレベルの遷移 コンパイラのキューイング それぞれのコンパイラにキューが存在 C1 キュー C2 キュー コンパイルスレッドを待っているタスクがキューイングされる C1 キューの長さによってコンパイルの閾値 (CompileThreshold) が自動的に調整される C2 のキューの長さによってメソッドが 0 から 2 にコンパイル 37

コンパイルレベルの遷移 0 -> 3 -> 4 ( 一番理想的 ). 0 -> 2 -> 3 -> 4 (C2 のキューが長すぎ ). 0 -> (3->2) -> 4 ( キューで行き先が変更される ). 0 -> 3 -> 1 or 0 -> 2 -> 1 (trivial C2 がコンパイル出来ないメソッド ). 0 -> 4 (C1 でコンパイルが出来ない, インタプリタでフルプロファイリング ). (1,2,3,4) 0 ( 脱最適化 (deoptimization) ) 38

コマンドラインのオプション トラブルシューティングで役に立つ -XX:+PrintCompilation 63 1 3 java.lang.string::equals (81 bytes) 63 2 n 0 java.lang.system::arraycopy (native) (static) 64 3 3 java.lang.math::min (11 bytes) 64 4 3 java.lang.string::charat (29 bytes) 66 6 3 java.lang.string::indexof (70 bytes) 時間 ( ミリ秒 ) ID コンパイルレベルメソッド名サイズ 39

コマンドラインのオプション トラブルシューティングで役に立つ -XX:+PrintTieredEvents 0.169833: [call level=0 [java.lang.object.<init>()v] @-1 queues=0,0 rate=n/a k=1.00,1.00 total=128,0 mdo=0(0),0(0) max levels=0,0 compilable=c1,c1-osr,c2,c2-osr status=idle] イベント : call, loop, compile, remove-from-queue, update-in-queue, reprofile レベル : 0,2,3 ( イベントが発生したレベル ) キューの状態 (C1 キュー, C2 キュー ) 呼び出しのレート 呼び出しのカウンター : 合計, mdo コンパイルの可能性 状態 (idle in-queue など) 40

Deployment Time (s) JEE Application Deployment Tiered Compilation 10 9 8 7 6 5 4 3 2 1 0 Application 1 Application 2 Pre-Compiled Application Server Compiler Tiered Compiler 41

その他の改善 42

JMX で診断コマンドを実行 ローカルで jcmd コマンドだけではなく ネットワーク経由で診断コマンドの実行も可能 43

フォールスシェアリングの回避 JEP 142: Reduce Cache Contention on Specified Fields キャッシュラインのフォールスシェアリングの回避 Fork / Join で競合されるフィールドが唯一のキャッシュラインに格納されるように オブジェクトのレイアウト ( パッド ) を自動的に行う 44

JSR-292 のパフォーマンス改善 Invoke Dynamic の実装が一新され かなり速くなった Lambda と Nashorn のパフォーマンスに大きい貢献 45

Speedup JavaScript Engine Nashorn JSR 292 - InvokeDynamic 8 7 6 5 4 3 2 1 0 JDK 7 - Rhino JDK 8 - Nashorn 46

JVM 側で直接のサポートの追加 java.util.concurrent のパフォーマンス改善 AES 暗号化のパフォーマンス改善 など X86/AMD64 の AES 専用命令を利用 JEP 171: Fence Intrinsics JEP 164: Leverage CPU Instructions for AES Cryptography +α 47

もう使う意味がない GC の組み合わせが非推奨に JEP 173: Retire Some Rarely-Used GC Combinations JDK 9 でサポートされなくなる予定 -XX:-UseParNewGC -XX:+UseConcMarkSweepGC (DefNew + CMS) -XX:+UseParNewGC (ParNew + SerialOld) -Xincgc (ParNew + icms) -XX:+CMSIncrementalMode -XX:+UseConcMarkSweepGC (ParNew + icms) -XX:+CMSIncrementalMode -XX:+UseConcMarkSweepGC -XX:-UseParNewGC (DefNew + icms) 48

Max-jOPS 結果として SPECjbb2013 Improvement 120000 100000 80000 60000 40000 20000 0 JDK 7u17 JDK 7u40 JDK 8 Oracle JDK 7u17 Oracle SPARC T5-2 75658 SPECjbb2013-MultiJVM Max-jOPS, 23334 SPECjbb2013-MultiJVM Critical-jOPS Oracle JDK 7u40 Oracle SPARC T5-2 81084 SPECjbb2013-MultiJVM Max-jOPS, 39129 SPECjbb2013-MultiJVM Critical-jOPS Oracle JDK 8 Oracle SPARC T5-2 114492 SPECjbb2013-MultiJVM Max-jOPS, 43963 SPECjbb2013-MultiJVM Critical-jOPS Source: www.spec.org as of March 10 th 2014 SPEC and the benchmark name SPECjbb are registered trademarks of Standard Performance Evaluation Corporation (SPEC) 49

Thank You! 50

51