线程池 ETW 事件
这些事件可收集有关辅助线程和 I/O 线程的信息。
有两组线程池事件:
辅助线程池事件,这些事件提供有关应用程序如何使用线程池以及工作负荷对并发控制的影响的信息。
I/O 线程池事件,这些事件提供有关线程池中创建的、撤消的、取消撤消的或终止的 I/O 线程的信息。
辅助线程池事件
这些事件与运行时的辅助线程池有关,并提供有关线程事件的通知(例如,当创建或停止线程时)。 辅助线程池使用自适应算法进行并发控制,其中线程数量基于测量的吞吐量计算得出。 可以使用辅助线程池事件来了解应用程序如何使用线程池,以及某些工作负荷对并发控制可能产生的影响。
ThreadPoolWorkerThreadStart 和 ThreadPoolWorkerThreadStop
下表显示了这些事件的关键字和级别。 (有关更多信息,请参见 CLR ETW 关键字和级别。)
用于引发事件的关键字 |
级别 |
---|---|
ThreadingKeyword (0x10000) |
信息性 (4) |
下表显示事件信息。
Event |
事件 ID |
在以下情况下引发 |
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) |
下表显示事件信息。
Event |
事件 ID |
说明 |
---|---|---|
ThreadPoolWorkerThreadAdjustmentSample |
54 |
指示针对一个示例的信息收集;即,在某一时刻内特定并发级别的吞吐量的度量值。 |
下表显示事件数据。
字段名 |
数据类型 |
说明 |
---|---|---|
Throughput |
win:Double |
每单位时间的完成数目。 |
ClrInstanceID |
Win:UInt16 |
CLR 或 CoreCLR 的实例的唯一 ID。 |
ThreadPoolWorkerThreadAdjustmentAdjustment
下表显示关键字和级别。
用于引发事件的关键字 |
级别 |
---|---|
ThreadingKeyword (0x10000) |
信息性 (4) |
下表显示事件信息。
Event |
事件 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
下表显示关键字和级别。
用于引发事件的关键字 |
级别 |
---|---|
ThreadingKeyword (0x10000) |
信息性 (4) |
下表显示事件信息。
Event |
事件 ID |
说明 |
---|---|---|
ThreadPoolWorkerThreadAdjustmentStats |
56 |
收集线程池上的数据。 |
下表显示事件数据。
字段名 |
数据类型 |
说明 |
---|---|---|
持续时间 |
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) |
下表显示事件信息。
Event |
事件 ID |
在以下情况下引发 |
IOThreadCreate_V1 |
44 |
在线程池中创建 I/O 线程时。 |
下表显示事件数据。
字段名 |
数据类型 |
说明 |
---|---|---|
计数 |
win:UInt64 |
包括最新创建的线程在内的 I/O 线程的数量。 |
NumRetired |
win:UInt64 |
已撤消的辅助线程的数量。 |
ClrInstanceID |
Win:UInt16 |
CLR 或 CoreCLR 的实例的唯一 ID。 |
IOThreadRetire_V1
下表显示关键字和级别。
用于引发事件的关键字 |
级别 |
---|---|
ThreadingKeyword (0x10000) |
信息性 (4) |
下表显示事件信息。
Event |
事件 ID |
在以下情况下引发 |
---|---|---|
IOThreadRetire_V1 |
46 |
在 I/O 线程变为撤消候选项时。 |
下表显示事件数据。
字段名 |
数据类型 |
说明 |
---|---|---|
计数 |
win:UInt64 |
线程池中剩余的 I/O 线程数。 |
NumRetired |
win:UInt64 |
已撤消的 I/O 线程的数量。 |
ClrInstanceID |
Win:UInt16 |
CLR 或 CoreCLR 的实例的唯一 ID。 |
IOThreadUnretire_V1
下表显示关键字和级别。
用于引发事件的关键字 |
级别 |
---|---|
ThreadingKeyword (0x10000) |
信息性 (4) |
下表显示事件信息。
Event |
事件 ID |
在以下情况下引发 |
---|---|---|
IOThreadUnretire_V1 |
47 |
当由于 I/O 在线程变为撤消候选项后的等待周期内到达而导致取消撤消 I/O 线程时。 |
下表显示事件数据。
字段名 |
数据类型 |
说明 |
---|---|---|
计数 |
win:UInt64 |
线程池中包括这一个线程在内的 I/O 线程的数量。 |
NumRetired |
win:UInt64 |
已撤消的 I/O 线程的数量。 |
ClrInstanceID |
Win:UInt16 |
CLR 或 CoreCLR 的实例的唯一 ID。 |
IOThreadTerminate
下表显示关键字和级别。
用于引发事件的关键字 |
级别 |
---|---|
ThreadingKeyword (0x10000) |
信息性 (4) |
下表显示事件信息。
Event |
事件 ID |
在以下情况下引发 |
---|---|---|
IOThreadTerminate |
45 |
在线程池中创建 I/O 线程时。 |
下表显示事件数据。
字段名 |
数据类型 |
说明 |
---|---|---|
计数 |
win:UInt64 |
线程池中剩余的 I/O 线程数。 |
NumRetired |
win:UInt64 |
已撤消的 I/O 线程的数量。 |
ClrInstanceID |
Win:UInt16 |
CLR 或 CoreCLR 的实例的唯一 ID。 |
返回页首