Skip to content

Conversation

@hdafgard
Copy link
Contributor

What does this PR do? What is the motivation?

Updates the table of insights in the docs for the automated analysis feature with all insights currently implemented.

Merge instructions

Merge readiness:

  • Ready for merge

For Datadog employees:

Your branch name MUST follow the <name>/<description> convention and include the forward slash (/). Without this format, your pull request will not pass CI, the GitLab pipeline will not run, and you won't get a branch preview. Getting a branch preview makes it easier for us to check any issues with your PR, such as broken links.

If your branch doesn't follow this format, rename it or create a new branch and PR.

[6/5/2025] Merge queue has been disabled on the documentation repo. If you have write access to the repo, the PR has been reviewed by a Documentation team member, and all of the required checks have passed, you can use the Squash and Merge button to merge the PR. If you don't have write access, or you need help, reach out in the #documentation channel in Slack.

Additional notes

@hdafgard hdafgard requested a review from a team as a code owner November 27, 2025 18:50
@hdafgard hdafgard requested a review from brantigua November 27, 2025 18:50
@github-actions
Copy link
Contributor

Preview links (active after the build_preview check completes)

Modified Files

Copy link
Contributor

@janine-c janine-c left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks so much for this, Henrik! I made some suggestions for readability and consistency. Take a look and feel free to take them or leave them as you see fit.

One thing I was wondering is whether you thought the table might be a little easier to navigate if we sorted them alphabetically by name within each priority group. If you'd like help with that, let me know; I have an extension I can do it with quickly 🙂

| GC Setup | Medium | Java | 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 |
| Deadlocked Threads Detected | Medium | Java | Triggers if max number of deadlocked threads over query context is bigger than 0. |
| GC Pauses | Medium | Java | Triggers if more than 10% of time was spent in GC pauses. |
| GC Pause Peak Duration | Medium | Java | Triggers if there is a GC pause longer than 1 second. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| GC Pause Peak Duration | Medium | Java | Triggers if there is a GC pause longer than 1 second. |

I think this was a duplicate of line 72

|------------------------------|------------|-------------------------|-------------|
| Virtual Thread Pinning | High | Java | Triggers if virtual threads were pinned to their carrier threads for a prolonged time. |
| Virtual Thread Submit Failure| High | Java | Triggers if virtual threads could not be scheduled for execution. |
| Even Loop Blocking | Medium | Node | Triggers if callbacks were running for an extended period of time on the Main Event Loop thread. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| Even Loop Blocking | Medium | Node | Triggers if callbacks were running for an extended period of time on the Main Event Loop thread. |
| Event Loop Blocking | Medium | Node | Triggers if callbacks were running for an extended period of time on the Main Event Loop thread. |

| Even Loop Blocking | Medium | Node | Triggers if callbacks were running for an extended period of time on the Main Event Loop thread. |
| Sync-over-Async Blocking | Medium | .NET | Triggers if async functions are detected in CPU samples. |
| Allocation Stall | Medium | Java | Triggers if a thread had to be paused due to insufficient available memory. |
| Explicit GC | Medium | Java | Triggers if there are System.gc() calls. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| Explicit GC | Medium | Java | Triggers if there are System.gc() calls. |
| Explicit GC | Medium | Java | Triggers if there are `System.gc()` calls. |

| Allocation Stall | Medium | Java | Triggers if a thread had to be paused due to insufficient available memory. |
| Explicit GC | Medium | Java | Triggers if there are System.gc() calls. |
| GC Pause Peak Duration | Medium | Java | Triggers if at least one GC pause took more than 1 second. |
| GC Setup | Medium | Java | 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 |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| GC Setup | Medium | Java | 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 |
| GC Setup | Medium | Java | 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 configured than available cores, or parallel GC configured to run in one thread. |

| Sync-over-Async Blocking | Medium | .NET | Triggers if async functions are detected in CPU samples. |
| Allocation Stall | Medium | Java | Triggers if a thread had to be paused due to insufficient available memory. |
| Explicit GC | Medium | Java | Triggers if there are System.gc() calls. |
| GC Pause Peak Duration | Medium | Java | Triggers if at least one GC pause took more than 1 second. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| GC Pause Peak Duration | Medium | Java | Triggers if at least one GC pause took more than 1 second. |
| GC Pause Peak Duration | Medium | Java | Triggers if at least one GC pause took more than one second. |

| Stackdepth Setting | Medium | Java | Triggers if events were found with truncated stacktraces which may make it hard to understand profiling data. |
| Thrown Exceptions | Medium | Java | Triggers when the rate of thrown (caught and uncaught) exceptions per minute goes above a threshold (defaults to 10K) |
| VMOperation Peak Duration | Medium | Java | Triggers if a blocking VM operation (or combination of operations close in time) takes more than 2 seconds. Reports details about the operation with the highest duration. |
| Blocking VMOperations | Medium | Java | Triggers if blocking VM operations (or combination of operations close in time) takes more than 5% of a profile. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| Blocking VMOperations | Medium | Java | Triggers if blocking VM operations (or combination of operations close in time) takes more than 5% of a profile. |
| Blocking VMOperations | Medium | Java | Triggers if blocking VM operations (or combination of operations close in time) take more than 5% of a profile. |

| VMOperation Peak Duration | Medium | Java | Triggers if a blocking VM operation (or combination of operations close in time) takes more than 2 seconds. Reports details about the operation with the highest duration. |
| Blocking VMOperations | Medium | Java | Triggers if blocking VM operations (or combination of operations close in time) takes more than 5% of a profile. |
| Code Cache Size | Medium | Java | Triggers if the Code Cache was filled during a profile. |
| High Lock Contention | Low | Java, Go, Python | Triggers if there is a high ratio of time waiting on locks vs time spent on-CPU. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| High Lock Contention | Low | Java, Go, Python | Triggers if there is a high ratio of time waiting on locks vs time spent on-CPU. |
| High Lock Contention | Low | Java, Go, Python | Triggers if there is a high ratio of time waiting on locks to time spent on-CPU. |

| High Lock Contention | Low | Java, Go, Python | Triggers if there is a high ratio of time waiting on locks vs time spent on-CPU. |
| Libuv Pool Overload | Low | Node | Triggers if there were more concurrent tasks scheduled to run on the libuv thread pool than it has threads. |
| Excessive String Concatenation | Low | .NET | Triggers if there is a high ratio of CPU time spent concatenating strings. |
| Thread Pool Size | Low | Java | Triggers if a thread pool is CPU bound but is set to a size larger than the number of available cores. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| Thread Pool Size | Low | Java | Triggers if a thread pool is CPU bound but is set to a size larger than the number of available cores. |
| Thread Pool Size | Low | Java | Triggers if a thread pool is CPU-bound but is set to a size larger than the number of available cores. |

| Excessive String Concatenation | Low | .NET | Triggers if there is a high ratio of CPU time spent concatenating strings. |
| Thread Pool Size | Low | Java | Triggers if a thread pool is CPU bound but is set to a size larger than the number of available cores. |
| Head of line blocking | Low | Java | Triggers if a queue event gets stuck behind the given activity. |
| Primitive Value Boxing | Low | Java | Triggers if more than 5% of CPU time was spent doing primitive<>object value conversions. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| Primitive Value Boxing | Low | Java | Triggers if more than 5% of CPU time was spent doing primitive<>object value conversions. |
| Primitive Value Boxing | Low | Java | Triggers if more than 5% of CPU time was spent converting values between primitive and object values. |

| Head of line blocking | Low | Java | Triggers if a queue event gets stuck behind the given activity. |
| Primitive Value Boxing | Low | Java | Triggers if more than 5% of CPU time was spent doing primitive<>object value conversions. |
| Duplicated Flags | Low | Java | Triggers if duplicate flags were provided to the runtime (for example, `-Xmx2g -Xmx5g`). This is a problem as it may lead to changes not having the expected effect. |
| Command Line Options Check | Low | Java | Triggers if undocumented, deprecated or non-recommended option flags were detected. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| Command Line Options Check | Low | Java | Triggers if undocumented, deprecated or non-recommended option flags were detected. |
| Command Line Options Check | Low | Java | Triggers if undocumented, deprecated, or non-recommended option flags were detected. |

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants