DCSIMG
Performance metrics - Sparkling- Leo's Blog

Sparkling- Leo's Blog

Development Life Cycle

Performance metrics

The common counters, in next session the WEB and ASP.NET counters and Database counters too.

In WEB applications is the W3WP and in desktop the application or service

 

Category

Counter

Description

Recommendations

Processor

% Processor Time

Total percentage of processor utilization across all processes

General indication of system utilization

Process

% Processor Time

Like before but specific to a single process. Isolate the problems of the System from the others like Data, etc
Process

Working Set

The amount of memory pages in use by all threads within the process, is listed in bytes. Memory usage of a specific process.
Memory

Available Mbytes

The amount of available physical memory in the system. Can show if an application has a memory leak
Memory

Pages/Sec

The number of hard faults per second. A hard fault is when pages of memory are read from, or written to, disk.

Since disk operations are relatively slow compared to memory operations, hard faults are quite expensive in terms of system performance. The larger this counter, the worse the overall system
performance will be. This counter should ideally be zero or at least very low.

Memory

Page Faults/Sec

Very related to the previous.
Represents the number of hard and soft faults per second when soft fault is where a page of memory was elsewhere in physical memory, and needed to be swapped into the process address space.
Since memory operations are very fast, having a high number of soft faults is generally OK, as most systems can cope with this. Monitoring this counter can help provide the tipping point where hard faults begin to occur and where soft faults become excessive.
.NET CLR Memory

Gen 0 heap size, Gen 1 heap size, Gen 2 heap size

Part of the .NET CLR garbage collector mechanism collection.
The Gen 0 heap size, Gen 1 heap size, and Gen 2 heap size represent the memory heap size of each respective generation.
Heap size counters should show approximately a 1:10:100 pattern
.NET CLR Memory

#Gen 0 Collections, #Gen 1 Collections, #Gen 2 Collections

Part of the .NET CLR garbage collector mechanism collection.
Generation 0 (Gen0): The shortest lived, most often collected and least expensive to collect.
Generation 2:  Contains the longest-living objects, is collected the least often, and is the most expensive in terms of performance to collect.
The #Gen 0, #Gen 1, and #Gen 2 collection counters represent the number of times each generation had a garbage collection performed.
#Gen 0, #Gen 1, and #Gen 2 collections should follow a 100:10:1 pattern
.NET CLR Exceptions

# of Excepts Thrown / sec

The number of exceptions being thrown per second by the
application, and should be very low.

If a web application utilizes a lot of Response.Redirect calls then will generate a thread aborted exception.
If this counter is high and there are a lot of Response.Redirect calls in the web application, then the counter may be representative of this, and it may be worthwhile trying to replace the calls with ones to the overload of Response.Redirect, which also takes a bool as the second parameter, and set that bool to false. This causes the request to not immediately terminate processing of the current page, (which is what causes the thread aborted exception
.NET CLR JIT

% Time in JIT

Shows the percentage of elapsed time the CLR spent in a Just in Time compilation phase. Should be relatively low, ideally below 20%. Above this level can indicate that perhaps some code is being emitted and dynamically compiled by the application. Using the NGEN command-line tool against your application assemblies to create a native, pre-JIT compiled image for the target platform can reduce this.
.NET CLR Security

% Time in RT Checks

Represents the percentage of time spent performing Code Access Security (CAS) checks, should be very low, preferably zero

Exceeding 20%, can hamper system performance and cause excessive CPU utilization. This can often be caused by accessing resources across a network share or Storage Area Network where network credentials and security contexts need to be
evaluated to gain access to the resource.

.NET CLR Locks and Threads

Total # of Contentions

Represent the number of unsuccessful managed-lock acquisitions.
Total amount of unsuccessful lock acquisition attempts by threads managed by the CLR
When using the lock statement, System.Monitor.Enter statement, and the MethodImplOptions.Synchronized attribute.
.NET CLR Locks and Threads

Contention Rate / Sec

Represent the number of unsuccessful managed-lock acquisitions.
Amount/sec of unsuccessful lock acquisition attempts by threads managed by the CLR

Unsuccessful locks can cause
serious performance issues when the rate is high, as the threads are not only
synchronized but ultimately unsuccessful, potentially throwing exceptions and
waiting excessively. This rate should be very low, ideally zero.

Comments

rim said:

Thanks

# February 21, 2010 3:38 PM
Leave a Comment

(required) 

(required) 

(optional)

(required) 


Enter the numbers above: