Skip to content

Commit 0af1b60

Browse files
jbachorikclaude
andcommitted
Add unified profiling feature gate config keys
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 4b85865 commit 0af1b60

File tree

9 files changed

+273
-16
lines changed

9 files changed

+273
-16
lines changed

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

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,27 @@
1717

1818
import static com.datadog.profiling.controller.ProfilingSupport.*;
1919
import static datadog.environment.JavaVirtualMachine.isJavaVersionAtLeast;
20+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_CPU_ENABLED;
21+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_CPU_ENABLED_DEFAULT;
22+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_EXCEPTION_ENABLED;
23+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_EXCEPTION_ENABLED_DEFAULT;
2024
import static datadog.trace.api.config.ProfilingConfig.PROFILING_HEAP_HISTOGRAM_ENABLED;
2125
import static datadog.trace.api.config.ProfilingConfig.PROFILING_HEAP_HISTOGRAM_ENABLED_DEFAULT;
2226
import static datadog.trace.api.config.ProfilingConfig.PROFILING_HEAP_HISTOGRAM_MODE;
2327
import static datadog.trace.api.config.ProfilingConfig.PROFILING_HEAP_HISTOGRAM_MODE_DEFAULT;
28+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_IO_ENABLED;
29+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_IO_ENABLED_DEFAULT;
30+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_LOCK_ENABLED;
31+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_LOCK_ENABLED_DEFAULT;
2432
import static datadog.trace.api.config.ProfilingConfig.PROFILING_QUEUEING_TIME_ENABLED;
2533
import static datadog.trace.api.config.ProfilingConfig.PROFILING_QUEUEING_TIME_ENABLED_DEFAULT;
2634
import static datadog.trace.api.config.ProfilingConfig.PROFILING_QUEUEING_TIME_THRESHOLD_MILLIS;
2735
import static datadog.trace.api.config.ProfilingConfig.PROFILING_QUEUEING_TIME_THRESHOLD_MILLIS_DEFAULT;
36+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_THREAD_ENABLED;
37+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_THREAD_ENABLED_DEFAULT;
2838
import static datadog.trace.api.config.ProfilingConfig.PROFILING_ULTRA_MINIMAL;
39+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_WALL_ENABLED;
40+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_WALL_ENABLED_DEFAULT;
2941

3042
import com.datadog.profiling.controller.ConfigurationException;
3143
import com.datadog.profiling.controller.Controller;
@@ -264,6 +276,48 @@ ProfilingConfig.PROFILING_ALLOCATION_ENABLED, isObjectAllocationSampleAvailable(
264276
"Aggregated smaps collection is disabled in the config");
265277
}
266278

279+
// Feature gates — unified profiling.*.enabled keys
280+
281+
if (!configProvider.getBoolean(PROFILING_CPU_ENABLED, PROFILING_CPU_ENABLED_DEFAULT)) {
282+
disableEvent(recordingSettings, "jdk.ExecutionSample", "CPU profiling is disabled");
283+
disableEvent(recordingSettings, "jdk.NativeMethodSample", "CPU profiling is disabled");
284+
disableEvent(recordingSettings, "jdk.CPUTimeSample", "CPU profiling is disabled");
285+
disableEvent(recordingSettings, "jdk.CPUTimeSamplesLost", "CPU profiling is disabled");
286+
}
287+
288+
if (!configProvider.getBoolean(PROFILING_WALL_ENABLED, PROFILING_WALL_ENABLED_DEFAULT)) {
289+
disableEvent(recordingSettings, "jdk.JavaMonitorWait", "wall-clock profiling is disabled");
290+
disableEvent(recordingSettings, "jdk.ThreadPark", "wall-clock profiling is disabled");
291+
disableEvent(recordingSettings, "jdk.ThreadSleep", "wall-clock profiling is disabled");
292+
}
293+
294+
if (!configProvider.getBoolean(
295+
PROFILING_EXCEPTION_ENABLED, PROFILING_EXCEPTION_ENABLED_DEFAULT)) {
296+
disableEvent(recordingSettings, "datadog.ExceptionSample", "exception profiling is disabled");
297+
disableEvent(recordingSettings, "datadog.ExceptionCount", "exception profiling is disabled");
298+
}
299+
300+
if (!configProvider.getBoolean(PROFILING_IO_ENABLED, PROFILING_IO_ENABLED_DEFAULT)) {
301+
disableEvent(recordingSettings, "jdk.FileRead", "I/O profiling is disabled");
302+
disableEvent(recordingSettings, "jdk.FileWrite", "I/O profiling is disabled");
303+
disableEvent(recordingSettings, "jdk.FileForce", "I/O profiling is disabled");
304+
disableEvent(recordingSettings, "jdk.SocketRead", "I/O profiling is disabled");
305+
disableEvent(recordingSettings, "jdk.SocketWrite", "I/O profiling is disabled");
306+
}
307+
308+
if (!configProvider.getBoolean(PROFILING_LOCK_ENABLED, PROFILING_LOCK_ENABLED_DEFAULT)) {
309+
disableEvent(recordingSettings, "jdk.JavaMonitorEnter", "lock profiling is disabled");
310+
disableEvent(recordingSettings, "jdk.BiasedLockRevocation", "lock profiling is disabled");
311+
disableEvent(recordingSettings, "jdk.BiasedLockSelfRevocation", "lock profiling is disabled");
312+
disableEvent(
313+
recordingSettings, "jdk.BiasedLockClassRevocation", "lock profiling is disabled");
314+
}
315+
316+
if (!configProvider.getBoolean(PROFILING_THREAD_ENABLED, PROFILING_THREAD_ENABLED_DEFAULT)) {
317+
disableEvent(recordingSettings, "jdk.ThreadStart", "thread profiling is disabled");
318+
disableEvent(recordingSettings, "jdk.ThreadEnd", "thread profiling is disabled");
319+
}
320+
267321
// Warn users for expensive events
268322

269323
if (!isOldObjectSampleAvailable() && isEventEnabled(recordingSettings, "jdk.OldObjectSample")) {

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

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,55 @@ private String getProfilerConfig() {
136136
.append(proxyPassword != null ? "[REDACTED]" : null)
137137
.append(" (default: null)\n");
138138

139+
sb.append("\n=== Feature Gates ===\n");
140+
appendConfig(
141+
sb,
142+
"CPU Profiling Enabled",
143+
configProvider.getBoolean(
144+
ProfilingConfig.PROFILING_CPU_ENABLED, ProfilingConfig.PROFILING_CPU_ENABLED_DEFAULT),
145+
ProfilingConfig.PROFILING_CPU_ENABLED_DEFAULT);
146+
appendConfig(
147+
sb,
148+
"Wall Profiling Enabled",
149+
configProvider.getBoolean(
150+
ProfilingConfig.PROFILING_WALL_ENABLED, ProfilingConfig.PROFILING_WALL_ENABLED_DEFAULT),
151+
ProfilingConfig.PROFILING_WALL_ENABLED_DEFAULT);
152+
appendConfig(
153+
sb,
154+
"Exception Profiling Enabled",
155+
configProvider.getBoolean(
156+
ProfilingConfig.PROFILING_EXCEPTION_ENABLED,
157+
ProfilingConfig.PROFILING_EXCEPTION_ENABLED_DEFAULT),
158+
ProfilingConfig.PROFILING_EXCEPTION_ENABLED_DEFAULT);
159+
appendConfig(
160+
sb,
161+
"I/O Profiling Enabled",
162+
configProvider.getBoolean(
163+
ProfilingConfig.PROFILING_IO_ENABLED, ProfilingConfig.PROFILING_IO_ENABLED_DEFAULT),
164+
ProfilingConfig.PROFILING_IO_ENABLED_DEFAULT);
165+
appendConfig(
166+
sb,
167+
"Lock Profiling Enabled",
168+
configProvider.getBoolean(
169+
ProfilingConfig.PROFILING_LOCK_ENABLED, ProfilingConfig.PROFILING_LOCK_ENABLED_DEFAULT),
170+
ProfilingConfig.PROFILING_LOCK_ENABLED_DEFAULT);
171+
appendConfig(
172+
sb,
173+
"Thread Profiling Enabled",
174+
configProvider.getBoolean(
175+
ProfilingConfig.PROFILING_THREAD_ENABLED,
176+
ProfilingConfig.PROFILING_THREAD_ENABLED_DEFAULT),
177+
ProfilingConfig.PROFILING_THREAD_ENABLED_DEFAULT);
178+
appendConfig(
179+
sb,
180+
"Direct Memory Profiling Enabled",
181+
configProvider.getBoolean(
182+
ProfilingConfig.PROFILING_DIRECT_MEMORY_ENABLED,
183+
configProvider.getBoolean(
184+
ProfilingConfig.PROFILING_DIRECT_ALLOCATION_ENABLED,
185+
ProfilingConfig.PROFILING_DIRECT_MEMORY_ENABLED_DEFAULT)),
186+
ProfilingConfig.PROFILING_DIRECT_MEMORY_ENABLED_DEFAULT);
187+
139188
sb.append("\n=== Allocation Profiling ===\n");
140189
boolean allocDefault = ProfilingSupport.isObjectAllocationSampleAvailable();
141190
boolean allocEnabled =

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

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,13 @@ public String toString() {
9494
protected final String uploadCompression;
9595
protected final boolean allocationProfilingEnabled;
9696
protected final boolean heapProfilingEnabled;
97+
protected final boolean cpuProfilingEnabled;
98+
protected final boolean wallProfilingEnabled;
99+
protected final boolean exceptionProfilingEnabled;
100+
protected final boolean ioProfilingEnabled;
101+
protected final boolean lockProfilingEnabled;
102+
protected final boolean threadProfilingEnabled;
103+
protected final boolean directMemoryProfilingEnabled;
97104
protected final boolean startForceFirst;
98105
protected final String templateOverride;
99106
protected final int exceptionSampleLimit;
@@ -141,6 +148,32 @@ protected ProfilerSettingsSupport(
141148
heapProfilingEnabled =
142149
configProvider.getBoolean(
143150
ProfilingConfig.PROFILING_HEAP_ENABLED, ProfilingSupport.isLiveHeapProfilingSafe());
151+
cpuProfilingEnabled =
152+
configProvider.getBoolean(
153+
ProfilingConfig.PROFILING_CPU_ENABLED, ProfilingConfig.PROFILING_CPU_ENABLED_DEFAULT);
154+
wallProfilingEnabled =
155+
configProvider.getBoolean(
156+
ProfilingConfig.PROFILING_WALL_ENABLED, ProfilingConfig.PROFILING_WALL_ENABLED_DEFAULT);
157+
exceptionProfilingEnabled =
158+
configProvider.getBoolean(
159+
ProfilingConfig.PROFILING_EXCEPTION_ENABLED,
160+
ProfilingConfig.PROFILING_EXCEPTION_ENABLED_DEFAULT);
161+
ioProfilingEnabled =
162+
configProvider.getBoolean(
163+
ProfilingConfig.PROFILING_IO_ENABLED, ProfilingConfig.PROFILING_IO_ENABLED_DEFAULT);
164+
lockProfilingEnabled =
165+
configProvider.getBoolean(
166+
ProfilingConfig.PROFILING_LOCK_ENABLED, ProfilingConfig.PROFILING_LOCK_ENABLED_DEFAULT);
167+
threadProfilingEnabled =
168+
configProvider.getBoolean(
169+
ProfilingConfig.PROFILING_THREAD_ENABLED,
170+
ProfilingConfig.PROFILING_THREAD_ENABLED_DEFAULT);
171+
directMemoryProfilingEnabled =
172+
configProvider.getBoolean(
173+
ProfilingConfig.PROFILING_DIRECT_MEMORY_ENABLED,
174+
configProvider.getBoolean(
175+
ProfilingConfig.PROFILING_DIRECT_ALLOCATION_ENABLED,
176+
ProfilingConfig.PROFILING_DIRECT_MEMORY_ENABLED_DEFAULT));
144177
startForceFirst =
145178
configProvider.getBoolean(
146179
ProfilingConfig.PROFILING_START_FORCE_FIRST,
@@ -293,6 +326,13 @@ public String toString() {
293326
+ ", uploadCompression='" + uploadCompression + '\''
294327
+ ", allocationProfilingEnabled=" + allocationProfilingEnabled
295328
+ ", heapProfilingEnabled=" + heapProfilingEnabled
329+
+ ", cpuProfilingEnabled=" + cpuProfilingEnabled
330+
+ ", wallProfilingEnabled=" + wallProfilingEnabled
331+
+ ", exceptionProfilingEnabled=" + exceptionProfilingEnabled
332+
+ ", ioProfilingEnabled=" + ioProfilingEnabled
333+
+ ", lockProfilingEnabled=" + lockProfilingEnabled
334+
+ ", threadProfilingEnabled=" + threadProfilingEnabled
335+
+ ", directMemoryProfilingEnabled=" + directMemoryProfilingEnabled
296336
+ ", startForceFirst=" + startForceFirst
297337
+ ", templateOverride='" + templateOverride + '\''
298338
+ ", exceptionSampleLimit=" + exceptionSampleLimit

dd-java-agent/agent-profiling/profiling-ddprof/src/main/java/com/datadog/profiling/ddprof/DatadogProfilerConfig.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import static datadog.trace.api.config.ProfilingConfig.PROFILING_CONTEXT_ATTRIBUTES;
77
import static datadog.trace.api.config.ProfilingConfig.PROFILING_CONTEXT_ATTRIBUTES_RESOURCE_NAME_ENABLED;
88
import static datadog.trace.api.config.ProfilingConfig.PROFILING_CONTEXT_ATTRIBUTES_SPAN_NAME_ENABLED;
9+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_CPU_ENABLED;
10+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_CPU_ENABLED_DEFAULT;
911
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DATADOG_PROFILER_ALLOC_ENABLED;
1012
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DATADOG_PROFILER_ALLOC_INTERVAL;
1113
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DATADOG_PROFILER_ALLOC_INTERVAL_DEFAULT;
@@ -51,6 +53,8 @@
5153
import static datadog.trace.api.config.ProfilingConfig.PROFILING_STACKDEPTH;
5254
import static datadog.trace.api.config.ProfilingConfig.PROFILING_STACKDEPTH_DEFAULT;
5355
import static datadog.trace.api.config.ProfilingConfig.PROFILING_ULTRA_MINIMAL;
56+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_WALL_ENABLED;
57+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_WALL_ENABLED_DEFAULT;
5458
import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_ENABLED;
5559

5660
import com.datadog.profiling.controller.ProfilingSupport;
@@ -67,6 +71,9 @@ public class DatadogProfilerConfig {
6771
private static final Logger log = LoggerFactory.getLogger(DatadogProfilerConfig.class);
6872

6973
public static boolean isCpuProfilerEnabled(ConfigProvider configProvider) {
74+
if (!configProvider.getBoolean(PROFILING_CPU_ENABLED, PROFILING_CPU_ENABLED_DEFAULT)) {
75+
return false;
76+
}
7077
return getBoolean(
7178
configProvider,
7279
PROFILING_DATADOG_PROFILER_CPU_ENABLED,
@@ -117,6 +124,9 @@ public static boolean isWallClockProfilerEnabled() {
117124
}
118125

119126
public static boolean isWallClockProfilerEnabled(ConfigProvider configProvider) {
127+
if (!configProvider.getBoolean(PROFILING_WALL_ENABLED, PROFILING_WALL_ENABLED_DEFAULT)) {
128+
return false;
129+
}
120130
boolean isUltraMinimal = getBoolean(configProvider, PROFILING_ULTRA_MINIMAL, false);
121131
boolean isTracingEnabled = configProvider.getBoolean(TRACE_ENABLED, true);
122132
boolean disableUnlessOptedIn = isUltraMinimal || !isTracingEnabled || isJ9();

dd-java-agent/instrumentation/java/java-nio-1.8/src/main/java/datadog/trace/instrumentation/directbytebuffer/ByteBufferInstrumentation.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
44
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DIRECT_ALLOCATION_ENABLED;
5-
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DIRECT_ALLOCATION_ENABLED_DEFAULT;
5+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DIRECT_MEMORY_ENABLED;
6+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DIRECT_MEMORY_ENABLED_DEFAULT;
67
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
78
import static net.bytebuddy.matcher.ElementMatchers.isStatic;
89
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
@@ -25,11 +26,15 @@ public ByteBufferInstrumentation() {
2526

2627
@Override
2728
public boolean isEnabled() {
29+
ConfigProvider cp = ConfigProvider.getInstance();
30+
boolean enabled =
31+
cp.getBoolean(
32+
PROFILING_DIRECT_MEMORY_ENABLED,
33+
cp.getBoolean(
34+
PROFILING_DIRECT_ALLOCATION_ENABLED, PROFILING_DIRECT_MEMORY_ENABLED_DEFAULT));
2835
return JavaVirtualMachine.isJavaVersionAtLeast(11)
2936
&& super.isEnabled()
30-
&& ConfigProvider.getInstance()
31-
.getBoolean(
32-
PROFILING_DIRECT_ALLOCATION_ENABLED, PROFILING_DIRECT_ALLOCATION_ENABLED_DEFAULT)
37+
&& enabled
3338
&& Platform.hasJfr();
3439
}
3540

dd-java-agent/instrumentation/java/java-nio-1.8/src/main/java/datadog/trace/instrumentation/directbytebuffer/DirectByteBufferInstrumentation.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package datadog.trace.instrumentation.directbytebuffer;
22

33
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DIRECT_ALLOCATION_ENABLED;
4-
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DIRECT_ALLOCATION_ENABLED_DEFAULT;
4+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DIRECT_MEMORY_ENABLED;
5+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DIRECT_MEMORY_ENABLED_DEFAULT;
56
import static net.bytebuddy.matcher.ElementMatchers.isConstructor;
67
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
78
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
@@ -23,11 +24,15 @@ public DirectByteBufferInstrumentation() {
2324

2425
@Override
2526
public boolean isEnabled() {
27+
ConfigProvider cp = ConfigProvider.getInstance();
28+
boolean enabled =
29+
cp.getBoolean(
30+
PROFILING_DIRECT_MEMORY_ENABLED,
31+
cp.getBoolean(
32+
PROFILING_DIRECT_ALLOCATION_ENABLED, PROFILING_DIRECT_MEMORY_ENABLED_DEFAULT));
2633
return JavaVirtualMachine.isJavaVersionAtLeast(11)
2734
&& super.isEnabled()
28-
&& ConfigProvider.getInstance()
29-
.getBoolean(
30-
PROFILING_DIRECT_ALLOCATION_ENABLED, PROFILING_DIRECT_ALLOCATION_ENABLED_DEFAULT)
35+
&& enabled
3136
&& Platform.hasJfr();
3237
}
3338

dd-java-agent/instrumentation/java/java-nio-1.8/src/main/java/datadog/trace/instrumentation/directbytebuffer/FileChannelImplInstrumentation.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
44
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DIRECT_ALLOCATION_ENABLED;
5-
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DIRECT_ALLOCATION_ENABLED_DEFAULT;
5+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DIRECT_MEMORY_ENABLED;
6+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DIRECT_MEMORY_ENABLED_DEFAULT;
67
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
78
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
89
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
@@ -24,11 +25,15 @@ public FileChannelImplInstrumentation() {
2425

2526
@Override
2627
public boolean isEnabled() {
28+
ConfigProvider cp = ConfigProvider.getInstance();
29+
boolean enabled =
30+
cp.getBoolean(
31+
PROFILING_DIRECT_MEMORY_ENABLED,
32+
cp.getBoolean(
33+
PROFILING_DIRECT_ALLOCATION_ENABLED, PROFILING_DIRECT_MEMORY_ENABLED_DEFAULT));
2734
return JavaVirtualMachine.isJavaVersionAtLeast(11)
2835
&& super.isEnabled()
29-
&& ConfigProvider.getInstance()
30-
.getBoolean(
31-
PROFILING_DIRECT_ALLOCATION_ENABLED, PROFILING_DIRECT_ALLOCATION_ENABLED_DEFAULT)
36+
&& enabled
3237
&& Platform.hasJfr();
3338
}
3439

dd-trace-api/src/main/java/datadog/trace/api/config/ProfilingConfig.java

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,36 @@ public final class ProfilingConfig {
1010
public static final String PROFILING_ENABLED = "profiling.enabled";
1111
public static final boolean PROFILING_ENABLED_DEFAULT = false;
1212
public static final String PROFILING_ALLOCATION_ENABLED = "profiling.allocation.enabled";
13+
public static final boolean PROFILING_ALLOCATION_ENABLED_DEFAULT = true;
1314
public static final String PROFILING_HEAP_ENABLED = "profiling.heap.enabled";
14-
public static final boolean PROFILING_HEAP_ENABLED_DEFAULT = false;
15+
16+
/**
17+
* @deprecated The default is now computed dynamically based on JVM capabilities.
18+
*/
19+
@Deprecated public static final boolean PROFILING_HEAP_ENABLED_DEFAULT = false;
20+
21+
public static final String PROFILING_CPU_ENABLED = "profiling.cpu.enabled";
22+
public static final boolean PROFILING_CPU_ENABLED_DEFAULT = true;
23+
public static final String PROFILING_WALL_ENABLED = "profiling.wall.enabled";
24+
public static final boolean PROFILING_WALL_ENABLED_DEFAULT = true;
25+
public static final String PROFILING_EXCEPTION_ENABLED = "profiling.exception.enabled";
26+
public static final boolean PROFILING_EXCEPTION_ENABLED_DEFAULT = true;
27+
public static final String PROFILING_IO_ENABLED = "profiling.io.enabled";
28+
public static final boolean PROFILING_IO_ENABLED_DEFAULT = true;
29+
public static final String PROFILING_LOCK_ENABLED = "profiling.lock.enabled";
30+
public static final boolean PROFILING_LOCK_ENABLED_DEFAULT = true;
31+
public static final String PROFILING_THREAD_ENABLED = "profiling.thread.enabled";
32+
public static final boolean PROFILING_THREAD_ENABLED_DEFAULT = true;
33+
34+
/**
35+
* Unified gate for direct memory (native ByteBuffer / FileChannel) profiling.
36+
*
37+
* @see #PROFILING_DIRECT_ALLOCATION_ENABLED
38+
*/
39+
public static final String PROFILING_DIRECT_MEMORY_ENABLED = "profiling.direct.memory.enabled";
40+
41+
public static final boolean PROFILING_DIRECT_MEMORY_ENABLED_DEFAULT = false;
42+
1543
@Deprecated // Use dd.site instead
1644
public static final String PROFILING_URL = "profiling.url";
1745
@Deprecated // Use dd.api-key instead
@@ -79,9 +107,14 @@ public final class ProfilingConfig {
79107

80108
public static final String PROFILING_DATADOG_PROFILER_ENABLED = "profiling.ddprof.enabled";
81109

110+
/**
111+
* @deprecated Use {@link #PROFILING_DIRECT_MEMORY_ENABLED} instead.
112+
*/
113+
@Deprecated
82114
public static final String PROFILING_DIRECT_ALLOCATION_ENABLED =
83115
"profiling.directallocation.enabled";
84-
public static final boolean PROFILING_DIRECT_ALLOCATION_ENABLED_DEFAULT = false;
116+
117+
@Deprecated public static final boolean PROFILING_DIRECT_ALLOCATION_ENABLED_DEFAULT = false;
85118

86119
public static final String PROFILING_STACKDEPTH = "profiling.stackdepth";
87120
public static final int PROFILING_STACKDEPTH_DEFAULT = 512;

0 commit comments

Comments
 (0)