トレース データへのアクセス
.NET TraceProcessing は、NuGet から次のパッケージ ID を使用して入手できます。
Microsoft.Windows.EventTracing.Processing.All
このパッケージを使用すると、トレース ファイル内のデータにアクセスできます。 まだトレース ファイルがない場合は、Windows パフォーマンス レコーダーを使用して作成できます。
次のコンソール アプリの例では、トレースに含まれるすべてのプロセスのコマンド ラインにアクセスする方法を示します。
using Microsoft.Windows.EventTracing;
using Microsoft.Windows.EventTracing.Processes;
using System;
class Program
{
static void Main(string[] args)
{
if (args.Length != 1)
{
Console.Error.WriteLine("Usage: <trace.etl>");
return;
}
using (ITraceProcessor trace = TraceProcessor.Create(args[0]))
{
IPendingResult<IProcessDataSource> pendingProcessData = trace.UseProcesses();
trace.Process();
IProcessDataSource processData = pendingProcessData.Result;
foreach (IProcess process in processData.Processes)
{
Console.WriteLine(process.CommandLine);
}
}
}
}
TraceProcessor の使用
トレースを処理するには、TraceProcessor.Create を呼び出します。 コア インターフェイスは ITraceProcessor であり、このインターフェイスを使用するには次のパターンが関与します。
- まず、トレースから使用する必要があるデータをプロセッサに伝え、
- 次にトレースを処理し、そして
- 最後に、結果にアクセスします。
必要なデータの種類をプロセッサに前もって伝えるということは、考えられるあらゆる種類の大量のトレース データの処理に時間を費やす必要がないことを意味します。 代わりに、TraceProcessor では要求された特定の種類のデータを提供するのに必要な作業のみを実行します。
推奨されるプロジェクト設定
TraceProcessor で使用することを推奨している、プロジェクト設定をいくつか紹介します。
exe を 64 ビットとして実行することをお勧めします。
新しい C# .NET Framework コンソール アプリケーション向けの Visual Studio の既定値は、[任意の CPU] で [32 ビットを優先] がオンになっています。 .NET の既定値には、既に推奨設定が設定されている可能性があります。
トレース処理は、特にトレースのサイズが大きいとメモリ消費が大きくなることがあるため、TraceProcessor が使用される exe の [プラットフォーム ターゲット] を [x64] (または [32 ビットを優先] をオフにする) ことをお勧めします。 これらの設定を変更するには、プロジェクトの [プロパティ] の下にある [ビルド] タブを確認してください。 すべての構成に対してこれらの設定を変更するには、[構成] ドロップダウンが既定値の現在の構成のみではなく、[すべての構成] に設定されている必要があります。
NuGet は、以前の packages.config モードではなく、新しいスタイルの PackageReference モードで使用することをお勧めします。
新しいプロジェクトの既定値を変更するには、[ツール]、[NuGet パッケージ マネージャー]、[パッケージ マネージャー設定]、[パッケージ管理]、[既定のパッケージ管理形式] を確認してください。
組み込みデータ ソース
.etl ファイルでは、トレース内の多くの種類のデータをキャプチャできます。 .etl ファイル内のデータは、トレースのキャプチャ時に有効になっていたプロバイダーによって異なります。 次の一覧は、TraceProcessor から使用できるトレース データの種類を示しています。
コード | 説明 | 関連する WPA の項目 |
---|---|---|
trace.UseClassicEvents() | スキーマ情報が含まれないクラシック ETW イベントをトレースから提供します。 | Generic Events (汎用イベント) テーブル ([Event Type](イベントの種類) が [Classic](クラシック) または [WPP] の場合) |
trace.UseConnectedStandbyData() | 接続されたスタンバイを開始および終了するシステムに関するデータをトレースから提供します。 | CS Summary (CS サマリー) テーブル |
trace.UseCpuIdleStates() | CPU の C 状態に関するデータをトレースから提供します。 | CPU Idle States (CPU アイドル状態) テーブル ([Type](種類) が [Actual](実際値) の場合) |
trace.UseCpuSamplingData() | 命令ポインターの定期的なサンプリングに基づいて、CPU 使用率に関するデータをトレースから提供します。 | CPU Usage (Sampled) (CPU 使用率 (サンプリング)) テーブル |
trace.UseCpuSchedulingData() | コンテキストの切り替えや準備スレッドのイベントなど、CPU スレッドのスケジュール設定に関するデータをトレースから提供します。 | CPU Usage (Precise) (CPU 使用率 (厳密)) テーブル |
trace.UseDevicePowerData() | デバイスの D 状態に関するデータをトレースから提供します。 | Device DState (デバイス D 状態) テーブル |
trace.UseDirectXData() | DirectX アクティビティに関するデータをトレースから提供します。 | GPU Utilization (GPU 使用率) テーブル |
traceUseDiskIOData() | ディスク I/O アクティビティに関するデータをトレースから提供します。 | Disk Usage (ディスク使用率) テーブル |
trace.UseEnergyEstimationData() | エネルギー見積もりエンジンからプロセスごとに見積もられたエネルギー使用量に関するデータをトレースから提供します。 | Energy Estimation Engine Summary (by Process) (エネルギー見積りエンジン サマリー (プロセス別)) テーブル |
trace.UseEnergyMeterData() | エネルギー メーター インターフェイス (EMI) から測定されたエネルギー使用量に関するデータをトレースから提供します。 | Energy Estimation Engine (by Emi) (エネルギー見積りエンジン (EMI 別)) テーブル |
trace.UseFileIOData() | ファイル I/O アクティビティに関するデータをトレースから提供します。 | File I/O (ファイル I/O) テーブル |
trace.UseGenericEvents() | マニフェスト イベントと TraceLogging イベントをトレースから提供します。 | Generic Events (汎用イベント) テーブル ([Event Type](イベントの種類) が [Manifested](マニフェスト) または [TraceLogging] の場合) |
trace.UseHandles() | アクティブなカーネル ハンドルに関する部分的なデータをトレースから提供します。 | Handles (ハンドル) テーブル |
trace.UseHardFaults() | ハード ページ フォールトに関するデータをトレースから提供します。 | Hard Faults (ハード フォールト) テーブル |
trace.UseHeapSnapshots() | プロセス ヒープの使用状況に関するデータをトレースから提供します。 | Heap Snapshot (ヒープ スナップショット) テーブル |
trace.UseHypercalls() | トレース中に発生した Hyper-V ハイパーコールに関するデータを提供します。 | |
trace.UseImageSections() | イメージのセクションに関するデータをトレースから提供します。 | CPU Usage (Sampled) (CPU 使用率 (サンプリング)) テーブルの [Section Name](セクション名) 列 |
trace.UseInterruptHandlingData() | 割り込みサービス ルーチン (ISR) と遅延プロシージャ呼び出し (DPC) アクティビティに関するデータをトレースから提供します。 | DPC/ISR テーブル |
trace.UseMarks() | マーク (ラベル付きタイムスタンプ) をトレースから提供します。 | Marks (マーク) テーブル |
trace.UseMemoryUtilizationData() | システム メモリの合計使用率に関するデータをトレースから提供します。 | Memory Utilization (メモリ使用率) テーブル |
trace.UseMetadata() | さらに処理することなく使用できるトレース メタデータを提供します。 | [System Configuration](システム構成)、[Traces and General](トレースと全般) |
trace.UsePlatformIdleStates() | システムのターゲットと実際のプラットフォームのアイドル状態に関するデータをトレースから提供します。 | Platform Idle State (プラットフォーム アイドル状態) テーブル |
trace.UsePoolAllocations() | カーネル プールのメモリ使用量に関するデータをトレースから提供します。 | Pool Summary (プール サマリー) テーブル |
trace.UsePowerConfigurationData() | トレースからシステムの電源構成に関するデータを提供します。 | [System Configuration](システム構成)、[Power Settings](電源設定) |
trace.UsePowerDependencyCoordinatorData() | トレースからアクティブな電源の依存関係コーディネーター フェーズに関するデータを提供します。 | Notification Phase Summary (通知フェーズ サマリー) テーブル |
trace.UseProcesses() | トレース中にアクティブなプロセスに関するデータと、そのイメージと PDB を提供します。 | Processes (プロセス) テーブル、Images (イメージ) テーブル、[Symbols Hub](シンボル ハブ) |
trace.UseProcessorCounters() | プロセッサ カウンター モニター (PCM) のプロセッサ パフォーマンス カウンター値に関するデータをトレースから提供します。 | |
trace.UseProcessorFrequencyData() | プロセッサが実行された周波数に関するデータをトレースから提供します。 | Processor Frequency (プロセッサ周波数) テーブル ([Type](種類) が [Actual](実際値) の場合) |
trace.UseProcessorProfileData() | アクティブなプロセッサの電源プロファイルに関するデータをトレースから提供します。 | Processor Profiles (プロセッサ プロファイル) テーブル |
trace.UseProcessorParkingData() | トレースからパークまたはパーク解除されたプロセッサに関するデータを提供します。 | Processor Parking State (プロセッサ パーク状態) テーブル |
trace.UseProcessorParkingLimits() | パーク解除されていないプロセッサの許容最大数に関するデータをトレースから提供します。 | Core Parking Cap State (コア パーク キャップ状態) テーブル |
trace.UseProcessorQualityOfServiceData() | 各プロセッサのサービス レベルの品質に関するデータをトレースから提供します。 | Processor Qos Class (プロセッサ Qos クラス) テーブル |
trace.UseProcessorThrottlingData() | プロセッサの最大周波数スロットリングに関するデータをトレースから提供します。 | Processor Constraints (プロセッサ制約) テーブル |
trace.UseReadyBootData() | Ready Boot からのブート プリフェッチ アクティビティに関するデータをトレースから提供します。 | Ready Boot Events (Ready Boot イベント) テーブル |
trace.UseReferenceSetData() | 各プロセスで使用される仮想メモリのページに関するデータをトレースから提供します。 | Reference Set (参照セット) テーブル |
trace.UseRegionsOfInterest() | 指名された関心領域の間隔を、xml 構成ファイルで指定されたとおりにトレースから提供します。 | Regions of Interest (関心領域) テーブル |
trace.UseRegistryData() | トレース中のレジストリ アクティビティに関するデータを提供します。 | Registry (レジストリ) テーブル |
trace.UseResidentSetData() | 物理メモリに常駐していた各プロセスの仮想メモリのページに関するデータをトレースから提供します。 | Resident Set (常駐設定) テーブル |
trace.UseRundownData() | トレースのランダウン データ コレクションが発生した間隔に関するデータをトレースから提供します。 | グラフ タイムラインの網掛けの領域 |
trace.UseScheduledTasks() | トレース中に実行されたスケジュールが設定されたタスクに関するデータを提供します。 | Scheduled Tasks (スケジュールが設定されたタスク) テーブル |
trace.UseServices() | トレース中にアクティブまたは状態がキャプチャされたサービスに関するデータを提供します。 | Services (サービス) テーブル、[System Configuration](システム構成)、[Services](サービス) |
trace.UseStacks() | トレース中に記録されたスタックに関するデータを提供します。 | |
trace.UseStackEvents() | トレース中に記録されたスタックに関連付けられたイベントに関するデータを提供します。 | Stacks (スタック) テーブル |
trace.UseStackTags() | トレースからスタック タグにスタックをグループ化するマッパーを、XML 構成ファイルで指定されたとおりに提供します。 | [Stack Tag](スタック タグ) や [Stack (Frame Tags)](スタック (フレーム タグ)) などの列 |
trace.UseSymbols() | トレースのシンボルを読み込む機能を提供します。 | [Configure Symbol Paths](シンボル パスの構成)、[Load Symbols](シンボルの読み込み) |
trace.UseSyscalls() | トレース中に発生したシステム コールに関するデータを提供します。 | Syscalls (システム コール) テーブル |
trace.UseSystemMetadata() | 一般的なシステム全体のメタデータをトレースから提供します。 | システム構成 |
trace.UseSystemPowerSourceData() | アクティブなシステム電源に関するデータ (AC と DC の比較) をトレースから提供します。 | System Power Source (システム電源) テーブル |
trace.UseSystemSleepData() | システム電源の全体的な状態に関するデータをトレースから提供します。 | Power Transition (電源切り替え) テーブル |
trace.UseTargetCpuIdleStates() | ターゲット CPU の C 状態に関するデータをトレースから提供します。 | CPU Idle States (CPU アイドル状態) テーブル ([Type](種類) が [Target](ターゲット) の場合) |
trace.UseTargetProcessorFrequencyData() | ターゲット プロセッサの周波数に関するデータをトレースから提供します。 | Processor Frequency (プロセッサ周波数) テーブル ([Type](種類) が [Target](ターゲット) の場合) |
trace.UseThreads() | トレース中にアクティブなスレッドに関するデータを提供します。 | Thread Lifetimes (スレッド有効期間) テーブル |
trace.UseTraceStatistics() | トレース内のイベントに関する統計情報を提供します。 | [System Configuration](システム構成)、[Trace Statistics](トレースの統計情報) |
trace.UseUtcData() | ユニバーサル利用統計情報クライアント (UTC) を使用して、Microsoft のテレメトリ アクティビティに関するデータをトレースから提供します。 | Utc テーブル |
trace.UseWindowInFocus() | フォーカスが当たっているアクティブな UI ウィンドウに対する変更に関するデータをトレースから提供します。 | Window in Focus (フォーカスが当たっているウィンドウ) テーブル |
trace.UseWindowsTracePreprocessorEvents() | Windows ソフトウェア トレース プリプロセッサ (WPP) のイベントをトレースから提供します。 | WPP Trace (WPP トレース) テーブル、Generic Events (汎用イベント) テーブル ([Event Type](イベントの種類) が [WPP] の場合) |
trace.UseWinINetData() | Windows Internet (WinINet) を介して、インターネット アクティビティに関するデータをトレースから提供します。 | Download Details (ダウンロード詳細) テーブル |
trace.UseWorkingSetData() | 各プロセスまたはカーネル カテゴリのワーキング セットに含まれていた仮想メモリのページに関するデータをトレースから提供します。 | Virtual Memory Snapshots (仮想メモリ スナップショット) テーブル |
さらに、使用可能なすべてのトレース データについて ITraceSource の拡張メソッドを参照するか、IntelliSense によって示される "trace." から使用可能なメソッドを確認してください。
次の手順
この概要では、TraceProcessor を使用してトレース データにアクセスする方法と、アクセスできる組み込みのデータ ソースについて説明しました。
次の手順では、TraceProcessor を拡張してカスタム トレース データにアクセスする方法について説明します。
Windows developer