Wednesday 30 July 2014

.Net Application profiling in a nutshell

Below are the most popular .Net application profiling tools:-


  1. ANTS Memory and Performance Profiler
  2. CLR Profiler
  3. Microsoft Visual Studio 2008 Profiling Tools



The following KPIs (Key performance indicators) can be used to identify potential bottlenecks and problems in application code:-

1. High call count
Functions with very high call counts should be treated with suspicion and investigation. Sometimes the high call count is valid, but sometimes it could be due to an error in event handling, and might stress the resources with unintended processing. Use call graphing facility in your profiling tool, and try to track back to where the calls to function originate, and then decide if it is intended behavior. This can be optimized quickly if a problem is found



2. Slowest function excluding child calls
Indicates the slowest function where the body of the function itself is taking time. It does not includes the time spent in calling other source code functions (child functions) but includes the time spent in calling .net framework functions.Identify the slowest functions excluding child calls and then, if available, look for the slowest code lines and determine if they are optimizable. You will often see slow lines waiting for database and web service calls to return.


3. Slowest function including child calls
Indicated the slowest function where the total cost of the functions, includes the time spent in calling other source code functions (child functions). Use the call graph available in profiler tool to explore the slowest part of the call tree.

4. Functions with Wait time
Functions with high Wait time can indicate performance problems induced from other application layers such as DB, Web service etc. or problems with thread locking. Identify the application layer that has introduced the delay and cause of contention on that layer.

5. Functions Generating Network Activity
Network activity is an expensive task and should be carefully analyzed. Make sure that the network activity generated from the function is valid. Make sure the network activity occurs is as low as possible and we fetch more data in a single call (if the number of network hops are more, the number of time latency affects the response time will be more).


6. Functions generating disk activity
A function generating disk activity needs to be investigated further, as it is demanding resources and is therefore a potential bottleneck.
Disk activity requires resources to be complete, any function generating disk activity should be analyzed to make sure the disk activity is necessary. Also, try finding alternatives to cut down on disk activity, if possible.

7. Functions with high CPU utilization
The amount of resource available in a system is fixed, functions that are CPU intensive should be analyzed for optimization.

No comments:

Post a Comment