BACK TO INDEX

Win32_PerfFormattedData_PerfProc_Thread
The Thread performance object consists of counters that measure aspects of thread behavior. A thread is the basic object that executes instructions on a processor. All running processes have at least one thread.
NameSpace Path
\ROOT\CIMV2
PROPERTYSMS_REPORTCIMTYPEDESCRIPTION
CaptionStringA short textual description (one-line string) for the statistic or metric.
ContextSwitchesPersecUInt32Context Switches/sec is the rate of switches from one thread to another. Thread switches can occur either inside of a single process or across processes. A thread switch can be caused either by one thread asking another for information, or by a thread being preempted by another, higher priority thread becoming ready to run. Unlike some early operating systems, Windows NT uses process boundaries for subsystem protection in addition to the traditional protection of user and privileged modes. These subsystem processes provide additional protection. Therefore, some work done by Windows NT on behalf of an application appear in other subsystem processes in addition to the privileged time in the application. Switching to the subsystem process causes one Context Switch in the application thread. Switching back causes another Context Switch in the subsystem thread.
DescriptionStringA textual description of the statistic or metric.
ElapsedTimeUInt64The total elapsed time (in seconds) this thread has been running.
Frequency_ObjectUInt64NA
Frequency_PerfTimeUInt64NA
Frequency_Sys100NSUInt64NA
IDProcessUInt32ID Process is the unique identifier of this process. ID Process numbers are reused, so they only identify a process for the lifetime of that process.
IDThreadUInt32ID Thread is the unique identifier of this thread. ID Thread numbers are reused, so they only identify a thread for the lifetime of that thread.
NameStringThe Name property defines the label by which the statistic or metric is known. When subclassed, the property can be overridden to be a Key property.
PercentPrivilegedTimeUInt64% Privileged Time is the percentage of elapsed time that the process threads spent executing code in privileged mode. When a Windows system service in called, the service will often run in privileged mode to gain access to system-private data. Such data is protected from access by threads executing in user mode. Calls to the system can be explicit or implicit, such as page faults or interrupts. Unlike some early operating systems, Windows uses process boundaries for subsystem protection in addition to the traditional protection of user and privileged modes. Some work done by Windows on behalf of the application might appear in other subsystem processes in addition to the privileged time in the process.
PercentProcessorTimeUInt64% Processor Time is the percentage of elapsed time that all of process threads used the processor to execution instructions. An instruction is the basic unit of execution in a computer, a thread is the object that executes instructions, and a process is the object created when a program is run. Code executed to handle some hardware interrupts and trap conditions are included in this count.
PercentUserTimeUInt64% User Time is the percentage of elapsed time that this thread has spent executing code in user mode. Applications, environment subsystems, and integral subsystems execute in user mode. Code executing in user mode cannot damage the integrity of the Windows NT Executive, Kernel, and device drivers. Unlike some early operating systems, Windows NT uses process boundaries for subsystem protection in addition to the traditional protection of user and privileged modes. These subsystem processes provide additional protection. Therefore, some work done by Windows NT on behalf of your application might appear in other subsystem processes in addition to the privileged time in your process.
PriorityBaseUInt32The current base priority of this thread. The system can raise the thread's dynamic priority above the base priority if the thread is handling user input, or lower it towards the base priority if the thread becomes compute bound.
PriorityCurrentUInt32The current dynamic priority of this thread. The system can raise the thread's dynamic priority above the base priority if the thread is handling user input, or lower it towards the base priority if the thread becomes compute bound.
StartAddressUInt32Starting virtual address for this thread.
ThreadStateUInt32Thread State is the current state of the thread. It is 0 for Initialized, 1 for Ready, 2 for Running, 3 for Standby, 4 for Terminated, 5 for Wait, 6 for Transition, 7 for Unknown. A Running thread is using a processor; a Standby thread is about to use one. A Ready thread wants to use a processor, but is waiting for a processor because none are free. A thread in Transition is waiting for a resource in order to execute, such as waiting for its execution stack to be paged in from disk. A Waiting thread has no use for the processor because it is waiting for a peripheral operation to complete or a resource to become free.
ThreadWaitReasonUInt32Thread Wait Reason is only applicable when the thread is in the Wait state (see Thread State). It is 0 or 7 when the thread is waiting for the Executive, 1 or 8 for a Free Page, 2 or 9 for a Page In, 3 or 10 for a Pool Allocation, 4 or 11 for an Execution Delay, 5 or 12 for a Suspended condition, 6 or 13 for a User Request, 14 for an Event Pair High, 15 for an Event Pair Low, 16 for an LPC Receive, 17 for an LPC Reply, 18 for Virtual Memory, 19 for a Page Out; 20 and higher are not assigned at the time of this writing. Event Pairs are used to communicate with protected subsystems (see Context Switches).
Timestamp_ObjectUInt64NA
Timestamp_PerfTimeUInt64NA
Timestamp_Sys100NSUInt64NA
SAMPLE DATA INSTANCE
   [Description("The Thread performance object consists of counters that measure aspects of thread behavior. A thread is the basic object that executes instructions on a processor. All running processes have at least one thread."): ToInstance Amended, DisplayName("Thread"): ToInstance Amended, genericperfctr: ToInstance Amended, locale(1033): ToInstance Amended]
   instance of Win32_PerfFormattedData_PerfProc_Thread
   {
    [Description("Context Switches/sec is the rate of switches from one thread to another. Thread switches can occur either inside of a single process or across processes. A thread switch can be caused either by one thread asking another for information, or by a thread being preempted by another, higher priority thread becoming ready to run. Unlike some early operating systems, Windows NT uses process boundaries for subsystem protection in addition to the traditional protection of user and privileged modes. These subsystem processes provide additional protection. Therefore, some work done by Windows NT on behalf of an application appear in other subsystem processes in addition to the privileged time in the application. Switching to the subsystem process causes one Context Switch in the application thread. Switching back causes another Context Switch in the subsystem thread."): ToInstance Amended, DisplayName("Context Switches/sec"): ToInstance Amended] ContextSwitchesPersec = 331;
    [Description("The total elapsed time (in seconds) this thread has been running."): ToInstance Amended, DisplayName("Elapsed Time"): ToInstance Amended] ElapsedTime = "12945996578";
    [Description("ID Process is the unique identifier of this process. ID Process numbers are reused, so they only identify a process for the lifetime of that process."): ToInstance Amended, DisplayName("ID Process"): ToInstance Amended] IDProcess = 0;
    [Description("ID Thread is the unique identifier of this thread. ID Thread numbers are reused, so they only identify a thread for the lifetime of that thread."): ToInstance Amended, DisplayName("ID Thread"): ToInstance Amended] IDThread = 0;
    Name = "Idle/0";
    [Description("% Privileged Time is the percentage of elapsed time that the process threads spent executing code in privileged mode. When a Windows system service in called, the service will often run in privileged mode to gain access to system-private data. Such data is protected from access by threads executing in user mode. Calls to the system can be explicit or implicit, such as page faults or interrupts. Unlike some early operating systems, Windows uses process boundaries for subsystem protection in addition to the traditional protection of user and privileged modes. Some work done by Windows on behalf of the application might appear in other subsystem processes in addition to the privileged time in the process."): ToInstance Amended, DisplayName("% Privileged Time"): ToInstance Amended] PercentPrivilegedTime = "0";
    [Description("% Processor Time is the percentage of elapsed time that all of process threads used the processor to execution instructions. An instruction is the basic unit of execution in a computer, a thread is the object that executes instructions, and a process is the object created when a program is run. Code executed to handle some hardware interrupts and trap conditions are included in this count."): ToInstance Amended, DisplayName("% Processor Time"): ToInstance Amended] PercentProcessorTime = "0";
    [Description("% User Time is the percentage of elapsed time that this thread has spent executing code in user mode. Applications, environment subsystems, and integral subsystems execute in user mode. Code executing in user mode cannot damage the integrity of the Windows NT Executive, Kernel, and device drivers. Unlike some early operating systems, Windows NT uses process boundaries for subsystem protection in addition to the traditional protection of user and privileged modes. These subsystem processes provide additional protection. Therefore, some work done by Windows NT on behalf of your application might appear in other subsystem processes in addition to the privileged time in your process."): ToInstance Amended, DisplayName("% User Time"): ToInstance Amended] PercentUserTime = "0";
    [Description("The current base priority of this thread. The system can raise the thread's dynamic priority above the base priority if the thread is handling user input, or lower it towards the base priority if the thread becomes compute bound."): ToInstance Amended, DisplayName("Priority Base"): ToInstance Amended] PriorityBase = 0;
    [Description("The current dynamic priority of this thread. The system can raise the thread's dynamic priority above the base priority if the thread is handling user input, or lower it towards the base priority if the thread becomes compute bound."): ToInstance Amended, DisplayName("Priority Current"): ToInstance Amended] PriorityCurrent = 0;
    [Description("Starting virtual address for this thread."): ToInstance Amended, DisplayName("Start Address"): ToInstance Amended] StartAddress = 0;
    [Description("Thread State is the current state of the thread. It is 0 for Initialized, 1 for Ready, 2 for Running, 3 for Standby, 4 for Terminated, 5 for Wait, 6 for Transition, 7 for Unknown. A Running thread is using a processor; a Standby thread is about to use one. A Ready thread wants to use a processor, but is waiting for a processor because none are free. A thread in Transition is waiting for a resource in order to execute, such as waiting for its execution stack to be paged in from disk. A Waiting thread has no use for the processor because it is waiting for a peripheral operation to complete or a resource to become free."): ToInstance Amended, DisplayName("Thread State"): ToInstance Amended] ThreadState = 2;
    [Description("Thread Wait Reason is only applicable when the thread is in the Wait state (see Thread State). It is 0 or 7 when the thread is waiting for the Executive, 1 or 8 for a Free Page, 2 or 9 for a Page In, 3 or 10 for a Pool Allocation, 4 or 11 for an Execution Delay, 5 or 12 for a Suspended condition, 6 or 13 for a User Request, 14 for an Event Pair High, 15 for an Event Pair Low, 16 for an LPC Receive, 17 for an LPC Reply, 18 for Virtual Memory, 19 for a Page Out; 20 and higher are not assigned at the time of this writing. Event Pairs are used to communicate with protected subsystems (see Context Switches)."): ToInstance Amended, DisplayName("Thread Wait Reason"): ToInstance Amended] ThreadWaitReason = 0;
   };