Documentation forAppOptics

Code Profiling for .NET

Code profiling is currently available as a beta feature. It is only supported by the .NET Framework agent.

Code profiling provides extra insight into code level execution time that is otherwise not captured by auto-instrumentation. See code profiling for general information.

AppOptics .NET agent version 3.7.0 or later is required for code profiling.

What profiling information is collected by the .NET agent?

  • Profiling information has granularity base on profiling interval (default is 50ms), and is configurable in profiler settings.
  • .NET class name and method name will be collected.
  • Asynchronous operations that are part of a request will not have profiling information captured.

Why don't all traces have profiling information?

  • Code profiling is disabled by default, please refer to enabling code profiling.
  • Traces with duration shorter than the configured profiling interval (default is 50ms) might not have profiling information.

What are the overhead concerns?

  • Overhead might be more noticeable in systems with high number of threads. To reduce overhead, increase code profiling interval such that the agent would take snapshots less frequently.

What is the "Unknown" path shown in the profiles?

  • "Unknown" accounts for occasions where the agent failed to obtain snapshots on the given interval. Various conditions can trigger missing snapshots, for example high CPU load.