Important Perfmon Metrics for Identifying the Memory Related Issues
Identifying Processor related Issues" (posted on January 13, 2011), in this blog I will discuss on some of the Perfmon metrics that will help in identifying memory related issues.
To start with basic memory bottleneck analysis, if we consider the memory counter "Available Mbytes" which represents the amount of Mbytes available/free in physical RAM, then counter value less than 15% to 20% of available RAM would indicate a problem and you may need to increase the RAM size.
Monitoring Dot Net CLR memory counters will also help in identifying memory related issues. "% Time in GC" counters represent the percentage of time taken to perform the last garbage collection. During Garbage collection all the threads are suspended and thus application is in standstill state till the garbage collection is completed. High amount value for this counter indicates a problem, as application will be in halted state for large amount of time. Generally a value greater than 5 is considered as problematic.
Other counters that can be observed in case of high memory usage are "Private Bytes" and "Number Byte in All Heaps". These counters help in finding the amount of memory that is used by Managed and UnManaged objects. Counter "Number Byte in All Heaps" represents the number of bytes used by Managed objects. Counter "Private Bytes" represents the all committed regions for the process. Thus values for counters "Private Bytes" minus "Number Byte in All Heaps" will represent the number of bytes committed by UnManaged objects. Thus you now know the amount of memory used by Managed and UnManaged objects and you can start your investigation accordingly.
You can use Memory profiling tools like ANTS profiler or CLR profiler or any other to investigate in detail about the problems related to memory consumption and memory leaks.