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.