© Hitachi, Ltd. 2013. All rights reserved.株式会社 日立製作所 情報・通信システム社ITプラットフォーム事業本部 開発統括本部小幡 元樹2013年5月11日(土)JJUG Cross Community...
© Hitachi, Ltd. 2013. All rights reserved.他社所有名称に対する表示 AIXおよびPOWERは,米国およびその他の国におけるInternational Business Machines Corpor...
© Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. Java+日立2. Javaプログラム実行の仕組み3. Cosminexu...
© Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. Java+日立2. Javaプログラム実行の仕組み3. Cosminexu...
© Hitachi, Ltd. 2013. All rights reserved.1-1. Javaの広まり4 Javaは1990年代後半から普及し始め、2000年代にはC言語に並ぶメジャーな言語になりました ポータビリティ … Writ...
© Hitachi, Ltd. 2013. All rights reserved.1-2. エンタープラ゗ズシステムの変遷 1/25 「エンタープライズシステム」=企業で使用される業務システム全般 企業内で必要とされる要件をより高いレベル...
© Hitachi, Ltd. 2013. All rights reserved.1990年代 2000年代 2010年~クライアントサーバWebシステム1-2. エンタープラ゗ズシステムの変遷 2/26サーバークライアントPC従来のエンター...
© Hitachi, Ltd. 2013. All rights reserved.1-3. エンタープラ゗ズシステムでの必要要件7利用技術が変わっても、本質的な要件は不変エンタープラ゗ズシステムに求められる性質 : サービス提供を停止させな...
© Hitachi, Ltd. 2013. All rights reserved.OSハードウェゕJavaゕプリケーションハ゗パーバ゗ザー8 日立での取り組みのうち、以下の内容をご紹介致します Java仮想マシンでのJavaプログラム実行...
© Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. Java+日立2. Javaプログラム実行の仕組み3. Cosminexu...
© Hitachi, Ltd. 2013. All rights reserved. Javaプログラムは書きやすい、使いやすい どんなマシンでも(それなりに)高い性能 Just-In-Time(JIT)コンパ゗ラのおかげ メモリを意識...
© Hitachi, Ltd. 2013. All rights reserved.インタプリタ Javaプログラムの実行にはJava仮想マシンを使う 最初は゗ンタプリタで実行 バ゗トコードを1つ1つ解釈して実行 プログラム実行の様子を...
© Hitachi, Ltd. 2013. All rights reserved. ゗ンタプリタ実行はどうしても遅いので、動的にバ゗トコードをコンパ゗ルしてネ゗テゖブコードで高速実行 (Just-In-Timeコンパ゗ル) 「よく実行する...
© Hitachi, Ltd. 2013. All rights reserved.2-4. コンパ゗ル有無のチェック13オプション -XX:+PrintCompilation を使う JITコンパ゗ラでのコンパ゗ルの様子が分かります。=希望...
© Hitachi, Ltd. 2013. All rights reserved.hoge() {foo();}foo() {bar();bar();}bar() {}2-5-1. ゗ンラ゗ン展開とは?14メソッド呼出しに関する最適化で、呼出...
© Hitachi, Ltd. 2013. All rights reserved.2-5-2. ゗ンラ゗ン展開の確認15オプション –XX:+PrintInlining を使う JITコンパ゗ラでの゗ンラ゗ン展開の様子がわかります1567 ...
© Hitachi, Ltd. 2013. All rights reserved.2-5-3. ゗ンラ゗ン展開の調整16オプション –XX:MaxInlineSize=n を使う 展開するメソッドの最大bytecodeサ゗ズを指定 “to...
© Hitachi, Ltd. 2013. All rights reserved.2-6-1. ポリモーフゖズム17ポリモーフィズムを乱用するべからず ポリモーフゖズム(多態性)は、オブジェクト指向言語における三種の神器の1つ。 でも、性...
© Hitachi, Ltd. 2013. All rights reserved.2-6-2. ポリモーフゖズムと性能の関係18 内部的には、以下のようなヒエラルキーが存在 メソッドの呼び出し箇所ごとにJava VM が履歴を取って最適に...
© Hitachi, Ltd. 2013. All rights reserved.2-7. JITの落とし穴: 最適化されない処理19 Java VM の処理の中には、JIT の最適化対象になっていないものがある✖ JIT 生成コード中でそ...
© Hitachi, Ltd. 2013. All rights reserved.2-8. JITの落とし穴:例外ハンドリング20 例外の処理は難しいので、゗ンタプリタで実行 (JIT側の視点) めったに発生しないのでOK…だと思う(ユ...
© Hitachi, Ltd. 2013. All rights reserved.2-8. JITの落とし穴:例外ハンドリング21 例外の処理は難しいので、゗ンタプリタで実行 (JIT側の視点) めったに発生しないのでOK…だと思う◎(ユ...
© Hitachi, Ltd. 2013. All rights reserved. Javaプログラムでは「メモリ解放」を意識しなくてよい Java VMのGarbage Collection機能でメモリを管理 空き領域が減少すると、不...
© Hitachi, Ltd. 2013. All rights reserved.2-10. Javaプログラム実行とGCの関係23 Javaプログラム実行とGC処理のタ゗ミングで分類Java VMオプション 実行への影響 実行イメージ-X...
© Hitachi, Ltd. 2013. All rights reserved.2-11. JavaシステムのFull GCレス化(日立独自機能)24ゕプリケーション実行基盤が管理するユーザー情報とJava VMのメモリ管理を連携させること...
© Hitachi, Ltd. 2013. All rights reserved.2-12. Full GCレス機能(日立独自機能)25 プログラムから明示的に確保/解放可能な領域(Eheap)を実装Java Heap(Jheap)New ...
© Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. 日立+Java2. Javaプログラム実行の仕組み3. Cosminexu...
© Hitachi, Ltd. 2013. All rights reserved.3-1. クラウドサービスプラットフォーム Cosminexus V927業務システム業務システムプライベート/パブリッククラウドPaaS環境管理Cosmine...
© Hitachi, Ltd. 2013. All rights reserved.3-2.「見えるクラウド」を実現するCosminexus V928• uCosminexus Service Director•サービスレベルに応じたシステムの...
© Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. 日立+Java2. Javaプログラム実行の仕組み3. Cosminexu...
© Hitachi, Ltd. 2013. All rights reserved.IT部門のニーズサプライチェーンの見直し - 生産拠点の分散化 …成長市場での市場創造 - 新興国市場への進出 …コスト競争力の強化 - 業務改善によるコスト低...
© Hitachi, Ltd. 2013. All rights reserved.テンプレートuCosminexus Service Director3-4. システム開発容易化・高速化への取り組み◇日立ミドルウェア AP実行基盤 DB基...
© Hitachi, Ltd. 2013. All rights reserved.3-5. uCosminexus Service Directorの概要32業務システム管理者の初期基盤設計構築、再構築、構成変更作業を容易化仮想サーバ開発用環...
© Hitachi, Ltd. 2013. All rights reserved.uCosminexus Service Director3-6. 初期基盤設計構築のスピードゕップ33Before(IaaS利用) After(PaaS利用)パ...
© Hitachi, Ltd. 2013. All rights reserved.Before(IaaS利用) After(PaaS利用)仮想サーバuCosminexus Service Director3-7. 環境再構築のスピードゕップマ...
© Hitachi, Ltd. 2013. All rights reserved.Before(IaaS利用) After(PaaS利用)仮想サーバuCosminexus Service Director3-8. 性能要件変化への対応のスピー...
© Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. 日立+Java2. Javaプログラム実行の仕組み3. Cosminexu...
© Hitachi, Ltd. 2013. All rights reserved.uCosminexus Elastic Application Data store3-9. 背景37Webメールセキュリティ所在地会議オフィス文書買い物 モバ...
© Hitachi, Ltd. 2013. All rights reserved.uCosminexus Elastic Application Data store3-10. 分散KVS製品uCosminexus Elastic Appli...
© Hitachi, Ltd. 2013. All rights reserved.uCosminexus Elastic Application Data store3-11. 技術概要39 平準化処理 サーバごとの格納データ量(使用メモ...
© Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. 日立+Java2. Javaプログラム実行の仕組み3. Cosminexu...
© Hitachi, Ltd. 2013. All rights reserved.uCosminexus Application Server3-12. クラウドを支えるFull GCレス機能41集約物理サーバ物理サーバ物理サーバ物理サーバ仮...
© Hitachi, Ltd. 2013. All rights reserved.uCosminexus Application Server3-13. JavaVMの高性能化42日立Java VM日本NCR(株)は、外部プロダクト選定時の評...
© Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. 日立+Java2. Javaプログラム実行の仕組み3. Cosminexu...
© Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. 日立+Java2. Javaプログラム実行の仕組み3. Cosminexu...
© Hitachi, Ltd. 2013. All rights reserved.4-1. Javaの安定動作を支援する取り組み45 メモリリークの素早い解析 Javaヒープ上のオブジェクト統計情報取得• ヒープ利用状況をクラス別の割合で...
© Hitachi, Ltd. 2013. All rights reserved.4-2. Javaでメモリリーク?46✖ ある処理が終わったのに、GCでメモリ使用量が減らないガベージコレクションは万能ではありません。メモリリークが発生してい...
© Hitachi, Ltd. 2013. All rights reserved.4-3. Javaでのメモリリークの例47 メモリリークの例:class Cがヒープ領域を圧迫している参照関係をたどると、原因はclass A→特定するにはA...
© Hitachi, Ltd. 2013. All rights reserved.4-4. メモリリーク解析ツール48日立では、Java VMのスレッドダンプ出力を拡張して、クラス毎の統計を出力可能なコマンドを開発しましたjheapprof ...
© Hitachi, Ltd. 2013. All rights reserved.Java Heap Profile-----------------------Size Instances Class1024 4 classA……144 1...
© Hitachi, Ltd. 2013. All rights reserved.Reference of class classC-------------------------classA(0x10766840)classB(0x107...
© Hitachi, Ltd. 2013. All rights reserved.4-7. メモリリークの素早い解析を支援・まとめ51メモリリークの素早い解析を支援するjheapprofコマンド メモリリーク=予期しない参照によりオブジェク...
© Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. 日立+Java2. Javaプログラム実行の仕組み3. Cosminexu...
© Hitachi, Ltd. 2013. All rights reserved.4-8. Cosminexus V9でのトレース機能の強化ポ゗ント53:従来のトレース取得ポイント F/W:フレームワークUAP:ユーザアプリケーション:V9以...
© Hitachi, Ltd. 2013. All rights reserved.4-9. Java の BCI 技術を応用54 ByteCode Instrumentation 機能で、ユーザ指定メソッドのバ゗トコードへトレースポ゗ントを...
© Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. 日立+Java2. Javaプログラム実行の仕組み3. Cosminexu...
© Hitachi, Ltd. 2013. All rights reserved.5. まとめ Javaは身の回りの様々な場所で使われています。 ポータビリテゖ、スケーラビリテゖ、プログラミング容易性 日立では、エンタープラ゗ズJava...
© Hitachi, Ltd. 2013. All rights reserved.株式会社 日立製作所 情報・通信システム社ITプラットフォーム事業本部 開発統括本部Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組み2013/5...
JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み
JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み
Upcoming SlideShare
Loading in...5
×

JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み

3,109

Published on

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

No Downloads
Views
Total Views
3,109
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み"

  1. 1. © Hitachi, Ltd. 2013. All rights reserved.株式会社 日立製作所 情報・通信システム社ITプラットフォーム事業本部 開発統括本部小幡 元樹2013年5月11日(土)JJUG Cross Community Conference 2013 SpringJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み
  2. 2. © Hitachi, Ltd. 2013. All rights reserved.他社所有名称に対する表示 AIXおよびPOWERは,米国およびその他の国におけるInternational Business Machines Corporationの商標です。 Androidは,Google Inc. の登録商標です。 ARMは,ARM Ltd.の登録商標です。 HP-UXは,Hewlett-Packard Development Company, L.P.のオペレーティングシステムの名称です。 Intelは,アメリカ合衆国およびその他の国におけるIntel Corporationの商標です。 Linuxは,Linus Torvalds氏の日本およびその他の国における登録商標または商標です。 Windowsは,米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。 OracleとJavaは,Oracle Corporation 及びその子会社,関連会社の米国及びその他の国における登録商標です。 その他記載されている会社名、製品名などは該当する各社の商標または登録商標です。他社所有名称
  3. 3. © Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. Java+日立2. Javaプログラム実行の仕組み3. Cosminexus V9の紹介4. Javaシステム安定動作にむけた取り組み5. まとめ2
  4. 4. © Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. Java+日立2. Javaプログラム実行の仕組み3. Cosminexus V9の紹介4. Javaシステム安定動作にむけた取り組み5. まとめ3
  5. 5. © Hitachi, Ltd. 2013. All rights reserved.1-1. Javaの広まり4 Javaは1990年代後半から普及し始め、2000年代にはC言語に並ぶメジャーな言語になりました ポータビリティ … Write Once, Run Anywhere スケーラビリティ … (それなりに)高性能 プログラミング容易 … GC搭載でメモリを気にしないプログラミングJavaLinux(R) Windows(R) AIX HP-UXIntel/x86 PowerIntel/IPF ARMAndroid産業公共 金融 組み込み住民基本台帳カ ード
  6. 6. © Hitachi, Ltd. 2013. All rights reserved.1-2. エンタープラ゗ズシステムの変遷 1/25 「エンタープライズシステム」=企業で使用される業務システム全般 企業内で必要とされる要件をより高いレベルで実現するため、登場以来、進化し続けてきました1970年代 1980年代 1990年代 2000年代 2010年~メインフレームクライアントサーバWebシステムITシステムに掛かるコスト削減業務効率の劇的な改善メインフレームダム端末全ての処理を実行表示のみサーバープログラムロジックを実行クライアントPC情報共有のスピードアップ、新規ビジネス開拓の容易化
  7. 7. © Hitachi, Ltd. 2013. All rights reserved.1990年代 2000年代 2010年~クライアントサーバWebシステム1-2. エンタープラ゗ズシステムの変遷 2/26サーバークライアントPC従来のエンタープライズシステム これからのエンタープライズシステムクラウド型システム高速大量データ処理従来業務のクラウド化システムのクラウド化の促進C/S の IaaS による単純なシステム置き換えから PaaS/SaaS の積極利用ポイントハードウェア発展に伴う利用可能リソースの増大大量のデータ(=ビッグデータ)を高速に処理可能へ
  8. 8. © Hitachi, Ltd. 2013. All rights reserved.1-3. エンタープラ゗ズシステムでの必要要件7利用技術が変わっても、本質的な要件は不変エンタープラ゗ズシステムに求められる性質 : サービス提供を停止させない可用性 処理を確実に実行する信頼性 利用者やデータ量の増加に対応できるスケーラビリティ 企業の経営改善に結びつくコストメリット 日立製作所では、Cosminexusをはじめとするミドルウェゕ群の提供を通じて、高速・安定なエンタープラ゗ズゕプリケーション実行環境を提供してきました。
  9. 9. © Hitachi, Ltd. 2013. All rights reserved.OSハードウェゕJavaゕプリケーションハ゗パーバ゗ザー8 日立での取り組みのうち、以下の内容をご紹介致します Java仮想マシンでのJavaプログラム実行 Full GCレス機能、稼動情報取得による対応力強化クラスラ゗ブラリ(JavaEE/JavaSE)Javaアプリケーション開発保守支援への取組み性能向上に役立つJava VM内の仕組みアプリケーション実行状況の可視化ゕプリケーション開発の標準化構築ノウハウの活用…Javaプログラム実行の様子■ JITコンパイルによる高速化■ 最適化状況の確認と落とし穴ガベージコレクション■ Full GCレス機能動作状況の可視化機構本発表でご紹介Java仮想マシン(Java VM)ゕプリケーション実行基盤本発表でご紹介1-4. 本日の発表内容
  10. 10. © Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. Java+日立2. Javaプログラム実行の仕組み3. Cosminexus V9の紹介4. Javaシステム安定動作にむけた取り組み5. まとめ9
  11. 11. © Hitachi, Ltd. 2013. All rights reserved. Javaプログラムは書きやすい、使いやすい どんなマシンでも(それなりに)高い性能 Just-In-Time(JIT)コンパ゗ラのおかげ メモリを意識しないプログラミングスタ゗ル ガベージコレクション(GC)のおかげ2-1. Java VMとJavaプログラムの関係10プログラムとJVM内挙動を意識すると解決できることが多い動いているがなぜか遅い、メモリをたくさん使う…といった事例が多数bytecode JIT compiler native codeJITによって実行PF最適化GCで不要なデータを削除
  12. 12. © Hitachi, Ltd. 2013. All rights reserved.インタプリタ Javaプログラムの実行にはJava仮想マシンを使う 最初は゗ンタプリタで実行 バ゗トコードを1つ1つ解釈して実行 プログラム実行の様子をプロフゔ゗ル2-2. Javaプログラムの実行 (゗ンタプリタ)11class A {void gyomu() {......;}}getstatic #2;ldc #3;new 20invokespecial;iconst 5;invokevirtual;ldc 対応処理invokevirtual 対応iconst 対応new 対応1命令読み込むJavaプログラム Java Bytecode対応する処理に従って実行Java VM Profileしながら実行・メソッド実行回数・分岐方向・仮想メソッド呼び出し起動は早いけど、性能がよくない?
  13. 13. © Hitachi, Ltd. 2013. All rights reserved. ゗ンタプリタ実行はどうしても遅いので、動的にバ゗トコードをコンパ゗ルしてネ゗テゖブコードで高速実行 (Just-In-Timeコンパ゗ル) 「よく実行するメソッド」(hotspot)をコンパ゗ル ゗ンタプリタでのプロフゔ゗ル情報で最適化2-3. Javaプログラムの実行 (゗ンタプリタ→JIT)12bytecodenative codeJava VM゗ンタプリタJIT CompilerProfile情報よく実行されるメソッドあまり実行されないメソッドオプションCompileThreshold を超えて実行されたメソッドをネ゗テゖブコードにコンパイル・インライン展開、脱仮想化といった最適化を適用bytecode 両Codeを併存させた実行になる両Codeを併存させた形で高速に実行可能
  14. 14. © Hitachi, Ltd. 2013. All rights reserved.2-4. コンパ゗ル有無のチェック13オプション -XX:+PrintCompilation を使う JITコンパ゗ラでのコンパ゗ルの様子が分かります。=希望のメソッドがコンパ゗ルされているかが分かります1566 83 b java.util.HashMap$Entry::<init> (26 bytes)1567 84 b java.util.HashMap::addEntry (58 bytes)出力例:メソッド名(実メソッド名が出るので、interfaceの実装の場合は注意)○ よくある(失敗かもしれない)パターン ”made not entrant”、”made zombie”→コンパ゗ルされたコードが使われなくなった場合に出ます。あまり気にしないでよいことが多いです。 ”COMPILE SKIPPED”→コンパ゗ル失敗で、゗ンタプリタ実行のままです。→Oracle、OpenJDKのバグデータベースで確認。
  15. 15. © Hitachi, Ltd. 2013. All rights reserved.hoge() {foo();}foo() {bar();bar();}bar() {}2-5-1. ゗ンラ゗ン展開とは?14メソッド呼出しに関する最適化で、呼出し先を呼出し元に展開する技術 実行性能を向上させるメジャーなコンパ゗ル技術でネ゗テゖブコードの実行性能がよくなります Getter/Setterなどに見られる「比較的」コード規模の小さいメソッド呼出しで効果大hoge() {}foo, barをhogeに展開すると…実行順hoge->foofoo->barfoo->bar実行順hogeのみfoo,barはhogeの実行に内包されて、見えなくなるメソッド呼出しは重い処理
  16. 16. © Hitachi, Ltd. 2013. All rights reserved.2-5-2. ゗ンラ゗ン展開の確認15オプション –XX:+PrintInlining を使う JITコンパ゗ラでの゗ンラ゗ン展開の様子がわかります1567 84 b java.util.HashMap::addEntry (58 bytes)@ 24 java.util.HashMap$Entry::<init> inline (hot)@ 1 java.lang.Object::<init> inline (hot)@ 54 java.util.HashMap::resize too big出力例:○ よくある成功/失敗パターン "inline (hot)" 成功! "too big" 失敗。展開対象メソッドのbytecodeが長すぎた "already compiled into a big method" 失敗"already compiled into a medium method" 失敗展開対象メソッドを単体でコンパ゗ルしたらそのコードサ゗ズが大きすぎた "executed < MinInliningThreshold times" 失敗実行回数が少なすぎたメソッド名 理由など
  17. 17. © Hitachi, Ltd. 2013. All rights reserved.2-5-3. ゗ンラ゗ン展開の調整16オプション –XX:MaxInlineSize=n を使う 展開するメソッドの最大bytecodeサ゗ズを指定 “too big” が出ている場合に有効です。 デフォルト値35は保守的なので80程度まで上げると性能が良くなることが多い※です。オプション–XX:InlineSmallCode=nを使う 展開するメソッドの最大JITコードサ゗ズを指定…なのですが、そもそもコードサ゗ズが不明なことが多い… 一応、“already compiled into a big/mediummethod” への対策で有効です。 デフォルト値1000(x86)はかなり保守的なので10000弱程度まで上げると性能が良くなることが多い※です。※必ず性能が良くなるというわけではありません。利用には注意が必要です。
  18. 18. © Hitachi, Ltd. 2013. All rights reserved.2-6-1. ポリモーフゖズム17ポリモーフィズムを乱用するべからず ポリモーフゖズム(多態性)は、オブジェクト指向言語における三種の神器の1つ。 でも、性能上は使わない方が速い。 意味のない最適化例:× オーバーラ゗ドしていないメソッド全てに明示的に final 修飾子を付ける(オーバーラ゗ドされたかどうかは、Java VM が実行時に全部把握しています) 実際に多態性が必要にならない限り、Java VM が勝手に最適化してくれます。ただし、不必要に恐れる必要はない
  19. 19. © Hitachi, Ltd. 2013. All rights reserved.2-6-2. ポリモーフゖズムと性能の関係18 内部的には、以下のようなヒエラルキーが存在 メソッドの呼び出し箇所ごとにJava VM が履歴を取って最適に管理 1になるのが一番いいが、2でもまぁまぁ速い。 要は、実行時に多態性が使われなければ、速い…hoge.non_overridden_method();…hoge.overridden_method();…fuga.overridden_method();…メソッドが、サブクラスでオーバーライドされていないオーバーラ゗ドされているがその呼び出し箇所では特定のクラスのインスタンスしか使われたことがない実際に、メソッドの呼び分けが必要になったことがある1最高2高3低
  20. 20. © Hitachi, Ltd. 2013. All rights reserved.2-7. JITの落とし穴: 最適化されない処理19 Java VM の処理の中には、JIT の最適化対象になっていないものがある✖ JIT 生成コード中でそういう操作が行われると、強制的にインタープリタ実行に戻ってしまう。× クラスのロード × クラスの初期化× 例外ハンドリング(Server Compilerの場合)JIT で最適化されない処理の例性能上重要なメソッド/ループの中で例外が発生していたら要注意
  21. 21. © Hitachi, Ltd. 2013. All rights reserved.2-8. JITの落とし穴:例外ハンドリング20 例外の処理は難しいので、゗ンタプリタで実行 (JIT側の視点) めったに発生しないのでOK…だと思う(ユーザ視点) 複雑な構造からの脱出で便利なのでは?例外を乱用するべからず・サンプルプログラムfor (i = 0; i < n; i++) {for (j = 0; j < m; j++) {if (…) {// 最外まで脱出したい!// breakを2回実行するため// フラグセットして脱出。flag = true;break;}}// flag==trueならすぐに脱出if (flag) break;}・駄目パターンのプログラムtry {for (i = 0; i < n; i++) {for (j = 0; j < m; j++) {if (…) {// 例外で最外のcatchまで飛べる…throw new Exception();}}}}catch (Exception e) { … }…;JITコンパ゗ラ:例外が発生したので゗ンタプリタに戻すここを抜けても゗ンタプリタ実行ここを抜けても゗ンタプリタ実行
  22. 22. © Hitachi, Ltd. 2013. All rights reserved.2-8. JITの落とし穴:例外ハンドリング21 例外の処理は難しいので、゗ンタプリタで実行 (JIT側の視点) めったに発生しないのでOK…だと思う◎(ユーザ視点) 通常パスに例外は使わない例外を乱用するべからず・サンプルプログラムfor (i = 0; i < n; i++) {for (j = 0; j < m; j++) {if (…) {// 最外まで脱出したい!// breakを2回実行するため// フラグセットして脱出。flag = true;break;}}// flag==trueならすぐに脱出if (flag) break;}・駄目パターンのプログラムtry {for (i = 0; i < n; i++) {for (j = 0; j < m; j++) {if (…) {// 例外で最外のcatchまで飛べる…throw new Exception();}}}catch (Exception e) { … }…;
  23. 23. © Hitachi, Ltd. 2013. All rights reserved. Javaプログラムでは「メモリ解放」を意識しなくてよい Java VMのGarbage Collection機能でメモリを管理 空き領域が減少すると、不要なデータを自動解放2-9. Java仮想マシンでのメモリ管理22多くのJava VMでは「世代別GC」と呼ばれる管理方式を採用ほとんどのオブジェクトはすぐに不要(ゴミ)になる点に注目New領域 Old領域短寿命オブジェクト 中寿命オブジェクト 長寿命オブジェクト●New領域の解放 → Minor GC●全領域の解放 → Full GC処理時間が長い
  24. 24. © Hitachi, Ltd. 2013. All rights reserved.2-10. Javaプログラム実行とGCの関係23 Javaプログラム実行とGC処理のタ゗ミングで分類Java VMオプション 実行への影響 実行イメージ-XX:+UseSerialGC並列GC-XX:+UseParNewGC-XX:+UseParallelGC-XX:+UseParallelOldGC平行GC-XX:+UseConcMarkSweepGC-XconcgcGC GCGC GC GCJava JavaJava Java JavaJava Java+GC Java+GCJava利用可能メモリサ゗ズの増大ペースが非常に速くて、Full GC処理時間が大きな問題になってきました。止まってる?○スループット×レスポンス○スループット△レスポンス×スループット○レスポンス
  25. 25. © Hitachi, Ltd. 2013. All rights reserved.2-11. JavaシステムのFull GCレス化(日立独自機能)24ゕプリケーション実行基盤が管理するユーザー情報とJava VMのメモリ管理を連携させることでFull GCレスを実現しましたOSアプリケーション実行基盤JavaプログラムJava VMユーザーのセッション情報等Full GCレス応答性能の低下なく快適♪待ち時間と利用を中止するユーザ割合出展:Forrester (2009)1秒未満1秒2秒3秒1%3%13% 40% 数秒単位で待ち時間が生じるとユーザーを失ってしまう恐れ 例えばWebのショッピングサ゗トなどで影響が大きい連携そこで日立では
  26. 26. © Hitachi, Ltd. 2013. All rights reserved.2-12. Full GCレス機能(日立独自機能)25 プログラムから明示的に確保/解放可能な領域(Eheap)を実装Java Heap(Jheap)New OldExplicit Heap(Eheap)New Oldユーザーのログ゗ン時にセッションオブジェクトを生成空き容量が枯渇するとFull GC発生ログ゗ン時にセッションを生成FullGC発生ログアウト時にセッションを削除空き容量が枯渇しないログイン商品注文ログアウトログイン商品注文ログアウト従来Full GCレス機能あり
  27. 27. © Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. 日立+Java2. Javaプログラム実行の仕組み3. Cosminexus V9の紹介4. Javaシステム安定動作にむけた取り組み5. まとめ26
  28. 28. © Hitachi, Ltd. 2013. All rights reserved.3-1. クラウドサービスプラットフォーム Cosminexus V927業務システム業務システムプライベート/パブリッククラウドPaaS環境管理Cosminexus V9リソースプールuCosminexus Service Director高品質な業務システム環境のスピード構築を実現メモリ空間共有メモリ空間EJBコンテナWebコンテナEJBHTTPServerEJBDBJSP/サーブレットF/W UAPuCosminexus Application ServerAP・F/Wを含む一貫した性能分析によって、システムの「見える化」を実現「見えるクラウド」を実現するCosminexus V9はクラウドの特性を活かした業務システムの構築を支援しますポイントuCosminexus Elastic Application Data storeクラウドを支えるデータ管理基盤として、高スケーラビリティを実現AP:アプリケーションF/W:フレームワーク
  29. 29. © Hitachi, Ltd. 2013. All rights reserved.3-2.「見えるクラウド」を実現するCosminexus V928• uCosminexus Service Director•サービスレベルに応じたシステムのスケール変更の簡略化を支援•業務システム環境(ミドルウェア含む)の短期構築を支援•業務システムを用途別に管理し、再利用性を高めた上で構築作業の高効率化を支援高品質な業務システム環境のスピード構築を実現• uCosminexus Elastic Application Data store• データをメモリに配置することにより高速なアクセス性能を実現• サーバー間統合仮想メモリーを共通 I/Fで透過的にアクセス• 多重化により可用性を向上、柔軟な構成変更により高いスケーラビリティを確保クラウドを支えるデータ管理基盤として、高スケーラビリティを実現• uCosminexus Application Server• AP・F/Wにおける任意のポイントのトレースを取得可能• Full GCレス機能で、大容量メモリ環境でも安定動作AP・F/Wの一貫した性能分析で、システムの「見える化」を実現AP:アプリケーション、F/W:フレームワーク、I/F:インタフェース
  30. 30. © Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. 日立+Java2. Javaプログラム実行の仕組み3. Cosminexus V9の紹介・uCosminexus Service Director・uCosminexus Elastic Application Data store・uCosminexus Application Server4. Javaシステム安定動作にむけた取り組み5. まとめ29
  31. 31. © Hitachi, Ltd. 2013. All rights reserved.IT部門のニーズサプライチェーンの見直し - 生産拠点の分散化 …成長市場での市場創造 - 新興国市場への進出 …コスト競争力の強化 - 業務改善によるコスト低減 …uCosminexus Service Director3-3. 環境変化に対する素早い対応へのニーズ30環境変化に、素早く対応したい!信頼性スピード &環境変化に、ITも素早い対応が求められるシステム開発のスピードアップシステム変更への素早い対応 と システムの安定稼働クラウドへの期待
  32. 32. © Hitachi, Ltd. 2013. All rights reserved.テンプレートuCosminexus Service Director3-4. システム開発容易化・高速化への取り組み◇日立ミドルウェア AP実行基盤 DB基盤 運用管理基盤リソース活用の全体最適ITリソース管理者業務システム管理者リソースプール物理リソースサービスの安定稼働業務サービス業務サービス仮想サーバ仮想サーバ各種ミドルウェア各種ミドルウェア業務サービスの簡単構築JP1/IT Service LevelManagementJP1JP1/IT ResourceManagementJP1uCosminexusService Director31ITリソース提供サービス◇業務AP業務AP 業務AP
  33. 33. © Hitachi, Ltd. 2013. All rights reserved.3-5. uCosminexus Service Directorの概要32業務システム管理者の初期基盤設計構築、再構築、構成変更作業を容易化仮想サーバ開発用環境仮想サーバ検証用環境ITリソース管理者業務システム管理者運用管理基盤AP実行基盤DB基盤仮想サーバ本番用環境① 初期基盤設計構築② 開発・検証環境 再構築サービス提供環境のスピード構築物理リソース③ 本番環境スケール変更サービス別・用途別の管理と再構築リソースプール負荷変動に対する構成変更の柔軟性uCosminexusService Directorテンプレート◇日立ミドルウェア AP実行基盤 DB基盤 運用管理基盤◇業務AP業務AP
  34. 34. © Hitachi, Ltd. 2013. All rights reserved.uCosminexus Service Director3-6. 初期基盤設計構築のスピードゕップ33Before(IaaS利用) After(PaaS利用)パターン 品質レベルWeb+ DB AADB AA・システム構築を手作業で実施 ・テンプレートを適用し、構築を自動化人手で設計 テンプレートに基づく構築テンプレート選択スケール情報入力解決課題 ミドルウェアも含めた業務サービス基盤の構築に時間と手間が掛かる。テンプレートを利用し、ミドルウェアも含めた高品質な業務サービス基盤を短期間で構築できる。設計書設計書設計書…OSAP基盤OSAP基盤OSDB基盤手動で設定N台分仮想サーバOSAP基盤OSAP基盤OSDB基盤仮想サーバ一括で設定マスターイメージ化
  35. 35. © Hitachi, Ltd. 2013. All rights reserved.Before(IaaS利用) After(PaaS利用)仮想サーバuCosminexus Service Director3-7. 環境再構築のスピードゕップマスターイメージ業務 用途 構成受注 本番用 Web1,Web2,・・・開発用 Web1,DB1検証用 Web1,DB1※ APサーバ×3、DBサーバ×1、Virtage環境の場合の弊社試算値 34業務システム台帳・人手でシステム構成を台帳管理・手動で環境を再構築・マスタイメージでシステム構成を管理・一括で環境を再構築マスタイメージで構成管理業務 用途 状態 構成受注 本番 配備 ・・・開発 未配備 ・・・検証 未配備 ・・・一括で再構築システム一覧解決アプリ改修のたびに、テスト環境や検証環境の再構築に時間が掛かる。業務システムの構成がマスタイメージとして、用途別に管理されている。必要なマスタイメージを選択し、一括で環境を再構築。課題人手で構成管理OSAP基盤仮想サーバOSAP基盤OSDB基盤手動で回復OSAP基盤OSAP基盤OSDB基盤構成確認と回復指示300分が90分に!70%時間短縮※
  36. 36. © Hitachi, Ltd. 2013. All rights reserved.Before(IaaS利用) After(PaaS利用)仮想サーバuCosminexus Service Director3-8. 性能要件変化への対応のスピードゕップ35・マスタイメージでシステム構成を管理・一括で変更性能要件の変化へ対応に時間と手間が掛かる。手作業でするため、人為的ミスを引き起こす可能性がある。業務システム基盤の構成確認、スケール変更の指示が可能。マスタイメージで構成確認して変更指示できるため、ミス防止が可能。課題・人手でシステム構成を台帳管理・手動で変更解決業務 用途 構成受注 本番用 Web1,Web2,・・・開発用 Web1,DB1検証用 Web1,DB1業務システム台帳人手で構成管理OSAP基盤仮想サーバOSAP基盤OSDB基盤手動で変更OSAP基盤マスターイメージマスタイメージで構成管理受注システムの構成情報サーバ名称 リソース受注Web1 2コア、4G受注Web2 2コア、4G受注DB 4コア、8G一括で変更OSAP基盤OSAP基盤OSDB基盤OSAP基盤追加構成確認と変更指示
  37. 37. © Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. 日立+Java2. Javaプログラム実行の仕組み3. Cosminexus V9の紹介・uCosminexus Service Director・uCosminexus Elastic Application Data store・uCosminexus Application Server4. Javaシステム安定動作にむけた取り組み5. まとめ36
  38. 38. © Hitachi, Ltd. 2013. All rights reserved.uCosminexus Elastic Application Data store3-9. 背景37Webメールセキュリティ所在地会議オフィス文書買い物 モバイルエネルギーICカード 気象センサー交通データ データ データ データ データ データ データ データPC・サーバー あらゆる情報がIT化 偏在する大量のデータが発生(ビッグデータ) 分散環境での高速データ処理が必要インメモリー型分散KVSネットワークuCosminexus Elastic Application Data storeNOSQL複雑性排除 ←シンプルインターフェイス インメモリー分散DB開発の容易性 高効率メモリー使用 高信頼性NOSQL:Not Only SQL KVS : Key Value Store
  39. 39. © Hitachi, Ltd. 2013. All rights reserved.uCosminexus Elastic Application Data store3-10. 分散KVS製品uCosminexus Elastic Application Data storeの概要38物理メモリ物理メモリを仮想的に統合Key Value②メモリ間レプリケーション(多重化)③データ分散配置(ハッシュ/指定)CEP RDB ファイルリードライト既存/他システム証券取引 為替取引 チケット予約 メール配信 稼働収集put get①KVS I/F②ノード増減容易(高スケーラブル)③透過的アクセスクラウド時代の超大量・高速データ処理を支える分散KVS製品特長① 容易なアプリケーション開発② 高速・高信頼データ処理④ 同期更新のサポート③ 高いスケーラビリティ⑤ CEP・RDBとの連携データアクセスが容易でシンプルなKVS I/Fメモリ間でのデータ多重化,障害時の高速切換によるシステム無停止化物理メモリの仮想的統合,データの動的配置による柔軟なスケールアウト・イン値更新時の排他,複数の値に対するトランザクショナルな制御イベント処理,データベースへのライト/リードスルー,ライトビハインド※ 上図は一部開発中・計画中の機能も含んでいます KVS : Key Value Store、I/F : InterfaceuCosminexusElastic ApplicationData store
  40. 40. © Hitachi, Ltd. 2013. All rights reserved.uCosminexus Elastic Application Data store3-11. 技術概要39 平準化処理 サーバごとの格納データ量(使用メモリ量)に偏りが生じた時に、格納データ量を平準化して解消 閾値超過処理 サーバのデータ格納領域(空きメモリ量)が少なくなった場合は、LRUによる外部保管でデータ格納領域を確保 サーバ障害時対応処理 クラスタ内のサーバ同士で状態監視,自身の障害通報または周囲の障害検知でクラスタから切り離し、残りのサーバ群で継続S4 S1S2S3S4 S1S2S3空いているサーバに移動HDD全サーバのメモリがFullの場合HDDに退避閾値超過
  41. 41. © Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. 日立+Java2. Javaプログラム実行の仕組み3. Cosminexus V9の紹介・uCosminexus Service Director・uCosminexus Elastic Application Data store・uCosminexus Application Server4. Javaシステム安定動作にむけた取り組み5. まとめ40
  42. 42. © Hitachi, Ltd. 2013. All rights reserved.uCosminexus Application Server3-12. クラウドを支えるFull GCレス機能41集約物理サーバ物理サーバ物理サーバ物理サーバ仮想サーバ仮想サーバ仮想サーバ仮想サーバ販売管理生産管理販売管理生産管理販売管理生産管理販売管理生産管理 Full GCレスなので心配なし。全ての業務が安定稼働。Pointサーバメモリが大容量だと、Full GCの停止時間が長すぎて、同じ物理サーバ上にある他の業務システムまでスループットが低下するメリットFull GCの発生を抑止し、突然の無応答を解消大容量のメモリでもレスポンス低下の心配なしで、安定稼働を実現従来方式New領域Old領域使用済みの情報が残存。Full GCで解放。JavaヒープNew領域新方式サービスの応答時間5秒10秒15秒時間改善時間時間5秒10秒15秒セッション情報及びユーザ指定の情報を自動的に別領域に配置しFull GCの発生を抑止。Full GC発生Old領域Eヒープ領域Javaヒープサービスの応答時間アプリケーションは修正不要!適用範囲拡大無応答を解消!突然の無応答オンプレミス クラウド
  43. 43. © Hitachi, Ltd. 2013. All rights reserved.uCosminexus Application Server3-13. JavaVMの高性能化42日立Java VM日本NCR(株)は、外部プロダクト選定時の評価基準を標準化して定めているが、その指標は20~30に及ぶ。たとえば処理性能としては、ミリセカンド単位のレスポンスを追求している。この厳しい性能評価テストにおいて、Cosminexusは総合的に高い評価を獲得した。特に、安定性に優れていることは高く評価された。ご使用いただいているお客様からも高い評価※事例紹介記事より抜粋日本語コード変換処理の高速化文字列操作の高速化処理時間で上位を占める文字列操作を高速化I/Oのタイミングなどで必ず発生する文字コード変換を高速化日本語処理を高速化できるのも国産メーカーならでは!性能向上できるのもソースを保持している日立だからこそ!提案ポイント日本語環境での文字列処理の高速化や各種の性能最適化を実施。高負荷でも安定したサービスを提供。メリットサービスの応答が遅くてイライラする・・・。
  44. 44. © Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. 日立+Java2. Javaプログラム実行の仕組み3. Cosminexus V9の紹介4. Javaシステム安定動作にむけた取り組み・メモリリーク検出のための情報取得・性能把握のためのトレース機能強化5. まとめ43
  45. 45. © Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. 日立+Java2. Javaプログラム実行の仕組み3. Cosminexus V9の紹介4. Javaシステム安定動作にむけた取り組み・メモリリーク検出のための情報取得・性能把握のためのトレース機能強化5. まとめ44
  46. 46. © Hitachi, Ltd. 2013. All rights reserved.4-1. Javaの安定動作を支援する取り組み45 メモリリークの素早い解析 Javaヒープ上のオブジェクト統計情報取得• ヒープ利用状況をクラス別の割合で表示• クラス間の参照構造を一覧にして出力(参考URL: http://www.hitachi.co.jp/Prod/comp/soft1/manual/pc/d3M1061/EM100149.HTM) 性能問題の素早い特定 Cosminexus PRF(性能解析トレース)機能を強化• コンポーネントごとの実行時間の取得• ユーザが希望する部分の実行時間の取得
  47. 47. © Hitachi, Ltd. 2013. All rights reserved.4-2. Javaでメモリリーク?46✖ ある処理が終わったのに、GCでメモリ使用量が減らないガベージコレクションは万能ではありません。メモリリークが発生している可能性アリ JavaのGCでは、オブジェクトの要・不要を「参照関係」から判断します。✖ オブジェクトを誰かが参照し続けているのが原因 APIや外部ラ゗ブラリの暗黙的仕様や間違った使い方に起因 プログラマ的には解放されていると思っているプログラムの中身をよく知っている場合以外は、解決に時間を要することが多いです…
  48. 48. © Hitachi, Ltd. 2013. All rights reserved.4-3. Javaでのメモリリークの例47 メモリリークの例:class Cがヒープ領域を圧迫している参照関係をたどると、原因はclass A→特定するにはA→B→Cの参照関係の把握が必要大規模、複雑なソースでは把握するのは困難A ABBCC CCclass Aがclass Bを参照しているclass Cがヒープ領域を圧迫
  49. 49. © Hitachi, Ltd. 2013. All rights reserved.4-4. メモリリーク解析ツール48日立では、Java VMのスレッドダンプ出力を拡張して、クラス毎の統計を出力可能なコマンドを開発しましたjheapprof [-f| -i] [-class <クラス名>] –p <プロセスID><プロセスID>で指定したjavaプロセスの拡張スレッドダンプを出力するヒープ領域の利用状況を分析して、クラス別の統計情報を算出クラス毎の使用量→どのオブジェクトが増えている?クラスの参照関係→誰がそのオブジェクトを握っている?機能参照関係を解析するツールを作りましたこの情報を得るのが重要です。
  50. 50. © Hitachi, Ltd. 2013. All rights reserved.Java Heap Profile-----------------------Size Instances Class1024 4 classA……144 12 classC…128 2 classB…20 5 [Ljava.io.…16 2 java.lang.…14 2 [Ljava.lang.…10 2 java.io.…4-5. jheapprofコマンドの使い方(1)49jheapprofの使い方(1) ヒープ領域に格納されているクラスの統計を収集するjheapprof –p 2463 を少なくとも2回実行して゗ンスタンスサ゗ズの増減を把握<出力例>クラス名インスタンス数インスタンスサイズの合計Java Heap Profile-----------------------Size Instances Class1232 4 classA……372 31 classC…128 2 classB…20 5 [Ljava.io.…16 2 java.lang.…14 2 [Ljava.lang.…10 2 java.io.…class Cが増加
  51. 51. © Hitachi, Ltd. 2013. All rights reserved.Reference of class classC-------------------------classA(0x10766840)classB(0x10766998)classC(0x10766a88)------classA(0x10766840)classC(0x10766920)------classA(0x10766840)classC(0x10766920)classC(0x10766ab8)------・ ・ ・4-6. jheapprofコマンドの使い方(2)50jheapprofの使い方(2) ヒープを圧迫しているclass Cの参照元を調べるjheapprof –class classC –p 2463<出力例>コマンド数回でクラスの参照関係を自動抽出!class Aがあやしい!参照の根っこはすべてclass AclassA→classB→classCの参照を表すclassA→classCの参照を表すclassA→classC→classCの参照を表す
  52. 52. © Hitachi, Ltd. 2013. All rights reserved.4-7. メモリリークの素早い解析を支援・まとめ51メモリリークの素早い解析を支援するjheapprofコマンド メモリリーク=予期しない参照によりオブジェクトがGCで回収されない状態で残留 原因究明にはクラスの参照関係の把握が必要 大規模・複雑なソースでは究明が困難 スレッドダンプ出力時にクラス別の統計情報を付加 ヒープ上でクラス別に占めている割合を表示 クラス構造を一覧にして出力可能数回のコマンド実行でクラスの参照関係を自動抽出 Openな環境をお使いの皆様 VisualVM, jconsole, jmap, jstack, jhatなど色々あります。• データの増減を追うだけなら上記で十分です。• ただし、参照関係を追うのは大変みたいです
  53. 53. © Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. 日立+Java2. Javaプログラム実行の仕組み3. CosminexusV9の紹介4. Javaシステム安定動作にむけた取り組み・メモリリーク検出のための情報取得・性能把握のためのトレース機能強化5. まとめ52
  54. 54. © Hitachi, Ltd. 2013. All rights reserved.4-8. Cosminexus V9でのトレース機能の強化ポ゗ント53:従来のトレース取得ポイント F/W:フレームワークUAP:ユーザアプリケーション:V9以降での新トレースポイント(ユーザ定義のトレース取得ポイント)従来はコンテナ間での連携部分でのみトレースを取得V9では、Javaゕプリケーション内にもトレースポ゗ントを設置可能(場所はユーザーが指定可能)EJBコンテナWebコンテナEJBHTTPServerEJBDBJSP/サーブレットF/W UAPトレースの取得可能ポ゗ントを拡充ユーザプログラム内でもトレースを取得可能フレームワークを使ったプログラムにも対応強化点
  55. 55. © Hitachi, Ltd. 2013. All rights reserved.4-9. Java の BCI 技術を応用54 ByteCode Instrumentation 機能で、ユーザ指定メソッドのバ゗トコードへトレースポ゗ントを埋め込む゗ンタフェース名しか分からない場合も実装クラスを自動判断Java VMclass BaseImpl extends Base性能解析トレースファイルJavaプログラムBCI エージェントa.b.c.Base.exec(...), 123, true設定フゔ゗ルexec(...) {return af;}ロード(1)トレースポイント(入口)(出口)(例外)挿入ロード(2)CosminexusPRF デーモンインスタンス BCI利用の利点 JITコンパ゗ルされる プログラム改変無しで処理を入れられる 不要になったら外せる
  56. 56. © Hitachi, Ltd. 2013. All rights reserved.Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組みContents1. 日立+Java2. Javaプログラム実行の仕組み3. Cosminexus V9の紹介4. Javaシステム安定動作にむけた取り組み5. まとめ55
  57. 57. © Hitachi, Ltd. 2013. All rights reserved.5. まとめ Javaは身の回りの様々な場所で使われています。 ポータビリテゖ、スケーラビリテゖ、プログラミング容易性 日立では、エンタープラ゗ズJavaシステムに対する高性能・高信頼化へのご要望にお答えするべく、Cosminexusを中心に、実行基盤製品の開発に幅広く取り組んでいます。本セッションでは、以下のような日立の取り組みをご紹介しました Javaプログラム実行の基本 Cosminexus V9での強化ポ゗ント 障害などへの対応力強化に向けた取り組み56
  58. 58. © Hitachi, Ltd. 2013. All rights reserved.株式会社 日立製作所 情報・通信システム社ITプラットフォーム事業本部 開発統括本部Javaプログラム実行の仕組みと、高速・安定動作に向けた取り組み2013/5/11小幡 元樹END57

×