メインコンテンツまでスキップ

V8のトレース

V8はトレース機能をサポートしています。これはChromeのトレースシステムを介してChromeに埋め込まれた場合に自動的に機能します。ただし、スタンドアロンのV8やDefault Platformを使用する埋め込み環境でも有効にすることができます。トレースビューアーの詳細についてはこちらをご覧ください。

d8でのトレース

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

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

以下はtraceconfig.jsonという設定ファイルの例です:

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

d8にトレースとtraceconfigファイルを指定して呼び出す例:

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

トレース設定フォーマットはChrome Tracingのものと互換性がありますが、included_categoriesリストに正規表現をサポートしていません。また、V8にはexcluded_categoriesリストが必要ありません。そのため、V8用のトレース設定ファイルはChrome Tracingで再利用できますが、トレース設定ファイルに正規表現が含まれている場合には、Chromeのトレース設定ファイルはV8トレースで再利用することはできません。その上、V8はexcluded_categoriesリストを無視します。

トレースでRuntime Call Statisticsを有効にする

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

トレースでGC Object Statisticsを有効にする

トレースでGC Object Statisticsを取得するには、disabled-by-default-v8.gc_statsカテゴリを有効にしてトレースを収集する必要があります。また、以下の--js-flagsを使用する必要があります:

--track_gc_object_stats --noincremental-marking

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