Takayuki Okazaki's Weblog
ブログ: 岡崎 - Okazaki's blog
20080618 2008年 6月 18日 水曜日
ワクワク技術 BTrace
English Translation: (Yahoo!) / (Google)
The Aquarium日本語版にもBTraceの記事が出ていましたのでもうご覧になった方も多いかもしれませんが、SunはJava VM用に新しいトレース技術、BTraceを作っているようです。Solaris 10のDTrace (ディートレース)と絶対聞き間違えると思いますが、DTraceがDynamic Traceの略であるのに対し、BTrace (ビィートレース)はBytecode Tracingの略からきているようです。もうすこし紛らわしくないネーミングでも良かったような・・・。さて、なんだかいろいろ出てきましたが、Sunはほかにもパフォーマンスツールをいろいろ出しているんですがご存知でしたか?
_DSC6332-D

DTrace

Solaris 10を始めとして、いまはMac OS X Leopardでも使えたりFreeBSDでもそろそろ使えるらしかったりする画期的なデバッグツールです。D言語というスクリプト言語で、プロファイリングのポイント(=プローブと呼ばれています)を指定して、自在に統計情報をとることができます。D言語、など少し敷居が高い感じがしますが、使いこなせばこれほど強力なツールはないと思います。後述のD-Lightなんかを使えば視覚的に使えます。
_DSC6287-D

D-Light

DTrace用のユーザインタフェース。確か初お披露目は昨年のJavaOne 2007でのJames GoslingのGeneral Sessionだったと思います。D-Lightはその後、Sun Studio 12に統合されてリリースされています。この間、JavaOne 2008報告会で谷本さんがデモをされようとして、プロジェクターとの相性で実演できなかったやつですね。ブログにやり方を書かれているのでぜひ参照してみてください。 _DSC6160-R

DProfile

・・と、呼ばれていましたがいまはSun Studio 12のPerformance Analyzerの一機能として統合されたようですね。DProfileはDataspace Profiling(=今の正式名称)の略でした。Dataspace ProflilingはCPU内のキャッシュヒットミス(L1, L2, TLB)を統計的に調べるためのツールです。たいていのアプリケーションではキャッシュヒットミスが大きなパフォーマンスボトルネックとして顕著化することはありませんが、普通のプロファイラではなかなかここまでみれないので、どうしても原因が分からない!というときに最終兵器として登場していただきます。
_DSC6164-D

NetBeans Profiler

これはご存知の方も多いかもしれません。もともとSun Labsのプロジェクトで、JFluidと呼ばれていた技術がコアとなり、JVMTI等を取り入れて強力なプロファイリング機能を提供している、NetBeansの売りの一つです。今は、NetBeansを使う以外にもVisual VMから利用することもできます。NetBeans 6.0からはHeapダンプの解析機能がついていて、hprofや-XX:+HeapDumpOnOutOfMemoryErrorで取得したダンプを解析してメモリリークの原因を解析することができます。Heapダンプ解析のいいところは、おのおののオブジェクトそれぞれについての参照関係をたどることができることです。これがないと、実際のメモリリークを起こしているオブジェクトにたどり着くのは結構しんどいのですが、これができたおかげで、しらみつぶしに探すのは大変なものの、かなりアタリをつけやすくなりました。同様にHeapダンプを解析するツールとしてはJDK 6等に標準添付されているjhatなんかもありますね。
_DSC6167-D

BTrace - 今回のトピック

BTraceは今回のJavaOne 2008ではBOFが一つあっただけのようで、あまりこれについて触れているブログ等も多くなかったのですが、ここ1〜2週間blogs.sun.comではじわじわと話題があがってきています。たとえば、Sailfinのデバッグでも活躍したそうです。ちなみに、このBTraceのBOF資料はダウンロード可能です。 BTraceは簡単に説明しておくと、Bytecode Instrumentationを使って、ターゲットとするJVM上で動作しているアプリケーションに動的にプローブを仕込み、Visual VMのBTraceプラグインやBTraceのコマンドラインツールから結果を取得するような仕組みになっています。利用方法で面白いのは、BTraceの開発者であるSundararajanが触れているように、Java上で生成したSQL文をトレースしたり、実行時間を取得するような使い方です。この手のトレースは今まで専用のツールが必要だったり、ログを大量に出力して掘り起こすなど結構大変な手間をかけていましたが、BTraceでやると結構シンプルに出来上がってしまいます。
なお、このワクワク技術BTraceは残念ながらJDK 6以降専用で、自宅Macでは試せず・・・orz


投稿されたコメント:

★ お名前を空欄にするとIPアドレスが、お名前欄に記入されます。
コメント
コメントは無効になっています。
過去の記事
« 12月 2009
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  
       
今日
Click me to subscribe このブログを購読(RSS)
検索

このブログ著者について
ソフトウエア・インフラストラクチャー・ソリューション本部のソリューション・アーキテクトでした(2008年8月退職)。 本業はSOAソリューションならびにSun Java CAPSによるソリューションのプリセールスをお手伝いするエンジニア、とJavaエバンジェリストグループに参加してセミナーに行ったり、趣味のプログラミング・ネタをこのブログで紹介したりしていました。現在は、ふらふらとwatermint.orgで活動中〜。
リンク
 
SunホットトピックPodcast - SunホットトピックPodcast
 


 

Today's Page Hits: 574