Skip to content

Commit 65f170e

Browse files
authored
Disable jdk.CPUTimeSample when ddprof handles CPU profiling (#10634)
jdk.CPUTimeSample (JEP 518) is enabled as a fallback on JDK 25+/Linux, but was not disabled when ddprof loaded successfully and took over CPU profiling. Both samplers running concurrently adds unnecessary overhead.
1 parent 2fa3c0c commit 65f170e

1 file changed

Lines changed: 7 additions & 4 deletions

File tree

  • dd-java-agent/agent-profiling/profiling-controller-openjdk/src/main/java/com/datadog/profiling/controller/openjdk

dd-java-agent/agent-profiling/profiling-controller-openjdk/src/main/java/com/datadog/profiling/controller/openjdk/OpenJdkOngoingRecording.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,14 +82,19 @@ private void disableOverriddenEvents(ControllerContext.Snapshot context) {
8282
switch (mode) {
8383
case CPU:
8484
{
85-
// CPU execution profiling will take over these events
85+
// CPU execution profiling will take over these events, including
86+
// jdk.CPUTimeSample (JEP 518, JDK 25+) which is enabled as a fallback
87+
// when ddprof is unavailable
8688
log.debug("Disabling built-in CPU profiling events");
8789
recording.disable("jdk.ExecutionSample");
8890
recording.disable("jdk.NativeMethodSample");
91+
recording.disable("jdk.CPUTimeSample");
92+
recording.disable("jdk.CPUTimeSamplesLost");
8993
break;
9094
}
9195
case WALL:
9296
{
97+
// wall-time profiling will take over these events
9398
log.debug("Disabling built-in wall-time tracing events");
9499
recording.disable("jdk.JavaMonitorWait");
95100
recording.disable("jdk.ThreadPark");
@@ -113,9 +118,7 @@ private void disableOverriddenEvents(ControllerContext.Snapshot context) {
113118
break;
114119
}
115120
default:
116-
{
117-
// do nothing
118-
}
121+
break;
119122
}
120123
}
121124
}

0 commit comments

Comments
 (0)