I've been to talks like this one before, so not everything was new (in fact, very little was to me...which is probably a good thing, I guess). So, not as much struck me as interesting...but this is a (very) brief run down of some main points to take away...
- Critical Problems are always...
- IntraProcess: resources within the process like memory and CPU, or
- InterProcess: contentions for resources outside (files, network, etc.)
- Important CPU Counters to monitor for CPU utilization
- % Processor Time: Useful in multi-CPU environments
- % User Time: Determines how much work user-mode code in your app (therefore, typically YOUR APP) is taking,
- % Priv. Time: Determines how much time the kernel is spent working on particular tasks given to it by your app.
- Good CPU performance tools:
- Visual Studio Performance Profiler (available in Team edition),
- Kernrate viewer (available on MSDN),
- Intel's performance profiler (forgot the name...oops)
- Visual Studio Performance Profiler has the capability to profile in,
- Sampling Mode: where it samples every N CPU cycles; this method is typically less intrusive, but given that it's time-based can miss things.
- Instrumentation: performance code and bit are inserted into the runtime code, which takes up more time for it and gives it a larger working size, but is sometimes the only option for certain scenarios (like testing for Priv. Time slices).
- Memory Problems:
- Check for immense paging,
- Tools:
- Perf Counters, TaskManager, SysInternals' ProcessExplorer
- CLRProfiler V 2.0
- VADump (very cool app)
- take note of the OtherData vs. Heap values in this as this determines what is native/managed resource leaks (usually) respectively.
- Also Check out User Mode Dump Heap (never heard of this tool, personally), sometimes called "UMDH".
- Key blogs:
- http://blogs.msdn.com/ricom/.
- http://blogs.msdn.com/maoni/.