.NET 运行时线程池事件
本文中介绍的事件用于收集线程池中有关工作线程和 I/O 线程的信息。 有关如何将这些事件用于诊断的详细信息,请参阅对 .NET 应用程序进行日志记录和跟踪
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。 |
IOThreadTerminate_V1 事件
下表显示了关键字和级别
引发事件的关键字 |
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。 |
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。 |
ThreadPoolWorkerThreadStart 事件
引发事件的关键字 |
Level |
ThreadingKeyword (0x10000) |
信息性 (4) |
事件 |
事件 ID |
说明 |
ThreadPoolWorkerThreadStart |
50 |
创建工作线程。 |
字段名 |
数据类型 |
说明 |
ActiveWorkerThreadCount |
win:UInt32 |
可用于处理工作的工作线程数,包括已在处理工作的工作线程。 |
RetiredWorkerThreadCount |
win:UInt32 |
不能用于处理工作但被保留以防之后需要更多线程的工作线程数。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 的实例的唯一 ID。 |
ThreadPoolWorkerThreadStop 事件
引发事件的关键字 |
Level |
ThreadingKeyword (0x10000) |
信息性 (4) |
事件 |
事件 ID |
说明 |
ThreadPoolWorkerThreadStop |
51 |
停止工作线程。 |
字段名 |
数据类型 |
说明 |
ActiveWorkerThreadCount |
win:UInt32 |
可用于处理工作的工作线程数,包括已在处理工作的工作线程。 |
RetiredWorkerThreadCount |
win:UInt32 |
不能用于处理工作但被保留以防之后需要更多线程的工作线程数。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 的实例的唯一 ID。 |
ThreadPoolWorkerThreadWait 事件
引发事件的关键字 |
Level |
ThreadingKeyword (0x10000) |
信息性 (4) |
事件 |
事件 ID |
说明 |
ThreadPoolWorkerThreadWait |
57 |
工作线程开始等待运行。 |
字段名 |
数据类型 |
说明 |
ActiveWorkerThreadCount |
win:UInt32 |
可用于处理工作的工作线程数,包括已在处理工作的工作线程。 |
RetiredWorkerThreadCount |
win:UInt32 |
不能用于处理工作但被保留以防之后需要更多线程的工作线程数。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 的实例的唯一 ID。 |
ThreadPoolWorkerThreadRetirementStart 事件
引发事件的关键字 |
Level |
ThreadingKeyword (0x10000) |
信息性 (4) |
事件 |
事件 ID |
说明 |
ThreadPoolWorkerThreadRetirementStart |
52 |
停用工作线程。 |
字段名 |
数据类型 |
说明 |
ActiveWorkerThreadCount |
win:UInt32 |
可用于处理工作的工作线程数,包括已在处理工作的工作线程。 |
RetiredWorkerThreadCount |
win:UInt32 |
不能用于处理工作但被保留以防之后需要更多线程的工作线程数。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 的实例的唯一 ID。 |
ThreadPoolWorkerThreadRetirementStop 事件
引发事件的关键字 |
Level |
ThreadingKeyword (0x10000) |
信息性 (4) |
事件 |
事件 ID |
说明 |
ThreadPoolWorkerThreadRetirementStop |
53 |
停用的工作线程再次变为活动状态。 |
字段名 |
数据类型 |
说明 |
ActiveWorkerThreadCount |
win:UInt32 |
可用于处理工作的工作线程数,包括已在处理工作的工作线程。 |
RetiredWorkerThreadCount |
win:UInt32 |
不能用于处理工作但被保留以防之后需要更多线程的工作线程数。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 的实例的唯一 ID。 |
ThreadPoolWorkerThreadAdjustmentSample 事件
下表显示了关键字和级别。
引发事件的关键字 |
Level |
ThreadingKeyword (0x10000) |
信息性 (4) |
下表显示了事件信息。
事件 |
事件 ID |
说明 |
ThreadPoolWorkerThreadAdjustmentSample |
54 |
指一个示例的信息收集,即具有一定并发级别的即时吞吐量测量。 |
下表显示了事件数据。
字段名 |
数据类型 |
说明 |
Throughput |
win:Double |
每个时间单位的完成数。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 的实例的唯一 ID。 |
ThreadPoolWorkerThreadAdjustmentAdjustment 事件
下表显示了关键字和级别。
引发事件的关键字 |
Level |
ThreadingKeyword (0x10000) |
信息性 (4) |
下表显示了事件信息。
事件 |
事件 ID |
说明 |
ThreadPoolWorkerThreadAdjustmentAdjustment |
55 |
当线程注入(爬山)算法确定并发级别发生更改时,在控件中记录更改。 |
下表显示了事件数据。
字段名 |
数据类型 |
说明 |
AverageThroughput |
win:Double |
测量示例的平均吞吐量。 |
NewWorkerThreadCount |
win:UInt32 |
新的活动工作线程数。 |
Reason |
win:UInt32 |
调整的原因。
0x0 - 预热。
0x1 - 正在初始化。
0x2 - 随机移动。
0x3 - 攀移。
0x4 - 更改点。
0x5 - 正在稳定。
0x6 - 匮乏。
0x7 - 线程已超时。
0x8 - 协作阻止。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 的实例的唯一 ID。 |
ThreadPoolWorkerThreadAdjustmentStats 事件
下表显示了关键字和级别。
引发事件的关键字 |
Level |
ThreadingKeyword (0x10000) |
详细级别 (5) |
下表显示了事件信息。
事件 |
事件 ID |
说明 |
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。 |
ThreadPoolEnqueue 事件
下表显示了关键字和级别。
引发事件的关键字 |
Level |
ThreadingKeyword (0x10000) |
详细级别 (5) |
下表显示了事件信息。
事件 |
事件 ID |
说明 |
ThreadPoolEnqueue |
61 |
工作项已排入线程池队列。 |
下表显示了事件数据
字段名 |
数据类型 |
说明 |
WorkID |
win:Pointer |
指向工作请求的指针。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 实例的唯一 ID。 |
ThreadPoolDequeue 事件
下表显示了关键字和级别。
引发事件的关键字 |
Level |
ThreadingKeyword (0x10000) |
详细级别 (5) |
下表显示了事件信息。
事件 |
事件 ID |
说明 |
ThreadPoolDequeue |
62 |
工作项已从线程池队列中取消排队。 |
下表显示了事件数据
字段名 |
数据类型 |
说明 |
WorkID |
win:Pointer |
指向工作请求的指针。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 实例的唯一 ID。 |
ThreadPoolIOEnqueue 事件
下表显示了关键字和级别。
引发事件的关键字 |
Level |
ThreadingKeyword (0x10000) |
详细级别 (5) |
下表显示了事件信息。
事件 |
事件 ID |
说明 |
ThreadPoolIOEnqueue |
63 |
异步 IO 完成后,线程对 IO 完成通知进行排队。 |
下表显示了事件数据
字段名 |
数据类型 |
说明 |
NativeOverlapped |
win:Pointer |
保留以供内部使用。 |
Overlapped |
win:Pointer |
保留以供内部使用。 |
MultiDequeues |
win:Boolean |
保留以供内部使用。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 实例的唯一 ID。 |
ThreadPoolIODequeue 事件
下表显示了关键字和级别。
引发事件的关键字 |
Level |
ThreadingKeyword (0x10000) |
详细级别 (5) |
下表显示了事件信息。
事件 |
事件 ID |
说明 |
ThreadPoolIODequeue |
64 |
线程对 IO 完成通知取消排队。 |
下表显示了事件数据
字段名 |
数据类型 |
说明 |
NativeOverlapped |
win:Pointer |
保留以供内部使用。 |
Overlapped |
win:Pointer |
保留以供内部使用。 |
MultiDequeues |
win:Boolean |
保留以供内部使用。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 实例的唯一 ID。 |
ThreadPoolIOPack 事件
下表显示了关键字和级别。
引发事件的关键字 |
Level |
ThreadingKeyword (0x10000) |
详细级别 (5) |
下表显示了事件信息。
事件 |
事件 ID |
说明 |
ThreadPoolIOPack |
65 |
调用了 ThreadPool 重叠的 IO 包。 |
下表显示了事件数据
字段名 |
数据类型 |
说明 |
NativeOverlapped |
win:Pointer |
保留以供内部使用。 |
Overlapped |
win:Pointer |
保留以供内部使用。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 实例的唯一 ID。 |
ThreadCreating 事件
下表显示了关键字和级别。
引发事件的关键字 |
Level |
ThreadingKeyword (0x10000) |
信息性 (4) |
下表显示了事件信息。
事件 |
事件 ID |
说明 |
ThreadCreating |
70 |
已创建线程。 |
下表显示了事件数据。
字段名 |
数据类型 |
说明 |
ID |
win:Pointer |
线程 ID |
ClrInstanceID |
win:UInt16 |
CoreCLR 实例的唯一 ID。 |
ThreadRunning 事件
下表显示了关键字和级别。
引发事件的关键字 |
Level |
ThreadingKeyword (0x10000) |
信息性 (4) |
下表显示了事件信息。
事件 |
事件 ID |
说明 |
ThreadRunning |
71 |
线程已开始运行。 |
下表显示了事件数据。
字段名 |
数据类型 |
说明 |
ID |
win:Pointer |
线程 ID |
ClrInstanceID |
win:UInt16 |
CoreCLR 实例的唯一 ID。 |