本文中所述的事件收集有关线程池中的辅助角色和 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。 |