Processor

% Processor Time – Processor Time is the percentage of elapsed time that the processor spends to execute a non-Idle thread. It is calculated by measuring the percentage of time that the processor spends executing the idle thread and then subtracting that value from 100%. (Each processor has an idle thread that consumes cycles when no other threads are ready to run). This counter is the primary indicator of processor activity, and displays the average percentage of busy time observed during the sample interval. It should be noted that the accounting calculation of whether the processor is idle is performed at an internal sampling interval of the system clock (10ms). On todays fast processors, % Processor Time can therefore underestimate the processor utilization as the processor may be spending a lot of time servicing threads between the system clock sampling interval. Workload based timer applications are one example of applications which are more likely to be measured inaccurately as timers are signaled just after the sample is taken.

Memory

Available MBytes – Available MBytes is the amount of physical memory, in Megabytes, immediately available for allocation to a process or for system use. It is equal to the sum of memory assigned to the standby (cached), free and zero page lists.

Process

% Processor Time – % 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.

Working Set – Private displays the size of the working set, in bytes, that is use for this process only and not shared nor sharable by other processes.

ASP.NET Applications

% Managed Processor Time (estimated) – Estimated percentage of elapsed time that the processor spends executing managed application code. This counter only tracks processor time of managed threads in the application. It does not include additional processor time spent executing on non-managed threads. Note that this counter is only updated with new data every five seconds.

Errors Total/Sec – Rate of errors occurred.

Errors Unhandled During Execution/sec – Rate of unhandled errors.

Managed Memory Used (estimated) – Estimated managed heap memory consumption (in KB) by the application. The accuracy of this counter varies depending on the duration of elapsed time since the last full managed memory heap collection. Note that this counter is only updated with new data every five seconds.

Requests in Application Queue – The number of requests in the application request queue.
Requests/Sec – The number of requests executed per second.

W3SVC_W3WP – You can choose Specific application pool

Active Request – Current number of requests being processed by the worker process.
requests/sec – HTTP requests/sec being processed by the worker process.

Web Service – You can choose Specific application pool

Bytes Received/Sec – Bytes Received/sec is the rate that data bytes are received by the Web service.
Bytes Sent/Sec – Bytes Sent/sec is the rate data bytes are being sent by the Web service.
Current Connections – Current Connections is the current number of connections established with the Web service.

.NET CLR Exceptions

# of Exceps Thrown – This counter displays the total number of exceptions thrown since the start of the application. These include both .NET exceptions and unmanaged exceptions that get converted into .NET exceptions e.g. null pointer reference exception in unmanaged code would get re-thrown in managed code as a .NET System.NullReferenceException; this counter includes both handled and unhandled exceptions. Exceptions that are re-thrown would get counted again. Exceptions should only occur in rare situations and not in the normal control flow of the program.

Garbage collection counters

% Time in GC – % Time in GC is the percentage of elapsed time that was spent in performing a garbage collection (GC) since the last GC cycle. This counter is usually an indicator of the work done by the Garbage Collector on behalf of the application to collect and compact memory. This counter is updated only at the end of every GC and the counter value reflects the last observed value; its not an average.

# Gen 0 Collections – This counter displays the number of times the generation 0 objects (youngest; most recently allocated) are garbage collected (Gen 0 GC) since the start of the application. Gen 0 GC occurs when the available memory in generation 0 is not sufficient to satisfy an allocation request. This counter is incremented at the end of a Gen 0 GC. Higher generation GCs include all lower generation GCs. This counter is explicitly incremented when a higher generation (Gen 1 or Gen 2) GC occurs. Global counter value is not accurate and should be ignored. This counter displays the last observed value.

# Gen 1 Collections – This counter displays the number of times the generation 1 objects are garbage collected since the start of the application. The counter is incremented at the end of a Gen 1 GC. Higher generation GCs include all lower generation GCs. This counter is explicitly incremented when a higher generation (Gen 2) GC occurs. Global counter value is not accurate and should be ignored. This counter displays the last observed value.

# Gen 2 Collections – This counter displays the number of times the generation 2 objects (older) are garbage collected since the start of the application. The counter is incremented at the end of a Gen 2 GC (also called full GC). Global counter value is not accurate and should be ignored. This counter displays the last observed value.