Skip to content

Commit b55985c

Browse files
committed
initial addition of note warning users of overhead
Signed-off-by: Hannah Hunter <[email protected]>
1 parent a9372e3 commit b55985c

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

articles/azure-monitor/snapshot-debugger/snapshot-debugger-troubleshoot.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,40 @@ To check the setting, open your *web.config* file and find the system.web sectio
105105
> Modifying the `httpRuntime targetFramework` value changes the runtime quirks applied to your application and can cause other, subtle behavior changes. Be sure to test your application thoroughly after making this change. For a full list of compatibility changes, see [Re-targeting changes](/dotnet/framework/migration-guide/application-compatibility#retargeting-changes).
106106
> [!NOTE]
107107
> If the `targetFramework` is 4.7 or above then Windows determines the available protocols. In Azure App Service, TLS 1.2 is available. However, if you're using your own virtual machine, you may need to enable TLS 1.2 in the OS.
108+
109+
## Snapshot Debugger overhead scenarios
110+
111+
The Snapshot Debugger is designed for use in production environments. The default settings include rate limits to minimize the impact on your applications.
112+
113+
However, you may experience small CPU, memory, and I/O overhead associated with the Snapshot Debugger, like in the following scenarios.
114+
115+
**When an exception is thrown in your application:**
116+
117+
_Snapshot creation_
118+
Creating a signature for the problem type and deciding whether to create a snapshot adds a very small CPU and memory overhead.
119+
120+
_Deoptimization_
121+
If de-optimization is enabled, there is an overhead for re-JITting the method that threw the exception. This will be incurred the next time that method executes. Depending on the size of the method, this could be between 1ms and 100ms of CPU time.
122+
123+
**If the exception handler decides to create a snapshot:**
124+
125+
_Process snapshot creation_
126+
Creating the process snapshot takes about half a second (P50=0.3s, P90=1.2s, P95=1.9s) during which time, the thread that threw the exception is paused. Other threads are not blocked.
127+
128+
_Converting to a minidump and uploading_
129+
130+
Converting the process snapshot to a minidump and uploading it to Application Insights takes several minutes.
131+
- Convert: P50=63s, P90=187s, P95=275s.
132+
- Upload: P50=31s, P90=75s, P95=98s.
133+
134+
This is done in Snapshot Uploader, which runs in a separate process. The Snapshot Uploader process runs at below normal CPU priority and uses low priority I/O.
135+
136+
The minidump is first written to disk and the amount of disk spaced is roughly the same as the working set of the original process. Writing the minidump can induce page faults as memory is read. The minidump is compressed during upload which consumes both CPU and memory in the Snapshot Uploader process. The CPU, memory and disk overhead for this will be proportional to the size of the process snapshot. Snapshot Uploader processes snapshots serially.
137+
138+
**When `TrackException` is called:**
139+
140+
The Snapshot Debugger checks if the exception is new or if a snapshot has been created for it. This adds a very small CPU overhead.
141+
108142
## Preview Versions of .NET Core
109143

110144
If you're using a preview version of .NET Core or your application references Application Insights SDK, directly or indirectly via a dependent assembly, follow the instructions for [Enable Snapshot Debugger for other environments](snapshot-debugger-vm.md?toc=/azure/azure-monitor/toc.json).

articles/azure-monitor/snapshot-debugger/snapshot-debugger.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,19 @@ The following environments are supported:
4747
> [!NOTE]
4848
> Client applications (for example, WPF, Windows Forms, or UWP) aren't supported.
4949
50+
## Overhead
51+
52+
The Snapshot Debugger is designed for use in production environments. The default settings include rate limits to minimize the impact on your applications.
53+
54+
However, you may experience small CPU, memory, and I/O overhead associated with the Snapshot Debugger, such as:
55+
- When an exception is thrown in your application
56+
- If the exception handler decides to create a snapshot
57+
- When `TrackException` is called
58+
59+
There is **no additional cost** for storing data captured by Snapshot Debugger.
60+
61+
[Learn more details regarding the Snapshot Debugger overhead.](./snapshot-debugger-troubleshoot.md)
62+
5063
## Prerequisites for using Snapshot Debugger
5164

5265
### Packages and configurations

0 commit comments

Comments
 (0)