V8 のトレース

V8 はトレースをサポートしています。Chrome のトレースシステムを介して V8 が Chrome に埋め込まれている場合は、自動的に動作します。しかし、スタンドアロンの V8 または Default Platform を使用するエンベッダでも有効にすることができます。トレースビューアの詳細については、こちらを参照してください。

d8 内のトレース #

トレースを開始するには、--enable-tracing オプションを使用します。V8 は、Chrome で開くことができる v8_trace.json を生成します。Chrome で開くには、chrome://tracing に移動し、「読み込む」をクリックしてから、v8-trace.json ファイルを読み込みます。

各トレースイベントは一連のカテゴリに関連付けられており、カテゴリに基づいてトレースイベントの記録を有効または無効にすることができます。上記のフラグのみでは、デフォルトのカテゴリ(オーバーヘッドの低い一連のカテゴリ)のみを有効にします。より多くのカテゴリを有効にして、さまざまなパラメータをより細かく制御するには、設定ファイルを指定する必要があります。

以下は設定ファイル traceconfig.json の例です。

{
"record_mode": "record-continuously",
"included_categories": ["v8", "disabled-by-default-v8.runtime_stats"]
}

トレースとトレース設定ファイルを使用して d8 を呼び出す例

d8 --enable-tracing --trace-config=traceconfig.json

トレース設定の形式は Chrome Tracing のものと互換性がありますが、含まれるカテゴリリストの正規表現はサポートしていません。また、V8 は除外カテゴリリストを必要としないため、V8 のトレース設定ファイルは Chrome Tracing で再利用できますが、トレース設定ファイルに正規表現が含まれている場合は V8 のトレースで Chrome のトレース設定ファイルは再利用できません。そのほか、V8 は除外カテゴリリストを無視します。

トレースでランタイムコール統計を有効にする #

ランタイムコール統計(RCS)を取得するには、次の 2 つのカテゴリを有効にしてトレースを記録してください: v8disabled-by-default-v8.runtime_stats。各トップレベルの V8 トレースイベントには、そのイベントの期間のランタイム統計が含まれます。trace-viewer でこれらのイベントのいずれかを選択すると、下部のパネルにランタイム統計テーブルが表示されます。複数のイベントを選択すると、マージされたビューが作成されます。

トレースで GC オブジェクト統計を有効にする #

トレース内で GC オブジェクト統計を取得するには、disabled-by-default-v8.gc_stats カテゴリを有効にしてトレースを収集する必要があります。また、次の --js-flags を使用する必要があります。

--track_gc_object_stats --noincremental-marking

trace-viewer でトレースを読み込んだ後、V8.GC_Object_Stats という名前のスライスを検索します。統計は下部のパネルに表示されます。複数のスライスを選択すると、マージされたビューが作成されます。