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.
Collaborate with us on GitHub
The source for this content can be found on GitHub, where you can also create and review issues and pull requests. For more information, see our contributor guide.