Skip to content

Commit 7172606

Browse files
authored
Add configuration option for liveheap subsampling (#7380)
1 parent 594de2e commit 7172606

File tree

4 files changed

+18
-1
lines changed

4 files changed

+18
-1
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static com.datadog.profiling.ddprof.DatadogProfilerConfig.getCStack;
55
import static com.datadog.profiling.ddprof.DatadogProfilerConfig.getContextAttributes;
66
import static com.datadog.profiling.ddprof.DatadogProfilerConfig.getCpuInterval;
7+
import static com.datadog.profiling.ddprof.DatadogProfilerConfig.getLiveHeapSamplePercent;
78
import static com.datadog.profiling.ddprof.DatadogProfilerConfig.getLogLevel;
89
import static com.datadog.profiling.ddprof.DatadogProfilerConfig.getSafeMode;
910
import static com.datadog.profiling.ddprof.DatadogProfilerConfig.getSchedulingEvent;
@@ -281,6 +282,8 @@ String cmdStartProfiling(Path file) throws IllegalStateException {
281282
}
282283
if (profilingModes.contains(MEMLEAK)) {
283284
cmd.append(isLiveHeapSizeTrackingEnabled(configProvider) ? 'L' : 'l');
285+
cmd.append(':')
286+
.append(String.format("%.2f", getLiveHeapSamplePercent(configProvider) / 100.0d));
284287
}
285288
}
286289
String cmdString = cmd.toString();

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DATADOG_PROFILER_LIVEHEAP_ENABLED;
2323
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DATADOG_PROFILER_LIVEHEAP_ENABLED_DEFAULT;
2424
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DATADOG_PROFILER_LIVEHEAP_INTERVAL;
25+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DATADOG_PROFILER_LIVEHEAP_SAMPLE_PERCENT;
26+
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DATADOG_PROFILER_LIVEHEAP_SAMPLE_PERCENT_DEFAULT;
2527
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DATADOG_PROFILER_LIVEHEAP_TRACK_HEAPSIZE;
2628
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DATADOG_PROFILER_LIVEHEAP_TRACK_HEAPSIZE_DEFAFULT;
2729
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DATADOG_PROFILER_LOG_LEVEL;
@@ -224,6 +226,13 @@ public static boolean isLiveHeapSizeTrackingEnabled(ConfigProvider configProvide
224226
PROFILING_DATADOG_PROFILER_LIVEHEAP_TRACK_HEAPSIZE_DEFAFULT);
225227
}
226228

229+
public static int getLiveHeapSamplePercent(ConfigProvider configProvider) {
230+
return getInteger(
231+
configProvider,
232+
PROFILING_DATADOG_PROFILER_LIVEHEAP_SAMPLE_PERCENT,
233+
PROFILING_DATADOG_PROFILER_LIVEHEAP_SAMPLE_PERCENT_DEFAULT);
234+
}
235+
227236
public static long getMemleakInterval(ConfigProvider configProvider) {
228237
long maxheap = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getMax();
229238
long memleakIntervalDefault =

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,11 @@ public final class ProfilingConfig {
162162
public static final String PROFILING_DATADOG_PROFILER_LIVEHEAP_TRACK_HEAPSIZE =
163163
"profiling.ddprof.liveheap.track_size.enabled";
164164
public static final boolean PROFILING_DATADOG_PROFILER_LIVEHEAP_TRACK_HEAPSIZE_DEFAFULT = true;
165+
public static final String PROFILING_DATADOG_PROFILER_LIVEHEAP_SAMPLE_PERCENT =
166+
"profiling.ddprof.liveheap.sample_percent";
167+
public static final int PROFILING_DATADOG_PROFILER_LIVEHEAP_SAMPLE_PERCENT_DEFAULT =
168+
50; // default to 10% of allocation samples
169+
165170
public static final String PROFILING_ENDPOINT_COLLECTION_ENABLED =
166171
"profiling.endpoint.collection.enabled";
167172
public static final boolean PROFILING_ENDPOINT_COLLECTION_ENABLED_DEFAULT = true;

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ moshi = '1.11.0'
2929
testcontainers = '1.19.3'
3030
jmc = "8.1.0"
3131
autoservice = "1.0-rc7"
32-
ddprof = "1.9.0"
32+
ddprof = "1.12.0"
3333
asm = "9.7"
3434
cafe_crypto = "0.1.0"
3535
lz4 = "1.7.1"

0 commit comments

Comments
 (0)