.NET 运行时线程池事件
本文中所述的事件收集有关线程池中的辅助角色和 I/O 线程的信息。 有关如何将这些事件用于诊断目的的详细信息,请参阅 日志记录和跟踪 .NET 应用程序。
IOThreadCreate_V1 事件
下表显示了关键字和级别。
引发事件的关键字 |
水平 |
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事件
下表显示了关键字和级别
引发事件的关键字 |
水平 |
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事件
下表显示了关键字和级别。
引发事件的关键字 |
水平 |
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事件
下表显示了关键字和级别。
引发事件的关键字 |
水平 |
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 事件
引发事件的关键字 |
水平 |
ThreadingKeyword (0x10000) |
信息性 (4) |
事件 |
事件 ID |
描述 |
ThreadPoolWorkerThreadStart |
50 |
创建工作线程。 |
字段名称 |
数据类型 |
描述 |
ActiveWorkerThreadCount |
win:UInt32 |
可用于处理工作的工作线程数,包括已处理工作的线程数。 |
RetiredWorkerThreadCount |
win:UInt32 |
无法处理工作但保留的工作线程数,以防以后需要更多线程。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 实例的唯一 ID。 |
ThreadPoolWorkerThreadStop 事件
引发事件的关键字 |
水平 |
ThreadingKeyword (0x10000) |
信息性 (4) |
事件 |
事件 ID |
描述 |
ThreadPoolWorkerThreadStop |
51 |
辅助角色线程已停止。 |
字段名称 |
数据类型 |
描述 |
ActiveWorkerThreadCount |
win:UInt32 |
可用于处理工作的工作线程数,包括已处理工作的线程数。 |
RetiredWorkerThreadCount |
win:UInt32 |
无法处理工作但保留的工作线程数,以防以后需要更多线程。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 实例的唯一 ID。 |
ThreadPoolWorkerThreadWait 事件
引发事件的关键字 |
水平 |
ThreadingKeyword (0x10000) |
信息性 (4) |
事件 |
事件 ID |
描述 |
ThreadPoolWorkerThreadWait |
57 |
工作线程开始等待工作。 |
字段名称 |
数据类型 |
描述 |
ActiveWorkerThreadCount |
win:UInt32 |
可用于处理工作的工作线程数,包括已处理工作的线程数。 |
RetiredWorkerThreadCount |
win:UInt32 |
无法处理工作但保留的工作线程数,以防以后需要更多线程。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 实例的唯一 ID。 |
ThreadPoolWorkerThreadRetirementStart 事件
引发事件的关键字 |
水平 |
ThreadingKeyword (0x10000) |
信息性 (4) |
事件 |
事件 ID |
描述 |
ThreadPoolWorkerThreadRetirementStart |
52 |
工作线程停用。 |
字段名称 |
数据类型 |
描述 |
ActiveWorkerThreadCount |
win:UInt32 |
可用于处理工作的工作线程数,包括已处理工作的线程数。 |
RetiredWorkerThreadCount |
win:UInt32 |
无法处理工作但保留的工作线程数,以防以后需要更多线程。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 实例的唯一 ID。 |
ThreadPoolWorkerThreadRetirementStop 事件
引发事件的关键字 |
水平 |
ThreadingKeyword (0x10000) |
信息性 (4) |
事件 |
事件 ID |
描述 |
ThreadPoolWorkerThreadRetirementStop |
53 |
停用的工作线程再次处于活动状态。 |
字段名称 |
数据类型 |
描述 |
ActiveWorkerThreadCount |
win:UInt32 |
可用于处理工作的工作线程数,包括已处理工作的线程数。 |
RetiredWorkerThreadCount |
win:UInt32 |
无法处理工作但保留的工作线程数,以防以后需要更多线程。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 实例的唯一 ID。 |
ThreadPoolWorkerThreadAdjustmentSample 事件
下表显示了关键字和级别。
引发事件的关键字 |
水平 |
ThreadingKeyword (0x10000) |
信息性 (4) |
下表显示了事件信息。
事件 |
事件 ID |
描述 |
ThreadPoolWorkerThreadAdjustmentSample |
54 |
指一个示例的信息集合;也就是说,在一瞬间测量具有特定并发级别的吞吐量。 |
下表显示了事件数据。
字段名称 |
数据类型 |
描述 |
Throughput |
win:Double |
每个单位时间的完成次数。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 实例的唯一 ID。 |
ThreadPoolWorkerThreadAdjustmentAdjustment 事件
下表显示了关键字和级别。
引发事件的关键字 |
水平 |
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 事件
下表显示了关键字和级别。
引发事件的关键字 |
水平 |
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 事件
下表显示了关键字和级别。
引发事件的关键字 |
水平 |
ThreadingKeyword (0x10000) |
详细 (5) |
下表显示了事件信息。
事件 |
事件 ID |
描述 |
ThreadPoolEnqueue |
61 |
线程池队列中已排队工作项。 |
下表显示了事件数据
字段名称 |
数据类型 |
描述 |
WorkID |
win:Pointer |
指向工作请求的指针。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 实例的唯一 ID。 |
ThreadPoolDequeue 事件
下表显示了关键字和级别。
引发事件的关键字 |
水平 |
ThreadingKeyword (0x10000) |
详细 (5) |
下表显示了事件信息。
事件 |
事件 ID |
描述 |
ThreadPoolDequeue |
62 |
工作项已从线程池队列中取消排队。 |
下表显示了事件数据
字段名称 |
数据类型 |
描述 |
WorkID |
win:Pointer |
指向工作请求的指针。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 实例的唯一 ID。 |
ThreadPoolIOEnqueue 事件
下表显示了关键字和级别。
引发事件的关键字 |
水平 |
ThreadingKeyword (0x10000) |
详细 (5) |
下表显示了事件信息。
事件 |
事件 ID |
描述 |
ThreadPoolIOEnqueue |
63 |
发生异步 IO 完成后,线程将 IO 完成通知排入队列。 |
下表显示了事件数据
字段名称 |
数据类型 |
描述 |
NativeOverlapped |
win:Pointer |
保留供内部使用。 |
Overlapped |
win:Pointer |
保留供内部使用。 |
MultiDequeues |
win:Boolean |
保留供内部使用。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 实例的唯一 ID。 |
ThreadPoolIODequeue 事件
下表显示了关键字和级别。
引发事件的关键字 |
水平 |
ThreadingKeyword (0x10000) |
详细 (5) |
下表显示了事件信息。
事件 |
事件 ID |
描述 |
ThreadPoolIODequeue |
64 |
线程取消排队 IO 完成通知。 |
下表显示了事件数据
字段名称 |
数据类型 |
描述 |
NativeOverlapped |
win:Pointer |
保留供内部使用。 |
Overlapped |
win:Pointer |
保留供内部使用。 |
MultiDequeues |
win:Boolean |
保留供内部使用。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 实例的唯一 ID。 |
ThreadPoolIOPack 事件
下表显示了关键字和级别。
引发事件的关键字 |
水平 |
ThreadingKeyword (0x10000) |
详细 (5) |
下表显示了事件信息。
事件 |
事件 ID |
描述 |
ThreadPoolIOPack |
65 |
调用 ThreadPool 重叠的 IO 包。 |
下表显示了事件数据
字段名称 |
数据类型 |
描述 |
NativeOverlapped |
win:Pointer |
保留供内部使用。 |
Overlapped |
win:Pointer |
保留供内部使用。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 实例的唯一 ID。 |
ThreadCreating 事件
下表显示了关键字和级别。
引发事件的关键字 |
水平 |
ThreadingKeyword (0x10000) |
信息性 (4) |
下表显示了事件信息。
事件 |
事件 ID |
描述 |
ThreadCreating |
70 |
已创建线程。 |
下表显示了事件数据。
字段名称 |
数据类型 |
描述 |
ID |
win:Pointer |
线程 ID |
ClrInstanceID |
win:UInt16 |
CoreCLR 实例的唯一 ID。 |
ThreadRunning 事件
下表显示了关键字和级别。
引发事件的关键字 |
水平 |
ThreadingKeyword (0x10000) |
信息性 (4) |
下表显示了事件信息。
事件 |
事件 ID |
描述 |
ThreadRunning |
71 |
线程已开始运行。 |
下表显示了事件数据。
字段名称 |
数据类型 |
描述 |
ID |
win:Pointer |
线程 ID |
ClrInstanceID |
win:UInt16 |
CoreCLR 实例的唯一 ID。 |