共用方式為


執行緒集區 ETW 事件

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

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

  • 背景工作執行緒集區事件:提供有關應用程式如何使用執行緒集區,以及工作負載對並行存取控制之影響的資訊。

  • I/O 執行緒集區事件:提供有關執行緒集區中所建立、停用、取消停用或終止之 I/O 執行緒集區的資訊。

背景工作執行緒集區事件

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

ThreadPoolWorkerThreadStart 和 ThreadPoolWorkerThreadStop

下表顯示這些事件的關鍵字和層級 如需詳細資訊,請參閱 CLR ETW 關鍵字和層級

引發事件的關鍵字

層級

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

表示收集單一範例的資訊。亦即,具有特定並行層級之輸送量的瞬間測量。

下表顯示事件資料。

欄位名稱

資料型別

說明

Throughput

win:Double

每個時間單位的完成數目。

ClrInstanceID

Win:UInt16

CLR 或 CoreCLR 執行個體的唯一 ID。

ThreadPoolWorkerThreadAdjustmentAdjustment

下表顯示關鍵字和層級。

引發事件的關鍵字

層級

ThreadingKeyword (0x10000)

告知性 (4)

下表顯示事件資訊。

事件

事件識別碼

說明

ThreadPoolWorkerThreadAdjustmentAdjustment

55

當執行緒插入 (攀登) 演算法判斷並行層級就地變更時,記錄控制中的變更。

下表顯示事件資料。

欄位名稱

資料型別

說明

AverageThroughput

win:Double

測量範例的平均輸送量。

NewWorkerThreadCount

win:UInt32

使用中背景工作執行緒的新數目。

Reason

win:UInt32

調整的原因。

0x00 - 熱身。

0x01 - 初始化。

0x02 - 隨機移動。

0x03 - 攀登移動。

0x04 - 變更點。

0x05 - 穩定。

0x06 - 資源不足。

0x07 - 執行緒逾時。

ClrInstanceID

Win:UInt16

CLR 或 CoreCLR 執行個體的唯一 ID。

ThreadPoolWorkerThreadAdjustmentStats

下表顯示關鍵字和層級。

引發事件的關鍵字

層級

ThreadingKeyword (0x10000)

告知性 (4)

下表顯示事件資訊。

事件

事件識別碼

描述

ThreadPoolWorkerThreadAdjustmentStats

56

蒐集執行緒集區的資料。

下表顯示事件資料。

欄位名稱

資料型別

說明

Duration

win:Double

收集這些統計資料經過的時間量 (以秒為單位)。

Throughput

win:Double

在這段間隔期間,每秒完成的平均數目。

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

下表顯示關鍵字和層級。

引發事件的關鍵字

層級

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。

回到頁首

請參閱

概念

CLR ETW 事件