Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 29 additions & 14 deletions content/en/profiler/automated_analysis.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,20 +61,35 @@ You can filter insights by runtime, service, or environment to narrow the list t

Automated Analysis supports finding the following insights:

| Name | Priority | Description |
|---------------------------|----------|-------------|
| Duplicated Flags | Info | 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. |
| Explicit GC | Info | Triggers if there are System.gc() calls. |
| GC Pause Peak Duration | Info | Triggers if at least one GC pause took more than 1 second. |
| GC Setup | Info | 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 |
| Head of line blocking | Info | Triggers if a queue event gets stuck behind the given activity. |
| Primitive Value Boxing | Info | Triggers if more than 5% of CPU time was spent doing primitive<>object value conversions. |
| Deadlocked Threads Detected | Warn | Triggers if max number of deadlocked threads over query context is bigger than 0. |
| GC Pauses | Warn | Triggers if more than 10% of time was spent in GC pauses. |
| Options | Warn | Triggers if undocumented, deprecated or non-recommended option flags were detected. |
| Stackdepth Setting | Warn | Triggers if events were found with truncated stacktraces which may make it hard to understand profiling data. |
| Thrown Exceptions | Warn | Triggers when the rate of thrown (caught and uncaught) exceptions per minute goes above a threshold (defaults to 10K) |
| VMOperation Peak Duration | Warn | 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. |
| Name | Priority | Supported Runtime | Description |
|------------------------------|------------|-------------------------|-------------|
| 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. |

| 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. |

| 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. |

| 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. |

| Deadlocked Threads Detected | Medium | Java | Triggers if max number of deadlocked threads over query context is bigger than 0. |
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
| Deadlocked Threads Detected | Medium | Java | Triggers if max number of deadlocked threads over query context is bigger than 0. |
| Deadlocked Threads Detected | Medium | Java | Triggers if max number of deadlocked threads over query context is greater 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

| 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) |
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
| Thrown Exceptions | Medium | Java | Triggers when the rate of thrown (caught and uncaught) exceptions per minute goes above a threshold (defaults to 10K) |
| 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. |
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
| 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. |
| VMOperation Peak Duration | Medium | Java | Triggers if a blocking VM operation (or combination of operations close in time) takes more than two 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. |

| 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. |

| 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. |

| 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. |

| 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. |

| GC Overhead | Low | Java, Ruby, Go, Node | Triggers if more than 20% of CPU time is related to GC activities or allocation overhead. |
| Context Switches | Low | Java | Triggers if the rate of context switches on the underlying system is greater than 50k per second. |


## Further reading

Expand Down
Loading