You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/PerfProblemSimulator/wwwroot/azure-monitoring-guide.html
+44Lines changed: 44 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -492,6 +492,47 @@ <h2>📊 Overview</h2>
492
492
<p>Each issue can be diagnosed using specific Azure tools and techniques.</p>
493
493
</section>
494
494
495
+
<!-- Simulation ID Correlation Section -->
496
+
<sectionid="simulation-ids" class="doc-section">
497
+
<h2>🔗 Simulation ID Correlation</h2>
498
+
<p>Every simulation instance is assigned a unique <strong>Simulation ID</strong> (GUID) that enables end-to-end correlation between the dashboard UI and Azure diagnostics.</p>
499
+
500
+
<h3>Finding Simulation IDs</h3>
501
+
<p><strong>In the Dashboard:</strong> Hover over any simulation-related message in the Event Log (marked with a <spanstyle="border-bottom: 1px dotted currentColor; cursor: help;">dotted underline</span>) to see the full Simulation ID in a tooltip.</p>
502
+
<p><strong>In Azure:</strong> The same Simulation ID is emitted in server-side logs and can be found in:</p>
503
+
<ul>
504
+
<li><strong>Application Insights</strong> - Search traces and custom events by Simulation ID</li>
505
+
<li><strong>Log Analytics</strong> - Query logs using the ID as a filter</li>
506
+
<li><strong>Container/App Service Logs</strong> - Filter stdout/stderr by the GUID</li>
507
+
</ul>
508
+
509
+
<h3>Correlation Queries</h3>
510
+
<p>Use these KQL queries in Log Analytics to correlate dashboard events with server telemetry:</p>
511
+
<divclass="code-block">
512
+
<spanclass="comment">// Find all traces for a specific simulation</span>
<li>Query logs using the Simulation ID to see all related server-side activity</li>
531
+
<li>Correlate timestamps between dashboard events and server metrics</li>
532
+
</ol>
533
+
<p><strong>Tip:</strong> The Simulation ID helps isolate telemetry when running multiple concurrent simulations or when the dashboard is used by multiple users.</p>
Copy file name to clipboardExpand all lines: src/PerfProblemSimulator/wwwroot/documentation.html
+11Lines changed: 11 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -564,6 +564,17 @@ <h3>Metric Color Indicators</h3>
564
564
</tbody>
565
565
</table>
566
566
<p><strong>Note:</strong> Memory thresholds are calculated dynamically based on the actual total available memory reported by the server, not a hardcoded value. This ensures accurate warnings regardless of the machine's RAM configuration.</p>
567
+
568
+
<h3>Event Log & Simulation IDs</h3>
569
+
<p>The Event Log at the bottom of the dashboard records all simulation activity with color-coded entries matching each simulation type. Messages related to a specific simulation instance are marked with a <spanstyle="border-bottom: 1px dotted currentColor; cursor: help;">dotted underline</span>.</p>
570
+
<p><strong>Viewing Simulation IDs:</strong> Hover over any underlined message to reveal the full <strong>Simulation ID</strong> (GUID) in a tooltip. This ID uniquely identifies each simulation instance.</p>
571
+
<p><strong>Using Simulation IDs for Troubleshooting:</strong></p>
572
+
<ul>
573
+
<li>The same Simulation ID is logged server-side and appears in Azure Application Insights and Log Analytics</li>
574
+
<li>Use this ID to correlate dashboard events with server logs when analyzing performance issues</li>
575
+
<li>Filter Azure logs by Simulation ID to isolate telemetry from a specific simulation run</li>
576
+
<li>See the <ahref="azure-monitoring-guide.html#simulation-ids">Azure Monitoring Guide</a> for detailed correlation techniques</li>
<pclass="warning-text">⚠️ These buttons intentionally cause performance problems!</p>
83
-
84
82
<divclass="control-group cpu-group">
85
-
<h3>🔥 CPU Stress</h3>
86
-
<p>Creates parallel spin loops to max out all CPU cores.</p>
83
+
<h3>🔥 CPU Stress<spanclass="control-tooltip" data-tooltip="Spawns worker threads running intensive cryptographic operations to stress CPU cores">ⓘ</span></h3>
84
+
<p>Spawns worker threads running intensive cryptographic operations to stress CPU cores. Higher intensity uses more parallel threads.</p>
87
85
<divclass="control-inputs">
88
86
<label>Duration (s):
89
87
<inputtype="number" id="cpuDuration" value="30" min="1" title="Duration in seconds (minimum 1 second)">
@@ -102,8 +100,8 @@ <h3>🔥 CPU Stress</h3>
102
100
</div>
103
101
104
102
<divclass="control-group memory-group">
105
-
<h3>📊 Memory Pressure</h3>
106
-
<p>Allocates pinned memory blocks to increase working set.</p>
103
+
<h3>📊 Memory Pressure<spanclass="control-tooltip" data-tooltip="Allocates pinned memory blocks filled with random data to increase working set">ⓘ</span></h3>
104
+
<p>Allocates pinned memory blocks filled with random data. Multiple allocations stack - mimics gradual memory leak.</p>
107
105
<divclass="control-inputs">
108
106
<label>Size (MB):
109
107
<inputtype="number" id="memorySize" value="512" min="1" title="Memory size in megabytes (minimum 1 MB). Allocations are cumulative until released.">
@@ -116,8 +114,9 @@ <h3>📊 Memory Pressure</h3>
116
114
</div>
117
115
118
116
<divclass="control-group thread-group">
119
-
<h3>🧵 Thread Pool Starvation</h3>
120
-
<p>Blocks threads using sync-over-async anti-pattern.</p>
117
+
<h3>🧵 Thread Pool Starvation <spanclass="control-tooltip" data-tooltip="Blocks worker threads to simulate thread pool exhaustion">ⓘ</span></h3>
118
+
<p>Blocks worker threads using sync-over-async anti-pattern to simulate thread pool exhaustion. Server becomes unresponsive to new requests.</p>
119
+
<pclass="info-note">⏱️ <strong>Duration Note:</strong> .NET thread pool starts with ~CPU cores (e.g., 4-8) and grows at only 1-2 threads/second when starved. Impact is visible almost immediately since the initial pool is small.</p>
121
120
<divclass="control-inputs">
122
121
<label>Delay (s):
123
122
<inputtype="number" id="threadDelay" value="10" min="0.1" step="0.1" title="How long each blocking operation delays in seconds (minimum 0.1s)">
@@ -132,8 +131,8 @@ <h3>🧵 Thread Pool Starvation</h3>
132
131
</div>
133
132
134
133
<divclass="control-group slowrequest-group">
135
-
<h3>🐌 Slow Requests</h3>
136
-
<p>Generates requests using sync-over-async patterns. Ideal for CLR Profiler diagnosis.</p>
<p>Generates requests using sync-over-async patterns that intentionally take a long time. Ideal for CLR Profiler diagnosis in Azure.</p>
137
136
<pclass="timeout-warning">⚠️ Note: Requests exceeding 30 seconds total time (queue + execution) are flagged as critical</p>
138
137
<divclass="control-inputs">
139
138
<label>Request Execution Time (s) <spanclass="help-icon" title="This value controls only the processing time. Total Duration = Queue Time + Execution Time.">ⓘ</span>:
@@ -153,8 +152,8 @@ <h3>🐌 Slow Requests</h3>
153
152
</div>
154
153
155
154
<divclass="control-group crash-group">
156
-
<h3>💥 Application Crash</h3>
157
-
<p>Triggers a fatal crash for Azure crash monitoring.</p>
155
+
<h3>💥 Application Crash<spanclass="control-tooltip" data-tooltip="Triggers various types of fatal crashes for testing crash monitoring">ⓘ</span></h3>
156
+
<p>Triggers a fatal crash to test Azure crash monitoring and diagnostics. Choose from various crash types including stack overflow and access violations.</p>
158
157
<divclass="control-inputs">
159
158
<label>Type:
160
159
<selectid="crashType" class="wide-input">
@@ -180,7 +179,7 @@ <h3>💥 Application Crash</h3>
180
179
<divclass="metric-card cpu">
181
180
<divclass="metric-header">
182
181
<divclass="metric-icon">⚡</div>
183
-
<divclass="metric-label">CPU Usage</div>
182
+
<divclass="metric-label">CPU Usage<spanclass="metric-tooltip" data-tooltip="System CPU usage percentage across all cores">ⓘ</span></div>
184
183
</div>
185
184
<divclass="metric-info">
186
185
<divclass="metric-value" id="cpuValue">--</div>
@@ -194,7 +193,7 @@ <h3>💥 Application Crash</h3>
194
193
<divclass="metric-card memory">
195
194
<divclass="metric-header">
196
195
<divclass="metric-icon">📊</div>
197
-
<divclass="metric-label">Memory Working Set</div>
196
+
<divclass="metric-label">Memory Working Set<spanclass="metric-tooltip" data-tooltip="Physical memory currently used by the process">ⓘ</span></div>
0 commit comments