Description
As an Android/IOS App developer I want to profile a running application, so that I can detect performance bottlenecks within my application.
Description
A common profiling task regularly performed by developers is analyzing application CPU performance. Looking at the tutorials for dotnet diagnostics, there is a full tutorial related to analyzing CPU performance, Debug high CPU usage - .NET Core. Developers will normally start out monitoring CPU performance using a tool like dotnet-counters using System.Runtime cpu-usage counter to detect usage or pattern causing CPU spikes. When a scenario is identified that would need closer investigation, dotnet-trace can be used together with the sample profiler, collecting a trace file of samples that can be loaded and analyzed in tools like PerfView.
- Developer can start tracing session using dotnet-counters towards application running on device.
- Developer can monitor CPU usage every second for a running application on device.
- Developer can start dotnet-trace against running application and collect samples (using sample profiler) when high CPU load occurs.
- Developer can terminate dotnet-trace terminating tracing session but keep application running on device.
- Developer can load generated nettrace file into PerfView and analyzing performance characteristics of application, pinpointing callstacks consuming most CPU during session.
- Developer can relaunch dotnet-trace and run a new tracing session on same device for same running application.
- Developer can terminate application running on device while running a dotnet-trace tracing session resulting in controlled shutdown of dotnet-trace tool.
- Developer can temporary loose network communication between device/application and dotnet-trace. Error should be detected by both ends and be handled in a controlled manner. Optimal, resume tracing session when connectivity is re-established (might result in lost events). Acceptable, possible to setup a new tracing session using a new tool instance without any need to restart application.
- Developer can have both dotnet-counters and dotnet-trace running at the same time against the same application running on device.