Comments on "Instrumentation in the .NET Compact Framework"
In response to Daniel Moth’s comments regarding my post Instrumentation in the .NET Compact Framework…
We have cleaned up the counters a little since Beta 1. See the current snapshot of the counters in mscoree.stat below. This is bound to change a little, but we are getting close to the final set. Please post comments for suggestions for additional counters. My caveat is that some counters are difficult and/or too expensive. I.e. To calculate the number of floating point operations is both expensive at runtime and engineering-wise. Also, adding “counters” to get timing data is difficult and expensive. The main timing counter we have is GC latency. With regards to collecting mscoree.stat data for multiple apps, this work is done and will be available for v2 Beta 2. Instead of a file name mscoree.stat, it will be <appname>.stat so that multiple apps can save the data simultaneously.
Loader
Total Program Run Time (ms)
App Domains Created
App Domains Unloaded
Assemblies Loaded
Classes Loaded
Methods Loaded
Generics
Closed Types Loaded
Closed Types Loaded per Definition
Open Types Loaded
Closed Methods Loaded
Closed Methods Loaded per Definition
Open Methods Loaded
Locks and Threads
Threads in Thread Pool
Pending Timers
Scheduled Timers
Timers Delayed by Thread Pool Limit
Work Items Queued
Uncontested Monitor.Enter Calls
Contested Monitor.Enter Calls
GC
Peak Bytes Allocated (native + managed)
Managed Objects Allocated
Managed Bytes Allocated
Garbage Collections (GC)
Bytes Collected By GC
Managed Bytes In Use After GC
Total Bytes In Use After GC
GC Compactions
Code Pitchings
Calls to GC.Collect
GC Latency Time (ms)
Pinned Objects
Objects Moved by Compactor
Objects Not Moved by Compactor
Objects Finalized
Boxed Value Types
Memory
Process Heap
Short Term Heap
JIT Heap
App Domain Heap
GC Heap
JIT
Native Bytes Jitted
Methods Jitted
Bytes Pitched
Methods Pitched
Exceptions
Exceptions Thrown
Interop
Platform Invoke Calls
COM Calls Using a vtable
COM Calls Using IDispatch
Complex Marshaling
Runtime Callable Wrappers
Networking
Socket Bytes Sent
Socket Bytes Received
Windows.Forms
Controls Created
Brushes Created
Pens Created
Bitmaps Created
Regions Created
Fonts Created
Graphics Created (FromImage)
Graphics Created (CreateGraphics)
Yes, when I say “live view”, it is over-the-wire-every-second the counter information is transmitted to an app on the desktop. If the .NET CF app crashes, you would have the latest data, but not in the mscoree.stat file.
I do understand the importance of such tools and will work to provide this as soon as we can, but at this point it is still “hopefully in the .NET Compact Framework 2.0 timeframe”.
Scott
This posting is provided "AS IS" with no warranties, and confers no rights.
Comments
- Anonymous
December 29, 2004
CF 2.0 Performance Statistics revisited