この項では、フライト記録でキャプチャする情報を制御するためのテンプレートの使用方法について説明します。
この章の内容は以下のとおりです。
様々な設定によりJRockitフライト・レコーダに関するほとんどすべてを制御できます。記録するデータ量を制御するには、次のように各イベント・タイプを構成できます。
有効: 特定の記録の各イベント・タイプを有効または無効にします。頻度の高いイベント(同期イベントなど)を無効にすると、記録サイズの削減に役立ちます。
しきい値: しきい値を設定して、期間を持つイベントをフィルタします。期間がしきい値より短いイベントは保存されません。
スタック・トレース: イベントが生成されるポイントの各イベントのスタック・トレース情報を有効または無効にします。スタック・トレースの作成にはコストがかかりますが、イベントの発生理由を理解するうえで非常に役立ちます。
リクエスト期間: JRockitフライト・レコーダ・ラン・タイムによってリクエストされるリクエスト可能なイベントの頻度を設定できます。
JRockitフライト・レコーダのテンプレートを使用すれば、記録を開始するたびにすべての構成オプションを変更する必要がありません。様々なタスクに最も適合するオプションのセットが、Mission Controlおよびサーバー側のテンプレートに保存されています。これらのテンプレートは、そのまま使用することもニーズに応じて変更することもできます。
警告: フライト記録ファイルのデータ・フォーマットはコンパクトですが( |
JRockit Mission Control Clientで記録を開始する際に、記録テンプレートを要求されます(図2-1を参照)。テンプレートは、記録を作成する際に有効となるイベントを制御します。デフォルトでは、次のテンプレートがあります。
このテンプレートには、ほとんどの必要なプロファイリング・イベントが含まれています。非常にレベルの低いイベントやリソースを多く消費する一部のイベントは、オーバーヘッドを回避するために除外されています。
オーバーヘッド: このテンプレートの記録オーバーヘッドは非常に低いので、本番環境で使用できます。詳細はJRockitフライト・レコーダのオンライン・ヘルプを参照してください。
このテンプレートは、非常に低レベルのロック・イベントが含まれること以外は、通常のプロファイリング・テンプレートに類似しています。このプロファイルは、ロックに関連する問題を捜索する際に役立ちます。ただし、通常のテンプレートより多くのオーバーヘッドが生じます。このテンプレートを使用する場合は、JVMを起動する際に-XX:+UseLockProfiling
を指定する必要があります。
オーバーヘッド: プロファイリングを実行しないときでもオーバーヘッドが生じるフラグを指定してJVMを起動する必要があるため、本番環境ではこのテンプレートを使用しないでください。
このテンプレートは、通常のプロファイリング・テンプレートに類似していますが、スタック・トレースを伴う例外イベントも含まれます。アプリケーションでスローされる例外が多い場合、このプロファイルはかなりコストがかかります。当然ながら、例外が頻繁にスローされると、ほとんどの場合はアプリケーションの動作が通常よりも遅くなります。このプロファイルは、例外に関連する問題を捜索する際に役立ちますが、通常のテンプレートよりもオーバーヘッドが高くなります。
オーバーヘッド: このテンプレートは本番環境で使用できますが、デフォルトよりも高いオーバーヘッドが生じることに注意してください。このオーバーヘッドは、スローされる例外の数に比例します。
このテンプレートは、ガベージ・コレクション情報など、メモリー・システム関連の情報に重点を置いています。組込みのデフォルトの記録と同じイベント・タイプが使用されます。
オーバーヘッド: このテンプレートは本番環境で使用できます。デフォルトで有効化され、オーバーヘッドは生じません。詳細は、JRockitフライト・レコーダのオンライン・ヘルプを参照してください。
テンプレートを変更して、記録するイベントおよび方法を正確に指定することができます。変更するには、「詳細」をクリックします。テンプレートはディスクに保存して他のユーザーと共有できます。
コマンドラインまたは診断コマンドを使用して記録を開始する場合、すぐに使用できる様々なテンプレートが多数用意されています。表4-1に、これらのテンプレートを示します。
表4-1 サーバー側のテンプレート
テンプレート名 | 説明 |
---|---|
code |
詳細なコンパイラ・ログを有効にするための追加の設定。 |
default |
非常に低いパフォーマンス・オーバーヘッド用にチューニングされた、常時動作している本番の使用で推奨されるデフォルトの設定。 |
freemem |
メモリー不足および断片化の問題をデバッグする追加の設定。 |
full |
すべてのサブシステムのすべてのイベントの収集が有効となります。警告: パフォーマンス・オーバーヘッドが非常に高くなります。 |
io |
Java I/Oの詳細ログを有効にする追加の設定。 |
leak |
メモリー・リークのデバッグ用の追加の設定。 |
locks |
同期の詳細なログを有効にするための追加の設定。 |
memory |
GC/メモリー管理の詳細なログを有効にするための追加の設定。 |
off |
すべてのサブシステムのすべてのイベントを無効にします。 |
profile |
プロファイリング記録の作成に推奨される設定。情報の量とパフォーマンス・オーバーヘッドの最適なバランスを実現。 |
sample |
コードのホットスポット・サンプリングを有効にする追加の設定。 |
semirefs |
|
記録を開始するときに、settings
パラメータでテンプレートを指定します。例:
jrcmd <pid> start_flightrecording duration=5min settings=io
または
-XX:FlightRecorderOptions=defaultrecording=true,settings=default,settings=freemem
上記の例は、複数のsettings
パラメータを指定してテンプレートの組合せを使用する方法を示しています。
独自のテンプレート・ファイルを作成してカスタム・テンプレートを設計することもできます。テンプレートは、JROCKIT_HOME/jre/lib/jfr
ディレクトリの.jfs
ファイルに保存されます。既存のファイルをコピーして変更を加えれば、独自のテンプレートを簡単に作成できます。ファイル形式の詳細は、A.3「ファイル形式」を参照してください。