The events described in this article collect information about worker and I/O threads in the threadpool. For more information about how to use these events for diagnostic purposes, see logging and tracing .NET applications.
IOThreadCreate_V1 event
The following table shows the keyword and level.
Keyword for raising the event |
Level |
ThreadingKeyword (0x10000) |
Informational (4) |
The following table shows the event information.
Event |
Event ID |
Raised when |
IOThreadCreate_V1 |
44 |
An I/O thread is created in the thread pool. |
The following table shows the event data.
Field name |
Data type |
Description |
Count |
win:UInt64 |
Number of I/O threads, including the newly created thread. |
NumRetired |
win:UInt64 |
Number of retired worker threads. |
ClrInstanceID |
win:UInt16 |
Unique ID for the instance of CLR or CoreCLR. |
IOThreadTerminate_V1 event
The following table shows the keyword and level
Keyword for raising the event |
Level |
ThreadingKeyword (0x10000) |
Informational (4) |
The following table shows the event information.
Event |
Event ID |
Raised when |
IOThreadTerminate |
45 |
An I/O thread is terminated in the thread pool. |
The following table shows the event data.
Field name |
Data type |
Description |
Count |
win:UInt64 |
Number of I/O threads remaining in the thread pool. |
NumRetired |
win:UInt64 |
Number of retired I/O threads. |
ClrInstanceID |
win:UInt16 |
Unique ID for the instance of CLR or CoreCLR. |
IOThreadRetire_V1 event
The following table shows the keyword and level.
Keyword for raising the event |
Level |
ThreadingKeyword (0x10000) |
Informational (4) |
The following table shows the event information.
Event |
Event ID |
Raised when |
IOThreadRetire_V1 |
46 |
An I/O thread becomes a retirement candidate. |
The following table shows the event data.
Field name |
Data type |
Description |
Count |
win:UInt64 |
Number of I/O threads remaining in the thread pool. |
NumRetired |
win:UInt64 |
Number of retired I/O threads. |
ClrInstanceID |
win:UInt16 |
Unique ID for the instance of CLR or CoreCLR. |
IOThreadUnretire_V1 event
The following table shows the keyword and level.
Keyword for raising the event |
Level |
ThreadingKeyword (0x10000) |
Informational (4) |
The following table shows the event information.
Event |
Event ID |
Raised when |
IOThreadUnretire_V1 |
47 |
An I/O thread is unretired because of I/O that arrives within a waiting period after the thread becomes a retirement candidate. |
The following table shows the event data.
Field name |
Data type |
Description |
Count |
win:UInt64 |
Number of I/O threads in the thread pool, including this one. |
NumRetired |
win:UInt64 |
Number of retired I/O threads. |
ClrInstanceID |
Win:UInt16 |
Unique ID for the instance of CLR or CoreCLR. |
ThreadPoolWorkerThreadStart event
Keyword for raising the event |
Level |
ThreadingKeyword (0x10000) |
Informational (4) |
Event |
Event ID |
Description |
ThreadPoolWorkerThreadStart |
50 |
A worker thread is created. |
Field name |
Data type |
Description |
ActiveWorkerThreadCount |
win:UInt32 |
Number of worker threads available to process work, including those that are already processing work. |
RetiredWorkerThreadCount |
win:UInt32 |
Number of worker threads that are not available to process work, but that are being held in reserve in case more threads are needed later. |
ClrInstanceID |
win:UInt16 |
Unique ID for the instance of CLR or CoreCLR. |
ThreadPoolWorkerThreadStop event
Keyword for raising the event |
Level |
ThreadingKeyword (0x10000) |
Informational (4) |
Event |
Event ID |
Description |
ThreadPoolWorkerThreadStop |
51 |
A worker thread is stopped. |
Field name |
Data type |
Description |
ActiveWorkerThreadCount |
win:UInt32 |
Number of worker threads available to process work, including those that are already processing work. |
RetiredWorkerThreadCount |
win:UInt32 |
Number of worker threads that are not available to process work, but that are being held in reserve in case more threads are needed later. |
ClrInstanceID |
win:UInt16 |
Unique ID for the instance of CLR or CoreCLR. |
ThreadPoolWorkerThreadWait event
Keyword for raising the event |
Level |
ThreadingKeyword (0x10000) |
Informational (4) |
Event |
Event ID |
Description |
ThreadPoolWorkerThreadWait |
57 |
A worker thread starts waiting for work. |
Field name |
Data type |
Description |
ActiveWorkerThreadCount |
win:UInt32 |
Number of worker threads available to process work, including those that are already processing work. |
RetiredWorkerThreadCount |
win:UInt32 |
Number of worker threads that are not available to process work, but that are being held in reserve in case more threads are needed later. |
ClrInstanceID |
win:UInt16 |
Unique ID for the instance of CLR or CoreCLR. |
ThreadPoolWorkerThreadRetirementStart event
Keyword for raising the event |
Level |
ThreadingKeyword (0x10000) |
Informational (4) |
Event |
Event ID |
Description |
ThreadPoolWorkerThreadRetirementStart |
52 |
A worker thread retires. |
Field name |
Data type |
Description |
ActiveWorkerThreadCount |
win:UInt32 |
Number of worker threads available to process work, including those that are already processing work. |
RetiredWorkerThreadCount |
win:UInt32 |
Number of worker threads that are not available to process work, but that are being held in reserve in case more threads are needed later. |
ClrInstanceID |
win:UInt16 |
Unique ID for the instance of CLR or CoreCLR. |
ThreadPoolWorkerThreadRetirementStop event
Keyword for raising the event |
Level |
ThreadingKeyword (0x10000) |
Informational (4) |
Event |
Event ID |
Description |
ThreadPoolWorkerThreadRetirementStop |
53 |
A retired worker thread becomes active again. |
Field name |
Data type |
Description |
ActiveWorkerThreadCount |
win:UInt32 |
Number of worker threads available to process work, including those that are already processing work. |
RetiredWorkerThreadCount |
win:UInt32 |
Number of worker threads that are not available to process work, but that are being held in reserve in case more threads are needed later. |
ClrInstanceID |
win:UInt16 |
Unique ID for the instance of CLR or CoreCLR. |
ThreadPoolWorkerThreadAdjustmentSample event
The following table shows the keyword and level.
Keyword for raising the event |
Level |
ThreadingKeyword (0x10000) |
Informational (4) |
The following table shows the event information.
Event |
Event ID |
Description |
ThreadPoolWorkerThreadAdjustmentSample |
54 |
Refers to the collection of information for one sample; that is, a measurement of throughput with a certain concurrency level, in an instant of time. |
The following table shows the event data.
Field name |
Data type |
Description |
Throughput |
win:Double |
Number of completions per unit of time. |
ClrInstanceID |
win:UInt16 |
Unique ID for the instance of CLR or CoreCLR. |
ThreadPoolWorkerThreadAdjustmentAdjustment event
The following table shows the keyword and level.
Keyword for raising the event |
Level |
ThreadingKeyword (0x10000) |
Informational (4) |
The following table shows the event information.
Event |
Event ID |
Description |
ThreadPoolWorkerThreadAdjustmentAdjustment |
55 |
Records a change in control, when the thread injection (hill-climbing) algorithm determines that a change in concurrency level is in place. |
The following table shows the event data.
Field name |
Data type |
Description |
AverageThroughput |
win:Double |
Average throughput of a sample of measurements. |
NewWorkerThreadCount |
win:UInt32 |
New number of active worker threads. |
Reason |
win:UInt32 |
Reason for the adjustment.
0x0 - Warmup.
0x1 - Initializing.
0x2 - Random move.
0x3 - Climbing move.
0x4 - Change point.
0x5 - Stabilizing.
0x6 - Starvation.
0x7 - Thread timed out.
0x8 - Cooperative blocking. |
ClrInstanceID |
win:UInt16 |
Unique ID for the instance of CLR or CoreCLR. |
ThreadPoolWorkerThreadAdjustmentStats event
The following table shows the keyword and level.
Keyword for raising the event |
Level |
ThreadingKeyword (0x10000) |
Verbose (5) |
The following table shows the event information.
Event |
Event ID |
Description |
ThreadPoolWorkerThreadAdjustmentStats |
56 |
Gathers data on the thread pool. |
The following table shows the event data
Field name |
Data type |
Description |
Duration |
win:Double |
Amount of time, in seconds, during which these statistics were collected. |
Throughput |
win:Double |
Average number of completions per second during this interval. |
ThreadWave |
win:Double |
Reserved for internal use. |
ThroughputWave |
win:Double |
Reserved for internal use. |
ThroughputErrorEstimate |
win:Double |
Reserved for internal use. |
AverageThroughputErrorEstimate |
win:Double |
Reserved for internal use. |
ThroughputRatio |
win:Double |
The relative improvement in throughput caused by variations in active worker thread count during this interval. |
Confidence |
win:Double |
A measure of the validity of the ThroughputRatio field. |
NewcontrolSetting |
win:Double |
The number of active worker threads that serve as the baseline for future variations in active thread count. |
NewThreadWaveMagnitude |
win:UInt16 |
The magnitude of future variations in active thread count. |
ClrInstanceID |
win:UInt16 |
Unique ID for the instance of CLR or CoreCLR. |
ThreadPoolEnqueue event
The following table shows the keyword and level.
Keyword for raising the event |
Level |
ThreadingKeyword (0x10000) |
Verbose (5) |
The following table shows the event information.
Event |
Event ID |
Description |
ThreadPoolEnqueue |
61 |
A work item was enqueued in the thread pool queue. |
The following table shows the event data
Field name |
Data type |
Description |
WorkID |
win:Pointer |
Pointer to the work request. |
ClrInstanceID |
win:UInt16 |
Unique ID for the instance of CoreCLR. |
ThreadPoolDequeue event
The following table shows the keyword and level.
Keyword for raising the event |
Level |
ThreadingKeyword (0x10000) |
Verbose (5) |
The following table shows the event information.
Event |
Event ID |
Description |
ThreadPoolDequeue |
62 |
A work item was dequeued from the thread pool queue. |
The following table shows the event data
Field name |
Data type |
Description |
WorkID |
win:Pointer |
Pointer to the work request. |
ClrInstanceID |
win:UInt16 |
Unique ID for the instance of CoreCLR. |
ThreadPoolIOEnqueue event
The following table shows the keyword and level.
Keyword for raising the event |
Level |
ThreadingKeyword (0x10000) |
Verbose (5) |
The following table shows the event information.
Event |
Event ID |
Description |
ThreadPoolIOEnqueue |
63 |
A thread enqueues an IO completion notification after an async IO completion occurs. |
The following table shows the event data
Field name |
Data type |
Description |
NativeOverlapped |
win:Pointer |
Reserved for internal use. |
Overlapped |
win:Pointer |
Reserved for internal use. |
MultiDequeues |
win:Boolean |
Reserved for internal use. |
ClrInstanceID |
win:UInt16 |
Unique ID for the instance of CoreCLR. |
ThreadPoolIODequeue event
The following table shows the keyword and level.
Keyword for raising the event |
Level |
ThreadingKeyword (0x10000) |
Verbose (5) |
The following table shows the event information.
Event |
Event ID |
Description |
ThreadPoolIODequeue |
64 |
A thread dequeues the IO completion notification. |
The following table shows the event data
Field name |
Data type |
Description |
NativeOverlapped |
win:Pointer |
Reserved for internal use. |
Overlapped |
win:Pointer |
Reserved for internal use. |
MultiDequeues |
win:Boolean |
Reserved for internal use. |
ClrInstanceID |
win:UInt16 |
Unique ID for the instance of CoreCLR. |
ThreadPoolIOPack event
The following table shows the keyword and level.
Keyword for raising the event |
Level |
ThreadingKeyword (0x10000) |
Verbose (5) |
The following table shows the event information.
Event |
Event ID |
Description |
ThreadPoolIOPack |
65 |
ThreadPool overlapped IO pack is called. |
The following table shows the event data
Field name |
Data type |
Description |
NativeOverlapped |
win:Pointer |
Reserved for internal use. |
Overlapped |
win:Pointer |
Reserved for internal use. |
ClrInstanceID |
win:UInt16 |
Unique ID for the instance of CoreCLR. |
ThreadCreating event
The following table shows the keywords and level.
Keyword for raising the event |
Level |
ThreadingKeyword (0x10000) |
Informational (4) |
The following table shows the event information.
Event |
Event ID |
Description |
ThreadCreating |
70 |
Thread has been created. |
The following table shows the event data.
Field name |
Data type |
Description |
ID |
win:Pointer |
Thread ID |
ClrInstanceID |
win:UInt16 |
Unique ID for the instance of CoreCLR. |
ThreadRunning event
The following table shows the keywords and level.
Keyword for raising the event |
Level |
ThreadingKeyword (0x10000) |
Informational (4) |
The following table shows the event information.
Event |
Event ID |
Description |
ThreadRunning |
71 |
Thread has started running. |
The following table shows the event data.
Field name |
Data type |
Description |
ID |
win:Pointer |
Thread ID |
ClrInstanceID |
win:UInt16 |
Unique ID for the instance of CoreCLR. |