-
Notifications
You must be signed in to change notification settings - Fork 331
Expand file tree
/
Copy pathProfilingConfig.java
More file actions
277 lines (217 loc) · 14.1 KB
/
ProfilingConfig.java
File metadata and controls
277 lines (217 loc) · 14.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
package datadog.trace.api.config;
/**
* These config options will only work with dd-java-agent, not with dd-trace-ot.
*
* <p>Configure via system properties, environment variables, or config properties file. See online
* documentation for details.
*/
public final class ProfilingConfig {
public static final String PROFILING_ENABLED = "profiling.enabled";
public static final boolean PROFILING_ENABLED_DEFAULT = false;
public static final String PROFILING_ALLOCATION_ENABLED = "profiling.allocation.enabled";
public static final String PROFILING_HEAP_ENABLED = "profiling.heap.enabled";
/**
* @deprecated The default is now computed dynamically based on JVM capabilities.
*/
@Deprecated public static final boolean PROFILING_HEAP_ENABLED_DEFAULT = false;
@Deprecated // Use dd.site instead
public static final String PROFILING_URL = "profiling.url";
@Deprecated // Use dd.api-key instead
public static final String PROFILING_API_KEY_OLD = "profiling.api-key";
@Deprecated // Use dd.api-key-file instead
public static final String PROFILING_API_KEY_FILE_OLD = "profiling.api-key-file";
@Deprecated // Use dd.api-key instead
public static final String PROFILING_API_KEY_VERY_OLD = "profiling.apikey";
@Deprecated // Use dd.api-key-file instead
public static final String PROFILING_API_KEY_FILE_VERY_OLD = "profiling.apikey.file";
public static final String PROFILING_TAGS = "profiling.tags";
public static final String PROFILING_START_DELAY = "profiling.start-delay";
public static final int PROFILING_START_DELAY_DEFAULT = 10;
public static final String PROFILING_START_FORCE_FIRST = "profiling.start-force-first";
public static final boolean PROFILING_START_FORCE_FIRST_DEFAULT = false;
public static final String PROFILING_UPLOAD_PERIOD = "profiling.upload.period";
public static final int PROFILING_UPLOAD_PERIOD_DEFAULT = 60;
public static final String PROFILING_TEMPLATE_OVERRIDE_FILE =
"profiling.jfr-template-override-file";
public static final String PROFILING_UPLOAD_TIMEOUT = "profiling.upload.timeout";
public static final int PROFILING_UPLOAD_TIMEOUT_DEFAULT = 30;
/**
* @deprecated Use {@link #PROFILING_DEBUG_UPLOAD_COMPRESSION} instead. This will be removed in a
* future release.
*/
@Deprecated
public static final String PROFILING_UPLOAD_COMPRESSION = "profiling.upload.compression";
public static final String PROFILING_PROXY_HOST = "profiling.proxy.host";
public static final String PROFILING_PROXY_PORT = "profiling.proxy.port";
public static final int PROFILING_PROXY_PORT_DEFAULT = 8080;
public static final String PROFILING_PROXY_USERNAME = "profiling.proxy.username";
public static final String PROFILING_PROXY_PASSWORD = "profiling.proxy.password";
public static final String PROFILING_EXCEPTION_SAMPLE_LIMIT = "profiling.exception.sample.limit";
public static final int PROFILING_EXCEPTION_SAMPLE_LIMIT_DEFAULT = 10_000;
public static final String PROFILING_EXCEPTION_RECORD_MESSAGE =
"profiling.exception.record.message";
public static final boolean PROFILING_EXCEPTION_RECORD_MESSAGE_DEFAULT = true;
public static final String PROFILING_BACKPRESSURE_SAMPLING_ENABLED =
"profiling.backpressure.sampling.enabled";
public static final boolean PROFILING_BACKPRESSURE_SAMPLING_ENABLED_DEFAULT = false;
public static final int PROFILING_BACKPRESSURE_SAMPLE_LIMIT_DEFAULT = 10_000;
public static final String PROFILING_DIRECT_ALLOCATION_SAMPLE_LIMIT =
"profiling.direct.allocation.sample.limit";
public static final int PROFILING_DIRECT_ALLOCATION_SAMPLE_LIMIT_DEFAULT = 2_000;
public static final String PROFILING_EXCEPTION_HISTOGRAM_TOP_ITEMS =
"profiling.exception.histogram.top-items";
public static final int PROFILING_EXCEPTION_HISTOGRAM_TOP_ITEMS_DEFAULT = 50;
public static final String PROFILING_EXCEPTION_HISTOGRAM_MAX_COLLECTION_SIZE =
"profiling.exception.histogram.max-collection-size";
public static final int PROFILING_EXCEPTION_HISTOGRAM_MAX_COLLECTION_SIZE_DEFAULT = 10_000;
public static final String PROFILING_EXCLUDE_AGENT_THREADS = "profiling.exclude.agent-threads";
public static final String PROFILING_HOTSPOTS_ENABLED = "profiling.hotspots.enabled";
public static final String PROFILING_AUXILIARY_TYPE = "profiling.auxiliary";
public static final String PROFILING_AUXILIARY_TYPE_DEFAULT = "none";
public static final String PROFILING_JFR_REPOSITORY_BASE = "profiling.jfr.repository.base";
public static final String PROFILING_JFR_REPOSITORY_BASE_DEFAULT =
System.getProperty("java.io.tmpdir") + "/dd/jfr";
public static final String PROFILING_DATADOG_PROFILER_ENABLED = "profiling.ddprof.enabled";
public static final String PROFILING_DIRECT_ALLOCATION_ENABLED =
"profiling.directallocation.enabled";
public static final boolean PROFILING_DIRECT_ALLOCATION_ENABLED_DEFAULT = false;
public static final String PROFILING_STACKDEPTH = "profiling.stackdepth";
public static final int PROFILING_STACKDEPTH_DEFAULT = 512;
// Java profiler lib needs to be extracted from JAR and placed into the scratch location
// By default the scratch is the os temp directory but can be overridden by user
public static final String PROFILING_DATADOG_PROFILER_SCRATCH = "profiling.ddprof.scratch";
public static final String PROFILING_DATADOG_PROFILER_LIBPATH = "profiling.ddprof.debug.lib";
public static final String PROFILING_DATADOG_PROFILER_ALLOC_ENABLED =
"profiling.ddprof.alloc.enabled";
public static final String PROFILING_DATADOG_PROFILER_ALLOC_INTERVAL =
"profiling.ddprof.alloc.interval";
public static final int PROFILING_DATADOG_PROFILER_ALLOC_INTERVAL_DEFAULT = 256 * 1024;
public static final String PROFILING_DATADOG_PROFILER_CPU_ENABLED =
"profiling.ddprof.cpu.enabled";
public static final boolean PROFILING_DATADOG_PROFILER_CPU_ENABLED_DEFAULT = true;
public static final String PROFILING_DATADOG_PROFILER_CPU_INTERVAL =
"profiling.ddprof.cpu.interval.ms";
public static final int PROFILING_DATADOG_PROFILER_CPU_INTERVAL_DEFAULT = 10;
public static final String PROFILING_DATADOG_PROFILER_WALL_ENABLED =
"profiling.ddprof.wall.enabled";
public static final boolean PROFILING_DATADOG_PROFILER_WALL_ENABLED_DEFAULT = true;
public static final String PROFILING_DATADOG_PROFILER_WALL_INTERVAL =
"profiling.ddprof.wall.interval.ms";
public static final int PROFILING_DATADOG_PROFILER_WALL_INTERVAL_DEFAULT = 50;
public static final int PROFILING_DATADOG_PROFILER_J9_CPU_INTERVAL_DEFAULT = 50;
public static final String PROFILING_DATADOG_PROFILER_WALL_COLLAPSING =
"profiling.ddprof.wall.collapsing";
public static final boolean PROFILING_DATADOG_PROFILER_WALL_COLLAPSING_DEFAULT = true;
public static final String PROFILING_DATADOG_PROFILER_WALL_CONTEXT_FILTER =
"profiling.ddprof.wall.context.filter";
public static final boolean PROFILING_DATADOG_PROFILER_WALL_CONTEXT_FILTER_DEFAULT = true;
public static final String PROFILING_DATADOG_PROFILER_SCHEDULING_EVENT =
"profiling.experimental.ddprof.scheduling.event";
public static final String PROFILING_DATADOG_PROFILER_SCHEDULING_EVENT_INTERVAL =
"profiling.experimental.ddprof.scheduling.event.interval";
public static final String PROFILING_PROCESS_CONTEXT_ENABLED =
"profiling.experimental.process_context.enabled";
public static final boolean PROFILING_PROCESS_CONTEXT_ENABLED_DEFAULT = false;
public static final String PROFILING_DATADOG_PROFILER_LOG_LEVEL = "profiling.ddprof.loglevel";
public static final String PROFILING_DATADOG_PROFILER_LOG_LEVEL_DEFAULT = "NONE";
public static final String PROFILING_DATADOG_PROFILER_STACKDEPTH = "profiling.ddprof.stackdepth";
public static final String PROFILING_DATADOG_PROFILER_CSTACK = "profiling.ddprof.cstack";
public static final String PROFILING_DATADOG_PROFILER_CSTACK_DEFAULT = "vm";
public static final String PROFILING_DATADOG_PROFILER_SAFEMODE = "profiling.ddprof.safemode";
private static final int POP_METHOD = 4;
private static final int LAST_JAVA_PC = 16;
public static final int PROFILING_DATADOG_PROFILER_SAFEMODE_DEFAULT = POP_METHOD | LAST_JAVA_PC;
public static final String PROFILING_DATADOG_PROFILER_LINE_NUMBERS =
"profiling.ddprof.linenumbers";
public static final boolean PROFILING_DATADOG_PROFILER_LINE_NUMBERS_DEFAULT = true;
@Deprecated
public static final String PROFILING_DATADOG_PROFILER_MEMLEAK_ENABLED =
"profiling.ddprof.memleak.enabled";
@Deprecated
public static final String PROFILING_DATADOG_PROFILER_MEMLEAK_INTERVAL =
"profiling.ddprof.memleak.interval";
@Deprecated
public static final String PROFILING_DATADOG_PROFILER_MEMLEAK_CAPACITY =
"profiling.ddprof.memleak.capacity";
public static final String PROFILING_DATADOG_PROFILER_LIVEHEAP_ENABLED =
"profiling.ddprof.liveheap.enabled";
public static final boolean PROFILING_DATADOG_PROFILER_LIVEHEAP_ENABLED_DEFAULT = false;
public static final String PROFILING_DATADOG_PROFILER_LIVEHEAP_INTERVAL =
"profiling.ddprof.liveheap.interval";
public static final String PROFILING_DATADOG_PROFILER_LIVEHEAP_CAPACITY =
"profiling.ddprof.liveheap.capacity";
public static final int PROFILING_DATADOG_PROFILER_LIVEHEAP_CAPACITY_DEFAULT = 1024;
public static final String PROFILING_DATADOG_PROFILER_LIVEHEAP_TRACK_HEAPSIZE =
"profiling.ddprof.liveheap.track_size.enabled";
public static final boolean PROFILING_DATADOG_PROFILER_LIVEHEAP_TRACK_HEAPSIZE_DEFAFULT = true;
public static final String PROFILING_DATADOG_PROFILER_LIVEHEAP_SAMPLE_PERCENT =
"profiling.ddprof.liveheap.sample_percent";
public static final int PROFILING_DATADOG_PROFILER_LIVEHEAP_SAMPLE_PERCENT_DEFAULT =
50; // default to 10% of allocation samples
public static final String PROFILING_ENDPOINT_COLLECTION_ENABLED =
"profiling.endpoint.collection.enabled";
public static final boolean PROFILING_ENDPOINT_COLLECTION_ENABLED_DEFAULT = true;
public static final String PROFILING_JFR_REPOSITORY_MAXSIZE = "profiling.jfr.repository.maxsize";
public static final int PROFILING_JFR_REPOSITORY_MAXSIZE_DEFAULT =
64 * 1024 * 1024; // 64MB default
public static final String PROFILING_UPLOAD_SUMMARY_ON_413 = "profiling.upload.summary-on-413";
public static final boolean PROFILING_UPLOAD_SUMMARY_ON_413_DEFAULT = false;
public static final String PROFILING_TEMP_DIR = "profiling.tempdir";
public static final String PROFILING_TEMP_DIR_DEFAULT = System.getProperty("java.io.tmpdir");
// Not intended for production use
public static final String PROFILING_AGENTLESS = "profiling.agentless";
public static final boolean PROFILING_AGENTLESS_DEFAULT = false;
public static final String PROFILING_DISABLED_EVENTS = "profiling.disabled.events";
public static final String PROFILING_ENABLED_EVENTS = "profiling.enabled.events";
public static final String PROFILING_DEBUG_DUMP_PATH = "profiling.debug.dump_path";
public static final String PROFILING_DEBUG_JFR_DISABLED = "profiling.debug.jfr.disabled";
// spotless:off
/**
* Configuration for profile upload compression.<br><br> Supported values are:
* <ul>
* <li><b>on</b>: equivalent to <b>zstd</b></li>
* <li><b>off</b>: disables compression</li>
* <li><b>lz4</b>: uses LZ4 compression (fast with moderate compression ratio)</li>
* <li><b>gzip</b>: uses GZIP compression (higher compression ratio but slower)</li>
* <li><b>zstd</b>: uses ZSTD compression (high compression ratio with reasonable performance)</li>
* </ul>
*/
// spotless:on
public static final String PROFILING_DEBUG_UPLOAD_COMPRESSION =
"profiling.debug.upload.compression";
public static final String PROFILING_DEBUG_UPLOAD_COMPRESSION_DEFAULT = "zstd";
public static final String PROFILING_CONTEXT_ATTRIBUTES = "profiling.context.attributes";
public static final String PROFILING_CONTEXT_ATTRIBUTES_SPAN_NAME_ENABLED =
"profiling.context.attributes.span.name.enabled";
public static final String PROFILING_CONTEXT_ATTRIBUTES_RESOURCE_NAME_ENABLED =
"profiling.context.attributes.resource.name.enabled";
public static final String PROFILING_QUEUEING_TIME_ENABLED = "profiling.queueing.time.enabled";
public static final boolean PROFILING_QUEUEING_TIME_ENABLED_DEFAULT = true;
public static final String PROFILING_SMAP_COLLECTION_ENABLED =
"profiling.smap.collection.enabled";
public static final boolean PROFILING_SMAP_COLLECTION_ENABLED_DEFAULT = false;
public static final String PROFILING_SMAP_AGGREGATION_ENABLED =
"profiling.smap.aggregation.enabled";
public static final boolean PROFILING_SMAP_AGGREGATION_ENABLED_DEFAULT = false;
public static final String PROFILING_QUEUEING_TIME_THRESHOLD_MILLIS =
"profiling.queueing.time.threshold.millis";
public static final long PROFILING_QUEUEING_TIME_THRESHOLD_MILLIS_DEFAULT = 50;
public static final String PROFILING_ULTRA_MINIMAL = "profiling.ultra.minimal";
public static final String PROFILING_HEAP_HISTOGRAM_ENABLED = "profiling.heap.histogram.enabled";
public static final boolean PROFILING_HEAP_HISTOGRAM_ENABLED_DEFAULT = false;
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 = true;
public static final String PROFILING_DETAILED_DEBUG_LOGGING = "profiling.detailed.debug.logging";
public static final boolean PROFILING_DETAILED_DEBUG_LOGGING_DEFAULT = false;
public static final String PROFILING_SCRUB_ENABLED = "profiling.scrub.enabled";
public static final boolean PROFILING_SCRUB_ENABLED_DEFAULT = false;
public static final String PROFILING_SCRUB_FAIL_OPEN = "profiling.scrub.fail-open";
public static final boolean PROFILING_SCRUB_FAIL_OPEN_DEFAULT = false;
public static final String PROFILING_SCRUB_EXCLUDE_EVENTS = "profiling.scrub.exclude-events";
private ProfilingConfig() {}
}