スレッド プール ETW イベント
これらのイベントは、ワーカー スレッドと I/O スレッドに関する情報を収集します。
スレッド プール イベントには 2 つのグループがあります。
ワーカー スレッド プール イベントは、アプリケーションがどのようにスレッド プールを使用するかに関する情報と、コンカレンシー制御におけるワークロードの効果に関する情報を提供します。
I/O スレッド プール イベントは、スレッド プールで作成、無効化、無効化解除、または終了した I/O スレッドに関する情報を提供します。
ワーカー スレッド プール イベント
これらのイベントは、ランタイムのワーカー スレッドのプールに関連付けられており、スレッド イベントに関する通知 (スレッドが作成されたり停止されたりした場合など) を提供します。 ワーカー スレッド プールは、スレッドの数が計測されたスループットに基づいて計算されるアダプティブ アルゴリズムを使用して、コンカレンシー制御を実行します。 ワーカー スレッド プール イベントを使用すると、アプリケーションで使用されるスレッド プールの様子や特定のワークロードがコンカレンシー制御に与える影響などを理解することができます。
ThreadPoolWorkerThreadStart および ThreadPoolWorkerThreadStop
次の表に、これらのイベントのキーワードとレベルを示します。 (詳細については、「 CLR ETW Keywords and Levels」を参照してください)。
イベントを発生させるキーワード | Level |
---|---|
ThreadingKeyword (0x10000) |
情報提供 (4) |
次の表に、イベント情報を示します。
イベント | イベント ID | いつ発生するか |
---|---|---|
ThreadPoolWorkerThreadStart |
50 | ワーカー スレッドが作成された。 |
ThreadPoolWorkerThreadStop |
51 | ワーカー スレッドが停止された。 |
ThreadPoolWorkerThreadRetirementStart |
52 | ワーカー スレッドが無効にされた。 |
ThreadPoolWorkerThreadRetirementStop |
53 | 提供終了になったワーカー スレッドが再びアクティブになった。 |
次の表に、イベント データを示します。
フィールド名 | データ型 | 説明 |
---|---|---|
ActiveWorkerThreadCount | win:UInt32 | 作業の処理に使用可能なワーカー スレッド (既に作業の処理中のもの含む) の数。 |
RetiredWorkerThreadCount | win:UInt32 | 作業の処理に使用できないものの、後にさらに多くのスレッドが必要になった場合に備えて予約されているワーカー スレッドの数。 |
ClrInstanceID | Win:UInt16 | CLR または CoreCLR のインスタンスの一意の ID。 |
ThreadPoolWorkerThreadAdjustment
これらのスレッド プール イベントは、スレッドの挿入 (コンカレンシー制御) アルゴリズムの動作を理解したりデバッグしたりするための情報を提供します。 この情報は、ワーカー スレッド プールによって内部で使用されます。
ThreadPoolWorkerThreadAdjustmentSample
次の表に、キーワードとレベルを示します。
イベントを発生させるキーワード | Level |
---|---|
ThreadingKeyword (0x10000) |
情報提供 (4) |
次の表に、イベント情報を示します。
イベント | イベント ID | 説明 |
---|---|---|
ThreadPoolWorkerThreadAdjustmentSample |
54 | 1 つのサンプルの情報のコレクションを参照します。つまり、特定のコンカレンシー レベルの特定の時刻におけるスループットの測定値です。 |
次の表に、イベント データを示します。
フィールド名 | データ型 | 説明 |
---|---|---|
スループット | win:Double | 時間の単位あたりの入力候補の数です。 |
ClrInstanceID | Win:UInt16 | CLR または CoreCLR のインスタンスの一意の ID。 |
ThreadPoolWorkerThreadAdjustmentAdjustment
次の表に、キーワードとレベルを示します。
イベントを発生させるキーワード | Level |
---|---|
ThreadingKeyword (0x10000) |
情報提供 (4) |
次の表に、イベント情報を示します。
イベント | イベント ID | 説明 |
---|---|---|
ThreadPoolWorkerThreadAdjustmentAdjustment |
55 | スレッドの挿入 (山登り法) アルゴリズムが、コンカレンシー レベルに変更があったと判断した場合に、コントロールの変更を記録します。 |
次の表に、イベント データを示します。
フィールド名 | データ型 | 説明 |
---|---|---|
AverageThroughput | win:Double | 計測のサンプルの平均のスループット。 |
NewWorkerThreadCount | win:UInt32 | 新しいアクティブなワーカー スレッド数。 |
理由 | win:UInt32 | 調整の理由。 0x00 - ウォーム アップ。 0x01 - 初期化。 0x02 - ランダムな移動。 0x03 - 上昇移動。 0x04 - 変更点。 0x05 - 安定化。 0x06 - 不足。 0x07 - スレッドのタイムアウト。 |
ClrInstanceID | Win:UInt16 | CLR または CoreCLR のインスタンスの一意の ID。 |
ThreadPoolWorkerThreadAdjustmentStats
次の表に、キーワードとレベルを示します。
イベントを発生させるキーワード | Level |
---|---|
ThreadingKeyword (0x10000) |
情報提供 (4) |
次の表に、イベント情報を示します。
イベント | イベント ID | 説明 |
---|---|---|
ThreadPoolWorkerThreadAdjustmentStats |
56 | スレッド プールに関するデータを収集します。 |
次の表に、イベント データを示します。
フィールド名 | データ型 | 説明 |
---|---|---|
Duration | win:Double | これらの統計情報が収集される時間数 (秒)。 |
スループット | win:Double | この間隔中の 1 秒あたりの入力候補の平均数。 |
ThreadWave | win:Double | 内部使用のために予約されています。 |
ThroughputWave | win:Double | 内部使用のために予約されています。 |
ThroughputErrorEstimate | win:Double | 内部使用のために予約されています。 |
AverageThroughputErrorEstimate | win:Double | 内部使用のために予約されています。 |
ThroughputRatio | win:Double | この間隔中にアクティブなワーカー スレッドの数の変動によって引き起こされる、スループットの相対的な向上。 |
Confidence | win:Double | ThroughputRatio フィールドの有効性の測定結果。 |
NewcontrolSetting | win:Double | アクティブなスレッド数の将来のバリエーションのベースラインとして使用するアクティブなワーカー スレッドの数。 |
NewThreadWaveMagnitude | Win:UInt16 | アクティブなスレッド数の、将来のバリエーションの大きさを指定します。 |
ClrInstanceID | Win:UInt16 | CLR または CoreCLR のインスタンスの一意の ID。 |
I/O スレッド イベント
これらのスレッド プール イベントは、I/O スレッド プール (完了ポート) にあるスレッドで発生します。これは非同期です。
IOThreadCreate_V1
次の表に、キーワードとレベルを示します。
イベントを発生させるキーワード | Level |
---|---|
ThreadingKeyword (0x10000) |
情報提供 (4) |
次の表に、イベント情報を示します。
イベント | イベント ID | いつ発生するか |
---|---|---|
IOThreadCreate_V1 |
44 | I/O スレッドがスレッド プールに作成された。 |
次の表に、イベント データを示します。
フィールド名 | データ型 | 説明 |
---|---|---|
Count | win:UInt64 | 新しく作成されたスレッドを含む、I/O のスレッドの数です。 |
NumRetired | win:UInt64 | 提供終了になったワーカー スレッドの数。 |
ClrInstanceID | Win:UInt16 | CLR または CoreCLR のインスタンスの一意の ID。 |
IOThreadRetire_V1
次の表に、キーワードとレベルを示します。
イベントを発生させるキーワード | Level |
---|---|
ThreadingKeyword (0x10000) |
情報提供 (4) |
次の表に、イベント情報を示します。
イベント | イベント ID | いつ発生するか |
---|---|---|
IOThreadRetire_V1 |
46 | I/O スレッドが、提供終了の候補になる。 |
次の表に、イベント データを示します。
フィールド名 | データ型 | 説明 |
---|---|---|
Count | win:UInt64 | スレッド プールに残っている I/O スレッドの数。 |
NumRetired | win:UInt64 | 提供終了になった I/O スレッドの数。 |
ClrInstanceID | Win:UInt16 | CLR または CoreCLR のインスタンスの一意の ID。 |
IOThreadUnretire_V1
次の表に、キーワードとレベルを示します。
イベントを発生させるキーワード | Level |
---|---|
ThreadingKeyword (0x10000) |
情報提供 (4) |
次の表に、イベント情報を示します。
イベント | イベント ID | いつ発生するか |
---|---|---|
IOThreadUnretire_V1 |
47 | スレッドが提供終了の候補になってから待機期間内に I/O が到着したため I/O スレッドが提供終了解除された。 |
次の表に、イベント データを示します。
フィールド名 | データ型 | 説明 |
---|---|---|
Count | win:UInt64 | これを含む、スレッド プール内の I/O スレッドの数。 |
NumRetired | win:UInt64 | 提供終了になった I/O スレッドの数。 |
ClrInstanceID | Win:UInt16 | CLR または CoreCLR のインスタンスの一意の ID。 |
IOThreadTerminate
次の表に、キーワードとレベルを示します。
イベントを発生させるキーワード | Level |
---|---|
ThreadingKeyword (0x10000) |
情報提供 (4) |
次の表に、イベント情報を示します。
イベント | イベント ID | いつ発生するか |
---|---|---|
IOThreadTerminate |
45 | スレッド プール内の I/O スレッドが終了した。 |
次の表に、イベント データを示します。
フィールド名 | データ型 | 説明 |
---|---|---|
Count | win:UInt64 | スレッド プールに残っている I/O スレッドの数。 |
NumRetired | win:UInt64 | 提供終了になった I/O スレッドの数。 |
ClrInstanceID | Win:UInt16 | CLR または CoreCLR のインスタンスの一意の ID。 |
関連項目
.NET