From 11a32bea630a74503f8be42d403016390803e849 Mon Sep 17 00:00:00 2001 From: Jaroslav Bachorik Date: Tue, 14 May 2024 16:15:20 +0200 Subject: [PATCH 1/2] Add configuration parameter for GC generation count tracking --- .../java/com/datadog/profiling/ddprof/DatadogProfiler.java | 2 ++ .../datadog/profiling/ddprof/DatadogProfilerConfig.java | 7 +++++++ .../java/datadog/trace/api/config/ProfilingConfig.java | 3 +++ 3 files changed, 12 insertions(+) diff --git a/dd-java-agent/agent-profiling/profiling-ddprof/src/main/java/com/datadog/profiling/ddprof/DatadogProfiler.java b/dd-java-agent/agent-profiling/profiling-ddprof/src/main/java/com/datadog/profiling/ddprof/DatadogProfiler.java index ee18ae8e321..31fc6f62271 100644 --- a/dd-java-agent/agent-profiling/profiling-ddprof/src/main/java/com/datadog/profiling/ddprof/DatadogProfiler.java +++ b/dd-java-agent/agent-profiling/profiling-ddprof/src/main/java/com/datadog/profiling/ddprof/DatadogProfiler.java @@ -18,6 +18,7 @@ import static com.datadog.profiling.ddprof.DatadogProfilerConfig.isMemoryLeakProfilingEnabled; import static com.datadog.profiling.ddprof.DatadogProfilerConfig.isResourceNameContextAttributeEnabled; import static com.datadog.profiling.ddprof.DatadogProfilerConfig.isSpanNameContextAttributeEnabled; +import static com.datadog.profiling.ddprof.DatadogProfilerConfig.isTrackingGenerations; import static com.datadog.profiling.ddprof.DatadogProfilerConfig.isWallClockProfilerEnabled; import static com.datadog.profiling.ddprof.DatadogProfilerConfig.omitLineNumbers; import static com.datadog.profiling.utils.ProfilingMode.ALLOCATION; @@ -240,6 +241,7 @@ String cmdStartProfiling(Path file) throws IllegalStateException { cmd.append(",cstack=").append(getCStack(configProvider)); cmd.append(",safemode=").append(getSafeMode(configProvider)); cmd.append(",attributes=").append(String.join(";", orderedContextAttributes)); + cmd.append(",generations=").append(isTrackingGenerations(configProvider)); if (omitLineNumbers(configProvider)) { cmd.append(",linenumbers=f"); } diff --git a/dd-java-agent/agent-profiling/profiling-ddprof/src/main/java/com/datadog/profiling/ddprof/DatadogProfilerConfig.java b/dd-java-agent/agent-profiling/profiling-ddprof/src/main/java/com/datadog/profiling/ddprof/DatadogProfilerConfig.java index c12977666a0..1108c7df338 100644 --- a/dd-java-agent/agent-profiling/profiling-ddprof/src/main/java/com/datadog/profiling/ddprof/DatadogProfilerConfig.java +++ b/dd-java-agent/agent-profiling/profiling-ddprof/src/main/java/com/datadog/profiling/ddprof/DatadogProfilerConfig.java @@ -41,6 +41,8 @@ import static datadog.trace.api.config.ProfilingConfig.PROFILING_DATADOG_PROFILER_WALL_ENABLED; import static datadog.trace.api.config.ProfilingConfig.PROFILING_DATADOG_PROFILER_WALL_INTERVAL; import static datadog.trace.api.config.ProfilingConfig.PROFILING_DATADOG_PROFILER_WALL_INTERVAL_DEFAULT; +import static datadog.trace.api.config.ProfilingConfig.PROFILING_HEAP_TRACK_GENERATIONS; +import static datadog.trace.api.config.ProfilingConfig.PROFILING_HEAP_TRACK_GENERATIONS_DEFAULT; import static datadog.trace.api.config.ProfilingConfig.PROFILING_QUEUEING_TIME_ENABLED; import static datadog.trace.api.config.ProfilingConfig.PROFILING_QUEUEING_TIME_ENABLED_DEFAULT; import static datadog.trace.api.config.ProfilingConfig.PROFILING_STACKDEPTH; @@ -355,6 +357,11 @@ public static boolean isResourceNameContextAttributeEnabled(ConfigProvider confi return configProvider.getBoolean(PROFILING_CONTEXT_ATTRIBUTES_RESOURCE_NAME_ENABLED, false); } + public static boolean isTrackingGenerations(ConfigProvider configProvider) { + return getBoolean( + configProvider, PROFILING_HEAP_TRACK_GENERATIONS, PROFILING_HEAP_TRACK_GENERATIONS_DEFAULT); + } + public static String getString(ConfigProvider configProvider, String key, String defaultValue) { return configProvider.getString(key, configProvider.getString(normalizeKey(key), defaultValue)); } diff --git a/dd-trace-api/src/main/java/datadog/trace/api/config/ProfilingConfig.java b/dd-trace-api/src/main/java/datadog/trace/api/config/ProfilingConfig.java index fb041010d66..043c2e3e50d 100644 --- a/dd-trace-api/src/main/java/datadog/trace/api/config/ProfilingConfig.java +++ b/dd-trace-api/src/main/java/datadog/trace/api/config/ProfilingConfig.java @@ -211,6 +211,9 @@ public final class ProfilingConfig { public static final String PROFILING_HEAP_HISTOGRAM_MODE = "profiling.heap.histogram.mode"; public static final String PROFILING_HEAP_HISTOGRAM_MODE_DEFAULT = "aftergc"; + public static final String PROFILING_HEAP_TRACK_GENERATIONS = "profiling.heap.track.generations"; + public static final boolean PROFILING_HEAP_TRACK_GENERATIONS_DEFAULT = false; + public static final String PROFILING_TIMELINE_EVENTS_ENABLED = "profiling.timeline.events.enabled"; public static final boolean PROFILING_TIMELINE_EVENTS_ENABLED_DEFAULT = false; From 74662788dc714812a3ec200ed1b70ad253223042 Mon Sep 17 00:00:00 2001 From: Jaroslav Bachorik Date: Tue, 18 Jun 2024 11:57:42 +0200 Subject: [PATCH 2/2] Update ddprof to 1.8.0 --- gradle/dependencies.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle index 206a5a904eb..2b9fd85b043 100644 --- a/gradle/dependencies.gradle +++ b/gradle/dependencies.gradle @@ -33,7 +33,7 @@ final class CachedData { testcontainers: '1.19.3', jmc : "8.1.0", autoservice : "1.0-rc7", - ddprof : "1.7.0", + ddprof : "1.8.0", asm : "9.7", cafe_crypto : "0.1.0", lz4 : "1.7.1"