Although it was only a month ago when JustTrace Q3 2011 was released, we've launched JustTrace Q3 2011 SP1 with two new major features: a completely redone “Live Data” view and the ability to view source code. In addition, a number of enhancements have been made, resulting in a smoother user experience. Visit the What’s New page for a list of all changes.
The Live Data view has been updated to provide visual information via charts representing CPU and memory usage. This enables you to visualize how the profiled application process is currently affecting performance and memory consumption. More importantly, you now see the big picture in real time, aiding you in detecting performance issues caused by an abundance of exceptions or lock contentions.
Additional information is available in the right hand column. The following chart will provide more information on the meaning of each piece of data.
Percentage of the elapsed time that the process has used to execute code.
Current memory allocated in bytes on the 4 GC Heaps (Gen0, Gen1, Gen2, Large objects).
# Gen 0 GC
Number of times the generation 0 objects have been garbage collected since the start of the application.
# Gen 1 GC
Number of times the generation 1 objects have been garbage collected since the start of the application.
# Gen 2 GC
Number of times the generation 2 objects have been garbage collected since the start of the application.
# Induced GC
Number of times a garbage collection was performed because of an explicit call to GC.Collect.
Time in GC
Percentage of the elapsed time that was spent in performing a garbage collection (GC) since the last GC cycle.
Time in JIT
Percentage of elapsed time spent in JIT compilation since the last JIT compilation phase.
Total number of times threads in the CLR have attempted to acquire a managed lock unsuccessfully.
Current rate at which threads in the runtime attempt to acquire a managed lock unsuccessfully.
Total number of exceptions thrown since the start of the application.
Current rate at which exceptions are being thrown.
This data is provided by .NET performance counters, which are unavailable in Silverlight projects. If the profiled application is a Silverlight application, only CPU usage will be available. If you encounter an issue with live data in a non-Silverlight application, you may need to re-register your .NET performance counters.
Start an administrator command prompt and execute the following commands.
unlodctr .NETFramework lodctr %WINDIR%\Microsoft.NET\Framework\<Framework_ver>\CORPerfMonSymbols.ini
Replace <Framework_ver> with the directory of the .NET Framework version which contains the CORPerfMonSymbols.ini file. It should be either v4.0.xxx or v2.0.xxx if 4.0 is not installed.
The Call Tree Navigator was one of the highlights of JustTrace Q3 2011 that made it easier to find performance issues. Navigate to Call Tree is now included in the Hot Spots view, but that’s not the only change we made to the performance snapshot viewer.
Imagine the following scenario: after profiling an application, you’ve opened Hot Spots to determine what has been causing recent performance problems. You notice one particular method that is taking too long. So, you right-click and choose Navigate to Call Tree to see where it’s being called from. After iterating through a few calls, one looks rather suspicious, and you want to see the code.
If a project’s PDB files are available, you can now open the source code for the method’s class. Just right-click the method of interest and choose View Source.
This will open up a Source Code tab.
This is useful for a quick glimpse while investing a particular performance issue.
We received questions about graphs and viewing source code in the Q3 2011 webinar, and we responded to the community by adding these features. They can be taken much further, and we welcome your feedback. What counters are most important to you in Live Data? What features would help you the most in detecting and fixing performance and memory issues? Download JustTrace today and tell us how it helped you detect and solve an issue!
Chris Eargle is a Microsoft C# MVP with over a decade of experience designing and developing enterprise applications, and he runs the local .NET User Group: the Columbia Enterprise Developers Guild. He is a frequent guest of conferences and community events promoting best practices and new technologies. Chris is a native Carolinian; his family settled the Dutch Form region of South Carolina in 1752. He currently resides in Columbia with his wife, Binyue, his dog, Laika, and his three cats: Meeko, Tigger, and Sookie. Amazingly, they all get along... except for Meeko, who is by no means meek.