高速JVM Oracle JRockitの全貌 入門編

Like this? Share it with your network

Share

高速JVM Oracle JRockitの全貌 入門編

  • 8,941 views
Uploaded on

高性能JVM「Oracle JRockit」について、内部動作、チューニング手法、お勧め機能「JRockit Flight Recorder」まで幅広くご紹介します。またJava SEの最新トピックについても含まれます。 ...

高性能JVM「Oracle JRockit」について、内部動作、チューニング手法、お勧め機能「JRockit Flight Recorder」まで幅広くご紹介します。またJava SEの最新トピックについても含まれます。

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
8,941
On Slideshare
8,940
From Embeds
1
Number of Embeds
1

Actions

Shares
Downloads
114
Comments
0
Likes
5

Embeds 1

https://si0.twimg.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. <Insert Picture Here>高速JVM Oracle JRockitの全貌 入門編
  • 2. 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。 2 Copyright© 2011, Oracle. All rights reserved.
  • 3. Agenda Oracle JRockitとは Oracle JRockitの内部動作について Oracle JRockitの性能分析、障害解析機能につ いて 3 Copyright© 2011, Oracle. All rights reserved.
  • 4. Oracle JRockit WebLogic Serverを構成する重要コンポーネント • オラクルが提供しサポートする、Java SE完全準拠のServer JVM  x86/x64に最適化した業界最速のJVM(現在はSPARC版も提供)  安定性を保証するヒープメモリ管理  1998年 Ver.1リリースから12年の利用実績 業界最速 安定性世界最高値 SPECjbb2005 GC処理の制御 Last updated: Jun. 3 20109611262 突発的な処理遅延の防止 6972897 安定した挙動を実現 5534233 5210501 レスポンスタイム(ms) 300 300 250 250 200 200 150 150 Oracle Oracle Oracle IBM 100 100 JRockitJRockit Xeon JRockit J9 JVM 通常JVM Oracle JRockitItanium/Linux X5570/Linux AMD Opteron Power/AIX Real time 8384/Linux 4 Copyright© 2011, Oracle. All rights reserved.
  • 5. JRockit の特長 - The Server Side Java VM - サーバサイドJavaの特徴と要求• 特徴 • 要求 • マルチプロセッサマシンでの利用 • 高信頼性 • 長時間稼動 • 可用性/管理性 • 大きなメモリヒープサイズ • 拡張性 • Synchronizationの多用 • 性能 • 動的なクラスローディングの多発 • 小さい単位の処理を多くのスレッド で並行実行 • ソケット通信やファイルI/Oの多用 クライアントサイドでのJavaの利用とは異なった特徴と要求 5 Copyright© 2011, Oracle. All rights reserved.
  • 6. JRockit の特長 - The Server Side Java VM -Java VM処理の比重 CG = Code Generation MM = Memory Management クライアント サーバ TM = Thread Management I/O R R R = Reflection TM CG MM IO MM CG TMクライアントとは異なるサーバサイドの処理要求に特化した Java VMが必要 6 Copyright© 2011, Oracle. All rights reserved.
  • 7. Agenda Oracle JRockitとは Oracle JRockitの内部動作について Oracle JRockitの性能分析、障害解析機能につ いて 7 Copyright© 2011, Oracle. All rights reserved.
  • 8. そもそも、JVMとは? Java ソースコード コンパイル バイトコード 中間コード 配布・実行 JVM JVM JVM JVM JVM ランタイムSolaris HP-UX AIX Linux Windows OS Any Hardware ハードウェアJVM(Java Virtual Machine)・・・Javaプログラムの実行環境 -バイトコードを1行ずつ機械語(Native code)に変換し実行 -各OSの機能を覆い隠す役割も担う 8 Copyright© 2011, Oracle. All rights reserved.
  • 9. JRockit アーキテクチャ ~ネーティブコード生成~Sun JVMの場合• バイトコードのままインタープリタで実行• メソッドの実行回数を常時監視• 実行回数が閾値(-XX:CompileThreshold)を超えたメソッドをコンパイルしてネーティブコードを生成 byte メソッド実行 コンパイル native code 回数監視 code ③ ②インタプリタ実行 ネーティブ実行 ①JRockitの場合① 各メソッドの初回実行時にバイトコードをJITコンパイルしてネーティブコードを生成② バックグランドで動くサンプルスレッドが定期的にアプリケーション・ スレッドの状態を監視し、頻繁に使用されているメソッドをリストアップ③ まだ最適化されていないメソッドのうちで最も使用頻度が高いメソッドを より高速なネーティブコードへ最適化 byte native アプリ 最適化 native JITコンパイル code code スレッド監視 code+ ① ③ ② ネーティブ実行 ネーティブ実行 9 Copyright© 2011, Oracle. All rights reserved.
  • 10. コード最適化を示す例最適化されたコードでは、クラス A を実行するたびにクラス B を実行する必要がない 10 Copyright© 2011, Oracle. All rights reserved.
  • 11. JRockit アーキテクチャ ~スレッドローカルエリア(TLA)~• TLAが無いと ・・・ 各スレッドはオブジェクトをアロケートするたびにヒープのロックを得る必要があるので遅い Thread 1 Thread 2 Thread 3 a = new Object(); b = new Object(); c = new Object(); Heap lock• TLAが有れば ・・・ 各スレッドの専用エリアにオブジェクトをアロケートできるので速い (もちろんアロケート済みオブジェクトは他スレッドからも利用可能) Thread 1 Thread 2 Thread 3 a = new Object(); b = new Object(); c = new Object(); Heap lock TLA for TLA for TLA for TLA for Thread 1 Thread 2 Thread 3 Thread 1 11 Copyright© 2011, Oracle. All rights reserved.
  • 12. JRockit アーキテクチャ ~メモリレイアウト~ 最大32回でプ Javaの「オブジェクト」はSun JVM ロモーション でもJRockitでもヒープに置かれる Sun JVMの場合 ヒープ Javaの「クラス」はSun JVMでは Permanent領域、 JRockitでは New Eden Survivor Native Perm Native領域に置かれる From To Old anent 0 1 32 JRockitではSun JVMにおける Survivor(From&To)に相当する領 Xmn -XX:PermSize -XX:MaxPermSize 域は無く、Nurseryがフルになると Xmx/Xms Oldにすぐに昇格する 1回でプロ JRockitの場合 モーション よって、JRockitでは、初回GCで生 き残ったオブジェクトは全て以降は ヒープ Full GCのチェック対象になるが、 Full GCが発生しても問題ないよう な様々な工夫がされている Nursery Old Native 0 1 JRockitでは高速化等を目的にSun JVMには無い様々な情報がNative Xns Xmx/Xms 領域に置かれる 12 Copyright© 2011, Oracle. All rights reserved.
  • 13. ご参考 Parallel GCとConcurrent GC従来のGCでは、GCを一つのスレッドで実行し、その間アプリケーションスレッドは停止(STOP-THE-WORLD)していました。そのためマルチCPUマシンでGCの間待機するCPUが存在しスループットが低下する原因となりました。これへの対策が、GCを複数スレッドで実行するパラレルGC、アプリケーションを止めずにGCを1スレッドで実行するコンカレントGCです 従来のGC Parallel Concurrent STOP-THE-World!! STOP-THE- World!! CPUに処理 が割り当てら れず性能が 低下 13 Copyright© 2011, Oracle. All rights reserved.
  • 14. JRockit ガーベッジ・コレクション① Parallel Garbage Collection (for New GC and OldGC)JVMは1CPUあたり1GCスレッドを並列に使用して一気にGCを行う。GCの間はアプリケーションスレッドは完全に止まるが、トータルでのアプリケーションのスループットは最も高くなる。 Java application threads Garbage Collector threads 14 Copyright© 2011, Oracle. All rights reserved.
  • 15. JRockit ガーベッジ・コレクション② Mostly Concurrent Garbage Collection (for Old GC)1つのGC専用のスレッドがGC処理のほとんどのフェーズをアプリケーションと同時に行う。GC中のアプリケーションのスループットは落ちるものの、停止は避けられる。 Java application threads Garbage Collector thread GCスレッドがヒープ内のオブジェクトの移動と削除を行う ときのみ、短時間アプリケーションスレッドが止まる。 15 Copyright© 2011, Oracle. All rights reserved.
  • 16. JRockit アーキテクチャ ~ガーベッジ・コレクション~ ガーベッジ・コレクション方式の指定方法 動的GC  重視する指針のみを指定し、GCアルゴリズムについてはJRockitが 内部で最適な組み合わせを動的に選択 重視する指針 指定方法 アプリケーションのスループ ット -XgcPrio:throughput (デフォルト) 個々のGCポーズタイムの短 -XgcPrio:pausetime -XpauseTarget=<n>ms 縮 アプリのレスポンスタイム -XgcPrio:deterministic - (JRockit Real Timeでのみ利 XpauseTarget=<n>ms 用可能) 16 Copyright© 2011, Oracle. All rights reserved.
  • 17. JRockit Real Time 従来のJavaでは困難だった予測可能なレスポンスを実現 従来のJava JRockit Real Time120105 1209075 1056045 903015 75 0 0 2000 4000 6000 8000 10000 12000 14000 16000 18000 60低トランザクション時:GCによる一部タイムアウトが発生しうる 45120 30105 90 75 15 60 45 0 30 0 2000 4000 6000 8000 10000 12000 14000 16000 18000 15 0 0 2000 4000 6000 8000 10000 12000 14000 16000 18000 JRockit Real Timeは、Deterministic GCにより、高トランザクション時: GCによる停止 GC停止時間を抑制 → 安定したレスポンスを提供により、レスポンスタイムが劣化する アプリケーションに手を入れる必要なし 17 Copyright© 2011, Oracle. All rights reserved.
  • 18. Deterministic GC - JRockit Real TimeMostly Concurrent GC をさらに改善 1世代ヒープ(NurseryとOld間の参照や移動のコストを削減) 個々のPauseTimeの制限付け(-XpauseTarget=XXms)  ただし、あくまで努力目標。アプリ特性とヒープ設定によっては守れないことも。 アプリスレッドを止めなければならないGCのフェーズをパラレル化 オブジェクトの生成速度を随時観察し、GCのスケジュールを最適化  例) ヒープ全体を一度にGCするのではなく、複数回の短いGCに分割  例) ヒープが一杯になる前に早めにGCを開始  例) 開始したGCが予定時間内に終わりそうにない場合に、 一旦GCを中止し、可能なら残作業を次回GCに繰り越し Java application threads Garbage Collector threads 18 Copyright© 2011, Oracle. All rights reserved.
  • 19. JRockit動的GCアルゴリズム別性能比較 スループット優先GC ポーズタイム優先GC Deterministic GCポーズタイムスループット ・レスポン ス 19 Copyright© 2011, Oracle. All rights reserved.
  • 20. Agenda Oracle JRockitとは Oracle JRockitの内部動作について Oracle JRockitの性能分析、障害解析機能につ いて 20 Copyright© 2011, Oracle. All rights reserved.
  • 21. JRockit Mission Control JRockit 専用のGUI ベースの運用監視ツール  TCP/IP ベースのプロトコルでリモートのJRockitプロセスの運用監視が可能  監視されるJRockit側は以下のオプションでポートを開けるだけ (エージェント等のインストール不要) 例: -Xmanagement:port=7091,ssl=false,authenticate=false 機能一覧  Management Console: CPU 使用率、ヒープ使用状況、スレッド使用状況、MBean監視  Memory Leak Detector: 迅速なメモリリーク検出、オブジェクトの参照関係の階層表示  JRockit Flight Recorder: GC 詳細情報、ホットパッケージ、ホットメソッド情報 21 Copyright© 2011, Oracle. All rights reserved.
  • 22. Management Console稼動中のJVMを監視するコックピット• リソースの使用状況を把握して性能劣化の原因を探る • CPU使用状況、メモリ使用状況(JVM/Machine)をグラフ表示 • 任意のMBean情報の閲覧、更新、グラフ化、トリガ・アラートの設定 • スレッド情報(スタックトレース、CPUビジー、デッドロック有無)の確認 • メソッドプロファイリング 監視対象に与えるオーバーヘッドは軽微 22 Copyright© 2011, Oracle. All rights reserved.
  • 23. Memory Leak Detector動的なヒープ診断によるメモリリーク検出• メモリリークの原因となるオブジェクトの特定 • サンプル中のオブジェクト増加数、サイズ、インスタンス数、ヒープ中の割合 • 各オブジェクトを参照しているオブジェクトスタックを階層的に表示• 統計情報の取得・監視によるオーバーヘッドは軽微 • GCのマーク・フェーズを巧みに利用してヒープ上のクラス別メモリの統計情報を取得 旧来のヒープダンプ採取方式に比べて飛躍的に軽快 23 Copyright© 2011, Oracle. All rights reserved.
  • 24. Javaアプリケーションの性能問題の分析Management ConsoleによるJVM稼動状況の可視化• 稼動状況をリアルタイムに可視化するJVMコックピット ダイヤル/グラフ形式 でのスタイル表示 頻繁に参照するプロファイルを用 途に合わせてダッシュボード化 任意のJVMプロファイ ルを選択して可視化 24 Copyright© 2011, Oracle. All rights reserved.
  • 25. Javaアプリケーションの性能問題の分析Management Consoleによる稼動状況JVMの可視化• メソッド/スレッドプロファイリングにより処理負荷傾向を検出 メソッドプロファイリングを開始して メソッド毎の実行時間を計測 各スレッドのCPU使用率やデッドロック検出 によりスレッドのリソース利用状況を把握 プロファイリング対象メソッドを 任意に指定してメソッドあたり の処理占有時間を把握 スタックトレースから処理内容を把握 25 Copyright© 2011, Oracle. All rights reserved.
  • 26. Javaアプリケーションの性能問題の分析Memory Leak Detectorによるメモリリーク検出• 増加傾向の高いオブジェクトをメモリリークと推定 • 増え続けるオブジェクト = 解放よりも割り当ての方が多い • 明示的にGCを実施してヒープ使用の増加傾向を正確に把握 傾向分析前に数回GCを実施 増加傾向の高いオブジェクトに注目 増加傾向の高いオブジェク トの関連状況を追跡 26 Copyright© 2011, Oracle. All rights reserved.
  • 27. Javaアプリケーションの性能問題の分析 Memory Leak Detectorによるメモリリーク検出• 参照関係のあるオブジェクトを追跡 • 参照数の多いオブジェクトのタイプを追跡してリーク箇所を追跡 • 参照関係を順次追跡して根本原因となるオブジェクトのタイプを絞り込み リーク傾向のあるオブジェクト タイプの参照関係を展開さらに参照関係を展開し根本原因を絞り込む 参照数の多い参照オブ ジェクトのタイプを追跡 27 Copyright© 2011, Oracle. All rights reserved.
  • 28. Javaアプリケーションの性能問題の分析Memory Leak Detectorによるメモリリーク検出• オブジェクトのタイプからリークしているインスタンスを追跡• インスタンスの追跡により割り当て箇所の特定が可能 リークしているインスタンスを 増加傾向のあるオブジェクトを格納 追跡して割り当て箇所を特定 するオブジェクト・タイプを特定 28 Copyright© 2011, Oracle. All rights reserved.
  • 29. Javaアプリケーションの性能問題の分析Memory Leak Detectorによるメモリリーク検出• 増加傾向のあるオブジェクトのインスタンスを順次追跡• 最終的に該当オブジェクトを保持するスレッドを特定可能 増加傾向のあるオブジェクトを 保持するスレッドを特定 インスタンスの保持関係を追跡 29 Copyright© 2011, Oracle. All rights reserved.
  • 30. Javaアプリケーションの性能問題の分析 Memory Leak Detectorによるメモリリーク検出 • 増加傾向のあるオブジェクトの格納元からトレース • 増加傾向のあるオブジェクトを格納している箇所を特定 • メモリリークを引き起こしている箇所を正確に突き止める スタックトレースから該当オブジェクトの割り当 てを行っているアプリケーション位置を把握増加傾向のあるオブジェクトを格納するインスタンスの割り当てを確認する 増加傾向のあるインスタンスを割り 当てているトレース情報を追跡 30 Copyright© 2011, Oracle. All rights reserved.
  • 31. JRockit Flight Recorder 障害対応を強力に支援するOracle JRockitの新機能[これまでの障害対応の課題] [JRockit Flight Recorderによる解決]•ログでは足りない情報不足 •詳細情報を常時記録•ダウンや再起動による情報消失 •自動ファイル出力機能 メモリ利用率の増加傾向 メモリ内データの JRockit Flight Recorder 内訳と増加率 Java EE/ISV アプリ 特徴②情報消失の防止 自動ファイル出力 記録されるデータ(例) Oracle GUIツール DB関連処理内訳と WebLogic SQL毎の負荷リスト Javaスレッドの処理状況 Server Oracle 自動記録 常時記録 JRockit "録りっぱなし" 特徴③アプリ修正不要 特徴①画期的な低負荷技術 その他多数… 31 Copyright© 2011, Oracle. All rights reserved.
  • 32. 32Copyright© 2011, Oracle. All rights reserved.
  • 33. 33Copyright© 2011, Oracle. All rights reserved.
  • 34. 34Copyright© 2011, Oracle. All rights reserved.
  • 35. 是非JRockitを使ってみてください!!• 評価版ダウンロード • JRockit R28.0(Flight Recorderを搭載したJRockit) • http://www.oracle.com/technology/global/jp/software/products/jrockit/index.ht ml • WebLogic Server 10.3.3(JRockit R28.0を同梱したWebLogic Server) • http://www.oracle.com/technology/global/jp/software/products/ias/htdocs/wls_ main.html• 関連マニュアル • Oracle JRockit Flight Recorder Runtime Guide • http://download.oracle.com/docs/cd/E15289_01/doc.40/e15070/toc.htm • Using WLDF with Oracle JRockit Flight Recorder • http://download.oracle.com/docs/cd/E14571_01/web.1111/e13714/using_flig htrecorder.htm • JRockit -XX Command-Line Option • http://download.oracle.com/docs/cd/E15289_01/doc.40/e15062/optionxx.htm• JRMC Eclipse Update Site • http://www.oracle.com/technology/software/products/jrockit/missioncontrol/updat es/base/4.0.1/eclipse/ 35 Copyright© 2011, Oracle. All rights reserved.
  • 36. あなたにいちばん近いオラクル Oracle Direct まずはお問合せください Oracle Direct 検索 システムの検討・構築から運用まで、ITプロジェクト全般の相談窓口としてご支援いたします。 システム構成やライセンス/購入方法などお気軽にお問い合わせ下さい。 Web問い合わせフォーム フリーダイヤル 専用お問い合わせフォームにてご相談内容を承ります。http://www.oracle.co.jp/inq_pl/INQUIRY/quest?rid=28 0120-155-096 ※フォームの入力には、Oracle Direct Seminar申込時と同じ ※月曜~金曜 9:00~12:00、13:00~18:00 ログインが必要となります。 ※こちらから詳細確認のお電話を差し上げる場合がありますので、ご登録さ れている連絡先が最新のものになっているか、ご確認下さい。 (祝日および年末年始除く) 36 Copyright© 2011, Oracle. All rights reserved.
  • 37. 37Copyright© 2011, Oracle. All rights reserved.
  • 38. 3838 Copyright© 2011, Oracle. All rights reserved.