BT

JAX London: Java Flight Recorderを用いて製品の時間プロファイルを行う

| 作者: Monica Beckwith フォローする 563 人のフォロワー , 翻訳者 笠原 王徳 フォローする 0 人のフォロワー 投稿日 2016年11月1日. 推定読書時間: 3 分 |

原文(投稿日:2016/10/22)へのリンク

今年のJAX Londonにおいて、OracleのJavaプラットフォームグループに所属するOla Westin氏はJava Mission Control (JMC)とJava Flight Recorder (JFR)について発表を行なった。

JMCとJFR双方の概要に続き、Westin氏は観客に記録がどう生成・解析されるかを説明し、それからデモを行なった。この記事ではInfoQはWestin氏の発表を紹介する。

/Users/monicabeckwith/Desktop/JFRJMC.jpg

Java Mission Controlの概要

Java Mission Controlは(サーバの加工されていないビューを提供する)JMX consoleと(プロファイルとアプリケーションデータの診断を支援する)Java Flight Recorderの助けを借り、Java仮想マシン(Java VM)の動作の可視化を支援するGUIである。

JMC(jmcというコマンド)はJava開発キット(JDK)に同梱され、binディレクトリに配置されている。…onsoleLog ‥ebugオプションを用いて追加のログを取得することができる。(DTrace、JMXコンソールなどのような)様々な実験的プラグインがJMCからダウンロードすることができる。

ョ・

Java Flight Recorderの概要

Java Flight RecorderはJava VM同様Javaアプリケーションの振る舞いに関する情報を収集する。JFRはJava VM内部に構築され、実行時情報をユーザに提供する。JFRの動作はどんなJava VMの動作を邪魔することもなく、オーバヘッドも2%以下と最小限に留められている。

JFRは即時イベント、期間イベント、リクエスト可能イベントのような異なるイベントを持つ。即時イベントは(スレッドの開始のような)特定の一点の時刻に発生し、そのため最もオーバヘッドが少ない。これに対し、(ガーベジコレクションなどのような)期間イベントはしきい値に基づき、(メソッドプロファイルサンプルのような)リクエスト可能なイベントも同様に設定可能な周期を持つため、これらのイベントのオーバヘッドはばらつくであろう。

JFRのサンプリングプロファイラはセーフポイントとなるためのスレッドを必要とせず、全ての単一のメソッド呼び出しをロギングするわけではない(ホットメソッドを検知したときのみ)。この発表においては、Nativeコードを起動するスレッドのサンプリングが行われなかった。

二種類の記録が存在する。時間が固定された(プロファイル)記録と継続記録である。双方ともファイルにダンプされる。

記録を生成する

JFRを用いて記録を開始するために、JVMに下記のオプションを指定する必要がある。-XX:+UnlockCommercialFeatures -XX:+FlightRecorder

Java8 update 40からは、JMCとjcmdの選択肢のどちらを用いても実行時にJFR記録を生成することができるようになった。

下記の3つの図は、上に示した3つのオプションのそれぞれによりJFR記録がどう生成されるかを示したものである。

strt.jpg

strt2.jpg

strt3.jpg

下図で示すようにリモートシステムにおいて記録することもできる。

remote.jpg

記録を解析する

Westinの発表では全ての調査に入る前に正しい問いに回答することの重要性を強調した。彼は下記に示す"ホットメソッド"問題に焦点を当てたデモについて言及した。

hotmethods.jpg

ここで、"ホットメソッド"タブが選択されたとき、LinkedList.indexOf(Object)の処理が収集されたサンプル全体の97.35%を占めていることを確認できる。スタックを下がっていくと、O(n)を必要とするcontains(Object)メソッドがリンクリスト内にあることを発見できる。これを修正するために、Westin氏はLinkedListをHashSetに置き換えたコードに対して別のJFR記録を実行した。その結果は以下である。

hotmethod_fixed.jpg

次にWestin氏は更に2つのデモを見せた。1つはスレッドの競合で、もう1つはオートボクシングに伴うメモリの割り当てである。それから彼は将来の展望に関してまとめた。

Rate this Article

Relevance
Style

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT