Skip to content

Commit 6f49879

Browse files
author
Bryan Antigua
committed
added new page for automated analysis, as well as screenshots
1 parent 7cacf96 commit 6f49879

9 files changed

+137
-15
lines changed

config/_default/menus/main.en.yaml

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4093,56 +4093,61 @@ menu:
40934093
parent: profiler
40944094
identifier: profiler_compare
40954095
weight: 5
4096+
- name: Automated Analysis
4097+
url: profiler/automated_analysis
4098+
parent: profiler
4099+
identifier: profiler_automated_analysis
4100+
weight: 6
40964101
- name: Profiler Troubleshooting
40974102
url: profiler/profiler_troubleshooting/
40984103
parent: profiler
40994104
identifier: profiler_troubleshooting
4100-
weight: 6
4105+
weight: 7
41014106
- name: Java
41024107
url: profiler/profiler_troubleshooting/java/
41034108
parent: profiler_troubleshooting
41044109
identifier: profiler_troubleshooting_java
4105-
weight: 601
4110+
weight: 701
41064111
- name: Python
41074112
url: profiler/profiler_troubleshooting/python/
41084113
parent: profiler_troubleshooting
41094114
identifier: profiler_troubleshooting_python
4110-
weight: 602
4115+
weight: 702
41114116
- name: Go
41124117
url: profiler/profiler_troubleshooting/go/
41134118
parent: profiler_troubleshooting
41144119
identifier: profiler_troubleshooting_go
4115-
weight: 603
4120+
weight: 703
41164121
- name: Ruby
41174122
url: profiler/profiler_troubleshooting/ruby/
41184123
parent: profiler_troubleshooting
41194124
identifier: profiler_troubleshooting_ruby
4120-
weight: 604
4125+
weight: 704
41214126
- name: Node.js
41224127
url: profiler/profiler_troubleshooting/nodejs/
41234128
parent: profiler_troubleshooting
41244129
identifier: profiler_troubleshooting_nodejs
4125-
weight: 605
4130+
weight: 705
41264131
- name: .NET
41274132
url: profiler/profiler_troubleshooting/dotnet/
41284133
parent: profiler_troubleshooting
41294134
identifier: profiler_troubleshooting_dotnet
4130-
weight: 606
4135+
weight: 706
41314136
- name: PHP
41324137
url: profiler/profiler_troubleshooting/php/
41334138
parent: profiler_troubleshooting
41344139
identifier: profiler_troubleshooting_php
4135-
weight: 607
4140+
weight: 707
41364141
- name: C/C++/Rust
41374142
url: profiler/profiler_troubleshooting/ddprof/
41384143
parent: profiler_troubleshooting
41394144
identifier: profiler_troubleshooting_linux
4140-
weight: 608
4145+
weight: 708
41414146
- name: Guides
41424147
url: profiler/guide/
41434148
parent: profiler
41444149
identifier: profiler_guides
4145-
weight: 7
4150+
weight: 8
41464151
- name: Database Monitoring
41474152
url: database_monitoring/
41484153
pre: database-2
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
---
2+
title: Automated Analysis
3+
description: Automatically surfacing critical issues with contextual insights and recommended next steps
4+
aliases:
5+
- /profiler/automated_analysis/
6+
further_reading:
7+
- link: 'profiler/enabling'
8+
tag: 'Documentation'
9+
text: 'Enable continuous profiler for your application'
10+
- link: 'getting_started/profiler'
11+
tag: 'Documentation'
12+
text: 'Getting Started with Profiler'
13+
- link: 'https://www.datadoghq.com/blog/introducing-datadog-profiling/'
14+
tag: 'Blog'
15+
text: 'Introducing always-on production profiling in Datadog'
16+
- link: 'https://www.datadoghq.com/blog/continuous-profiler-timeline-view/'
17+
tag: 'Blog'
18+
text: "Diagnose runtime and code inefficiencies using Continuous Profiler's timeline view"
19+
multifiltersearch:
20+
# "id" must match the corresponding key in the "data" object
21+
headers:
22+
- name: Name
23+
id: name
24+
filter_by: true
25+
- name: Severity
26+
id: severity
27+
filter_by: true
28+
- name: Description
29+
id: description
30+
filter_by: false
31+
32+
data:
33+
- name: GC Setup
34+
severity: Info
35+
description: Triggers when one of the following is detected - serial GC used on a multi-core machine, parallel GC on a single-core machine, more GC threads were configured than available cores, or a parallel GC was configured to run in 1 thread
36+
- name: Duplicated Flags
37+
severity: Info
38+
description: Triggers if duplicate flags were provided to the runtime (e.g. `-Xmx2g -Xmx5g`). This is a problem as it may lead to changes not having the expected effect.
39+
- name: Options
40+
severity: Warn
41+
description: Triggers if undocumented, deprecated or non-recommended option flags were detected.
42+
- name: Stackdepth Setting
43+
severity: Warn
44+
description: Triggers if events were found with truncated stacktraces which may make it hard to understand profiling data.
45+
- name: VMOperation Peak Duration
46+
severity: Warn
47+
description: Triggers if a blocking VM operation (or combination of ops close in time) taking more than 2 seconds. Reports details about the operation with the highest duration.
48+
- name: GC Pauses
49+
severity: Warn
50+
description: Triggers if more than 10% of time was spent in GC pauses.
51+
- name: GC Pause Peak Duration
52+
severity: Info
53+
description: Triggers if at least one GC pause took more than 1 second.
54+
- name: Deadlocked Threads
55+
severity: Warn
56+
description: Triggers if we see a custom datadog event capturing deadlocked threads during the profile.
57+
- name: Deadlocked Threads Detected
58+
severity: Warn
59+
description: Triggers if max number of deadlocked threads over query context is bigger than 0.
60+
- name: Thrown Exceptions
61+
severity: Warn
62+
description: Triggers when the rate of thrown (caught and uncaught) exceptions per minute goes above a threshold (defauls to 10K)
63+
- name: Primitive Value Boxing
64+
severity: Info
65+
description: Triggers if more than 5% of CPU time was spent doing primitive<>object value conversions.
66+
- name: Explicit GC
67+
severity: Info
68+
description: Triggers if there are System.gc() calls.
69+
- name: Head of line blocking
70+
severity: Info
71+
description: Triggers if a queue event gets stuck behind the given activity.
72+
---
73+
74+
## Overview
75+
Automated Analysis helps teams detect and troubleshoot problems faster, without requiring deep expertise in code profiling. Powered by Continuous Profiler, Automated Analysis continuously monitors your applications and surfaces critical issues in real time, along with actionable insights to guide resolution. When a problem is detected, Automated Analysis provides:
76+
77+
- A high-level summary explaining the issue and why it matters
78+
- Contextual insights from profiling data (e.g., affected methods, packages, or processes)
79+
- Recommended next steps to help you resolve the issue efficiently
80+
81+
By reducing the expertise required to take action, Automated Analysis enables faster resolution of performance issues, increases product adoption, and helps teams avoid costly blind spots. It also lays the foundation for powering performance and cost insights across the Datadog platform.
82+
83+
84+
{{< img src="profiler/profiling_automated_analysis.png" alt="The Profiler Thread Time line showing a Thrown Exception insight" style="width:100%;" >}}
85+
86+
## Explore insights
87+
Automated Analysis will be surfaced within the [Profile explorer][1]
88+
- As a banner at the top of the page when you're scoped to a specific service
89+
{{< img src="profiler/profiling_automated_analysis_banner.png" alt="The Automated Analysis banner displaying insights detected for a given service" style="width:100%;">}}
90+
- As a column within the service list
91+
{{< img src="profiler/profiling_automated_analysis_column.png" alt="The Automated Analysis column displaying insights detected for a given service within the service list" style="width:100%;">}}
92+
93+
Clicking an an insight in either area will display a high-level summary explaining the issue, contextual insights from profiling data, and recommended next steps.
94+
{{< img src="profiler/profiling_automated_analysis_details.png" alt="Expanded Profiling Insights showing the details of a detected Issue" style="width:100%;">}}
95+
96+
## Aggregated vs Individual Insights
97+
Individual insights are tied to a specific profile and show up directly in the flamegraph and timeline views. They highlight problems detected within a single recording, giving detailed context about a specific performance issue observed in that exact moment.
98+
{{< img src="profiler/profiling_automated_analysis_individual.png" alt="Example of an individual profile insight within the trace explorer" style="width:100%;">}}
99+
100+
Aggregated insights, on the other hand, are surfaced at the service level and represent patterns detected across many profiles. They help you identify recurring or systemic issues affecting a service over time, making them ideal for quickly spotting problematic trends without digging into individual profiles.
101+
{{< img src="profiler/profiling_automated_analysis_aggregated.png" alt="Example of an aggregated insight within the profiler explorer" style="width:100%;">}}
102+
103+
104+
## Supported Insights
105+
<!-- The table below is auto-generated. Add new entries in multifiltersearch with new insights as they become available. -->
106+
{{< multifilter-search >}}
107+
108+
109+
## Further reading
110+
111+
{{< partial name="whats-next/whats-next.html" >}}
112+
113+
[1]: https://app.datadoghq.com/profiling/explorer
114+

content/en/profiler/connect_traces_and_profiles.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -116,15 +116,18 @@ The Trace to Profiling integration is enabled when you [turn on profiling for yo
116116

117117
### Span execution timeline view
118118

119-
{{< img src="profiler/profiles_tab.png" alt="Profiles tab has a timeline view that breaks down threads and execution over time" >}}
119+
{{< img src="profiler/profiling_automated_analysis_individual.png" alt="Profiles tab has a timeline view that breaks down threads and execution over time" >}}
120120

121-
The timeline view surfaces time-based patterns and work distribution over the period of the span.
121+
The timeline view surfaces time-based patterns and work distribution over the period of the span. It provides a visual breakdown of how threads contributed to the request over time.
122122

123123
With the span timeline view, you can:
124124

125-
- Isolate time-consuming methods.
126-
- Sort out complex interactions between threads.
127-
- Surface runtime activity that impacted the request.
125+
- Isolate time-consuming methods
126+
- Sort out complex interactions between threads
127+
- Surface runtime activity that impacted the request
128+
- Leverage [Automated Analysis][1] to highlight performance issues directly in the view, such as oversized thread pools or GC contention
129+
130+
[1]: https://www.datadoghq.com//profiler/automated_analysis/
128131

129132
Depending on the runtime and language, the lanes vary:
130133

Loading
Loading
Loading
Loading
Loading
Loading

0 commit comments

Comments
 (0)