Share via


執行緒集區 ETW 事件

這些事件會收集背景工作和 I/O 執行緒的資訊。

執行緒集區事件可分兩組:

背景工作執行緒集區事件

這些事件與執行階段的背景工作執行緒集區有關,可提供執行緒事件 (例如建立或停止執行緒) 的通知。 背景工作執行緒集區會使用適應性演算法來進行並行存取控制項,其中執行緒的數目是根據測量的輸送量計算而得。 背景工作執行緒集區事件可用以了解應用程式如何使用執行緒集區,以及特定工作負載可能對並行存取控制項所造成的影響。

ThreadPoolWorkerThreadStart 與 ThreadPoolWorkerThreadStop

下表顯示這些事件的關鍵字與層級。 (如需詳細資訊,請參閱 CLR ETW Keywords and Levels)。

引發事件的關鍵字 層級
ThreadingKeyword (0x10000) 告知性 (4)

下表說明事件資訊。

事件 事件識別碼 引發的時機
ThreadPoolWorkerThreadStart 50 建立背景工作執行緒時。
ThreadPoolWorkerThreadStop 51 停止背景工作執行緒時。
ThreadPoolWorkerThreadRetirementStart 52 淘汰背景工作執行緒時。
ThreadPoolWorkerThreadRetirementStop 53 淘汰的背景工作執行緒再次作用時。

下表說明事件資料。

欄位名稱 資料類型 描述
ActiveWorkerThreadCount win:UInt32 可用以處理工作的背景工作執行緒數目,其包含正在處理工作的執行緒。
RetiredWorkerThreadCount win:UInt32 無法用以處理工作的背景工作執行緒數目,但其正處於保留狀態以免之後需要更多執行緒。
ClrInstanceID Win:UInt16 CLR 或 CoreCLR 執行個體的唯一 ID。

ThreadPoolWorkerThreadAdjustment

這些執行緒集區事件會提供一些資訊,可讓您了解及偵錯執行緒插入 (並行存取控制項) 演算法的行為。 背景工作執行緒集區會於內部使用此資訊。

ThreadPoolWorkerThreadAdjustmentSample

下表說明關鍵字和層級。

引發事件的關鍵字 層級
ThreadingKeyword (0x10000) 告知性 (4)

下表說明事件資訊。

事件 事件識別碼 描述
ThreadPoolWorkerThreadAdjustmentSample 54 表示單一範例的資訊集合。亦即,具有特定並行層級之輸送量的瞬間量。

下表說明事件資料。

欄位名稱 資料類型 描述
輸送量 win:Double 每個時間單位完成的數目。
ClrInstanceID Win:UInt16 CLR 或 CoreCLR 執行個體的唯一 ID。

ThreadPoolWorkerThreadAdjustmentAdjustment

下表說明關鍵字和層級。

引發事件的關鍵字 層級
ThreadingKeyword (0x10000) 告知性 (4)

下表說明事件資訊。

事件 事件識別碼 描述
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

下表說明關鍵字和層級。

引發事件的關鍵字 層級
ThreadingKeyword (0x10000) 告知性 (4)

下表說明事件資訊。

事件 事件識別碼 描述
ThreadPoolWorkerThreadAdjustmentStats 56 收集執行緒集區的資料。

下表說明事件資料。

欄位名稱 資料類型 描述
持續時間 win:Double 收集這些統計資料期間的時間量 (以秒為單位)。
輸送量 win:Double 在這段間隔期間,每秒完成的平均數目。
ThreadWave win:Double 保留供內部使用。
ThroughputWave win:Double 保留供內部使用。
ThroughputErrorEstimate win:Double 保留供內部使用。
AverageThroughputErrorEstimate win:Double 保留供內部使用。
ThroughputRatio win:Double 在這段間隔期間,正在作用中的背景工作執行緒計數變更所造成的輸送量相對改善。
信賴度 win:Double ThroughputRatio 欄位有效性的度量。
NewcontrolSetting win:Double 作用中背景工作執行緒數目,其將做為作用中執行緒計數未來變化的基準。
NewThreadWaveMagnitude Win:UInt16 作用中執行緒計數未來變化的範圍。
ClrInstanceID Win:UInt16 CLR 或 CoreCLR 執行個體的唯一 ID。

I/O 執行緒事件

會針對非同步 I/O 執行緒集區 (完成連接埠) 中的執行緒發生這些執行緒集區事件。

IOThreadCreate_V1

下表說明關鍵字和層級。

引發事件的關鍵字 層級
ThreadingKeyword (0x10000) 告知性 (4)

下表說明事件資訊。

事件 事件識別碼 引發的時機
IOThreadCreate_V1 44 在執行緒集區中建立 I/O 執行緒時。

下表說明事件資料。

欄位名稱 資料類型 描述
Count win:UInt64 I/O 執行緒的數目,其包含新建立的執行緒。
NumRetired win:UInt64 已淘汰之背景工作執行緒的數目。
ClrInstanceID Win:UInt16 CLR 或 CoreCLR 執行個體的唯一 ID。

IOThreadRetire_V1

下表說明關鍵字和層級。

引發事件的關鍵字 層級
ThreadingKeyword (0x10000) 告知性 (4)

下表說明事件資訊。

事件 事件識別碼 引發的時機
IOThreadRetire_V1 46 當 I/O 執行緒變成淘汰候選時。

下表說明事件資料。

欄位名稱 資料類型 描述
Count win:UInt64 執行緒集區中剩餘的 I/O 執行緒數目。
NumRetired win:UInt64 已淘汰的 I/O 執行緒數目。
ClrInstanceID Win:UInt16 CLR 或 CoreCLR 執行個體的唯一 ID。

IOThreadUnretire_V1

下表說明關鍵字和層級。

引發事件的關鍵字 層級
ThreadingKeyword (0x10000) 告知性 (4)

下表說明事件資訊。

事件 事件識別碼 引發的時機
IOThreadUnretire_V1 47 因為在執行緒變成淘汰候選之後,I/O 在等候期間內到達,而導致 I/O 執行緒取消淘汰時。

下表說明事件資料。

欄位名稱 資料類型 描述
Count win:UInt64 執行緒集區中的 I/O 執行緒數目,包含此執行緒。
NumRetired win:UInt64 已淘汰的 I/O 執行緒數目。
ClrInstanceID Win:UInt16 CLR 或 CoreCLR 執行個體的唯一 ID。

IOThreadTerminate

下表說明關鍵字和層級。

引發事件的關鍵字 層級
ThreadingKeyword (0x10000) 告知性 (4)

下表說明事件資訊。

事件 事件識別碼 引發的時機
IOThreadTerminate 45 I/O 執行緒是在執行緒集區中終止。

下表說明事件資料。

欄位名稱 資料類型 描述
Count win:UInt64 執行緒集區中剩餘的 I/O 執行緒數目。
NumRetired win:UInt64 已淘汰的 I/O 執行緒數目。
ClrInstanceID Win:UInt16 CLR 或 CoreCLR 執行個體的唯一 ID。

另請參閱