Skip to content

Conversation

raphaelgavache
Copy link
Member

@raphaelgavache raphaelgavache commented Oct 8, 2025

TODO

  1. figure out why some graal vm scenarios are failing

Test instructions

On system-tests

On a linux VM

# install injector apm
DD_SITE="datadoghq.com" DD_APM_INSTRUMENTATION_ENABLED=host DD_API_KEY=x DD_APM_INSTRUMENTATION_LIBRARIES=java:1 bash -c "$(curl -L https://install.datadoghq.com/scripts/install_script_agent7.sh)"

# install java tracer commit
sudo datadog-installer install "oci://installtesting.datad0g.com/apm-library-java-package:34aa766f77fb84bd5c43ad4daaea3a149d339683"

Check file descriptors

$ java Sleep &
[1] 1346653
$ cat /proc/1346653/fd/11
schema_versiontracer_languagejavatracer_version1.55.0-SNAPSHOT~34aa766f7hostnameraphael-debian12
runtime_id$b27e9ae7-f5eb-4f84-b298-3d2c6c6cb414
                                               service_nameSleep
                                                                process_tags\entrypoint.name:sleep,entrypoint.type:class,entrypoint.workdir:raphael_gavach

Sleep is a sleep 50s java class for test purpose

Motivation

Additional Notes

Contributor Checklist

Jira ticket: [PROJ-IDENT]

@raphaelgavache raphaelgavache changed the title try to plug memfd to core-tracer support service discovery with JNA Oct 8, 2025
@datadog-datadog-prod-us1
Copy link
Contributor

datadog-datadog-prod-us1 bot commented Oct 8, 2025

🎯 Code Coverage
Patch Coverage: 51.96%
Total Coverage: 63.38% (+3.70%)

View detailed report

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 94cab5d | Docs | Was this helpful? Give us feedback!

@pr-commenter
Copy link

pr-commenter bot commented Oct 8, 2025

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master raphael/memfd
git_commit_date 1759995296 1760019182
git_commit_sha 24adc9a 94cab5d
release_version 1.55.0-SNAPSHOT~24adc9a61e 1.55.0-SNAPSHOT~94cab5d641
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1760020908 1760020908
ci_job_id 1171878601 1171878601
ci_pipeline_id 78856520 78856520
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-0-efvkjnxv 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zfyrx7zua-project-304-concurrent-0-efvkjnxv 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
module Agent Agent
parent None None

Summary

Found 18 performance improvements and 14 performance regressions! Performance is the same for 30 metrics, 3 unstable metrics.

scenario Δ mean execution_time candidate mean execution_time baseline mean execution_time
scenario:startup:insecure-bank:iast:Agent.start worse
[+83.442ms; +119.504ms] or [+7.250%; +10.383%]
1.252s 1.151s
scenario:startup:insecure-bank:iast:GlobalTracer worse
[+93.638ms; +102.652ms] or [+40.426%; +44.318%]
329.773ms 231.628ms
scenario:startup:insecure-bank:iast:IAST better
[-1.909ms; -0.791ms] or [-7.178%; -2.973%]
25.243ms 26.593ms
scenario:startup:insecure-bank:iast:AppSec better
[-3.391ms; -2.403ms] or [-9.667%; -6.849%]
32.184ms 35.081ms
scenario:startup:insecure-bank:iast:Debugger worse
[+1.301ms; +1.537ms] or [+21.207%; +25.049%]
7.556ms 6.137ms
scenario:startup:insecure-bank:iast:Telemetry better
[-1012.095µs; -614.219µs] or [-11.695%; -7.097%]
7.841ms 8.654ms
scenario:startup:insecure-bank:iast:Flare Poller better
[-440.281µs; -164.631µs] or [-10.328%; -3.862%]
3.961ms 4.263ms
scenario:startup:insecure-bank:tracing:Agent.start worse
[+81.816ms; +110.214ms] or [+8.041%; +10.832%]
1.113s 1.017s
scenario:startup:insecure-bank:tracing:GlobalTracer worse
[+96.695ms; +105.086ms] or [+40.037%; +43.511%]
342.406ms 241.515ms
scenario:startup:insecure-bank:tracing:Remote Config better
[-54.609µs; -16.926µs] or [-7.691%; -2.384%]
674.254µs 710.022µs
scenario:startup:insecure-bank:tracing:Telemetry better
[-1.276ms; -0.896ms] or [-13.730%; -9.638%]
8.207ms 9.293ms
scenario:startup:insecure-bank:tracing:Flare Poller better
[-8.001ms; -7.643ms] or [-68.038%; -64.991%]
3.938ms 11.760ms
scenario:startup:petclinic:appsec:Agent.start worse
[+70.704ms; +80.599ms] or [+5.917%; +6.746%]
1.270s 1.195s
scenario:startup:petclinic:appsec:GlobalTracer worse
[+97.272ms; +99.387ms] or [+41.513%; +42.416%]
332.645ms 234.316ms
scenario:startup:petclinic:appsec:IAST better
[-1.596ms; -0.562ms] or [-6.446%; -2.269%]
23.675ms 24.753ms
scenario:startup:petclinic:appsec:AppSec better
[-21.000ms; -17.612ms] or [-12.026%; -10.086%]
155.319ms 174.625ms
scenario:startup:petclinic:iast:Agent.start worse
[+83.001ms; +108.838ms] or [+7.203%; +9.446%]
1.248s 1.152s
scenario:startup:petclinic:iast:GlobalTracer worse
[+93.698ms; +100.903ms] or [+40.408%; +43.515%]
329.180ms 231.879ms
scenario:startup:petclinic:iast:IAST better
[-2.022ms; -1.576ms] or [-7.581%; -5.907%]
24.874ms 26.673ms
scenario:startup:petclinic:iast:AppSec better
[-3.836ms; -3.087ms] or [-10.940%; -8.804%]
31.601ms 35.063ms
scenario:startup:petclinic:iast:Debugger worse
[+1.241ms; +1.394ms] or [+20.131%; +22.617%]
7.483ms 6.165ms
scenario:startup:petclinic:iast:Telemetry better
[-1063.110µs; -808.357µs] or [-12.308%; -9.359%]
7.702ms 8.637ms
scenario:startup:petclinic:iast:Flare Poller better
[-552.562µs; -301.514µs] or [-12.826%; -6.999%]
3.881ms 4.308ms
scenario:startup:petclinic:profiling:Agent.start worse
[+71.397ms; +112.449ms] or [+6.143%; +9.675%]
1.254s 1.162s
scenario:startup:petclinic:profiling:GlobalTracer worse
[+85.443ms; +94.726ms] or [+39.182%; +43.439%]
308.151ms 218.066ms
scenario:startup:petclinic:profiling:AppSec better
[-1.846ms; -0.955ms] or [-5.630%; -2.914%]
31.386ms 32.787ms
scenario:startup:petclinic:profiling:Telemetry better
[-9.192ms; -8.600ms] or [-54.911%; -51.378%]
7.844ms 16.740ms
scenario:startup:petclinic:tracing:Agent.start worse
[+71.369ms; +89.548ms] or [+6.973%; +8.749%]
1.104s 1.023s
scenario:startup:petclinic:tracing:GlobalTracer worse
[+95.930ms; +98.142ms] or [+39.590%; +40.502%]
339.347ms 242.311ms
scenario:startup:petclinic:tracing:AppSec better
[-1.838ms; -1.044ms] or [-5.662%; -3.218%]
31.013ms 32.453ms
scenario:startup:petclinic:tracing:Remote Config better
[-49.172µs; -17.069µs] or [-6.994%; -2.428%]
669.889µs 703.010µs
scenario:startup:petclinic:tracing:Telemetry better
[-1.316ms; -1.023ms] or [-14.129%; -10.983%]
8.145ms 9.315ms
Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.55.0-SNAPSHOT~94cab5d641, baseline=1.55.0-SNAPSHOT~24adc9a61e

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.017 s) : 0, 1017450
Total [baseline] (8.672 s) : 0, 8671792
Agent [candidate] (1.113 s) : 0, 1113465
Total [candidate] (8.773 s) : 0, 8772535
section iast
Agent [baseline] (1.151 s) : 0, 1150902
Total [baseline] (9.331 s) : 0, 9330691
Agent [candidate] (1.252 s) : 0, 1252375
Total [candidate] (9.446 s) : 0, 9445547
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.017 s -
Agent iast 1.151 s 133.452 ms (13.1%)
Total tracing 8.672 s -
Total iast 9.331 s 658.899 ms (7.6%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.113 s -
Agent iast 1.252 s 138.91 ms (12.5%)
Total tracing 8.773 s -
Total iast 9.446 s 673.012 ms (7.7%)
gantt
    title insecure-bank - break down per module: candidate=1.55.0-SNAPSHOT~94cab5d641, baseline=1.55.0-SNAPSHOT~24adc9a61e

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.471 ms) : 0, 1471
crashtracking [candidate] (1.467 ms) : 0, 1467
BytebuddyAgent [baseline] (692.828 ms) : 0, 692828
BytebuddyAgent [candidate] (698.178 ms) : 0, 698178
GlobalTracer [baseline] (241.515 ms) : 0, 241515
GlobalTracer [candidate] (342.406 ms) : 0, 342406
AppSec [baseline] (32.398 ms) : 0, 32398
AppSec [candidate] (31.089 ms) : 0, 31089
Debugger [baseline] (6.402 ms) : 0, 6402
Debugger [candidate] (6.312 ms) : 0, 6312
Remote Config [baseline] (710.022 µs) : 0, 710
Remote Config [candidate] (674.254 µs) : 0, 674
Telemetry [baseline] (9.293 ms) : 0, 9293
Telemetry [candidate] (8.207 ms) : 0, 8207
Flare Poller [baseline] (11.76 ms) : 0, 11760
Flare Poller [candidate] (3.938 ms) : 0, 3938
section iast
crashtracking [baseline] (1.475 ms) : 0, 1475
crashtracking [candidate] (1.469 ms) : 0, 1469
BytebuddyAgent [baseline] (815.176 ms) : 0, 815176
BytebuddyAgent [candidate] (822.356 ms) : 0, 822356
GlobalTracer [baseline] (231.628 ms) : 0, 231628
GlobalTracer [candidate] (329.773 ms) : 0, 329773
AppSec [baseline] (35.081 ms) : 0, 35081
AppSec [candidate] (32.184 ms) : 0, 32184
Debugger [baseline] (6.137 ms) : 0, 6137
Debugger [candidate] (7.556 ms) : 0, 7556
Remote Config [baseline] (609.342 µs) : 0, 609
Remote Config [candidate] (603.977 µs) : 0, 604
Telemetry [baseline] (8.654 ms) : 0, 8654
Telemetry [candidate] (7.841 ms) : 0, 7841
Flare Poller [baseline] (4.263 ms) : 0, 4263
Flare Poller [candidate] (3.961 ms) : 0, 3961
IAST [baseline] (26.593 ms) : 0, 26593
IAST [candidate] (25.243 ms) : 0, 25243
Loading
Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.55.0-SNAPSHOT~94cab5d641, baseline=1.55.0-SNAPSHOT~24adc9a61e

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.023 s) : 0, 1023486
Total [baseline] (10.757 s) : 0, 10757463
Agent [candidate] (1.104 s) : 0, 1103944
Total [candidate] (10.635 s) : 0, 10635379
section appsec
Agent [baseline] (1.195 s) : 0, 1194833
Total [baseline] (10.961 s) : 0, 10961476
Agent [candidate] (1.27 s) : 0, 1270485
Total [candidate] (10.954 s) : 0, 10953860
section iast
Agent [baseline] (1.152 s) : 0, 1152235
Total [baseline] (10.971 s) : 0, 10970569
Agent [candidate] (1.248 s) : 0, 1248155
Total [candidate] (11.069 s) : 0, 11068908
section profiling
Agent [baseline] (1.162 s) : 0, 1162258
Total [baseline] (11.106 s) : 0, 11105668
Agent [candidate] (1.254 s) : 0, 1254180
Total [candidate] (11.117 s) : 0, 11116689
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.023 s -
Agent appsec 1.195 s 171.347 ms (16.7%)
Agent iast 1.152 s 128.749 ms (12.6%)
Agent profiling 1.162 s 138.772 ms (13.6%)
Total tracing 10.757 s -
Total appsec 10.961 s 204.013 ms (1.9%)
Total iast 10.971 s 213.106 ms (2.0%)
Total profiling 11.106 s 348.206 ms (3.2%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.104 s -
Agent appsec 1.27 s 166.541 ms (15.1%)
Agent iast 1.248 s 144.21 ms (13.1%)
Agent profiling 1.254 s 150.236 ms (13.6%)
Total tracing 10.635 s -
Total appsec 10.954 s 318.481 ms (3.0%)
Total iast 11.069 s 433.528 ms (4.1%)
Total profiling 11.117 s 481.31 ms (4.5%)
gantt
    title petclinic - break down per module: candidate=1.55.0-SNAPSHOT~94cab5d641, baseline=1.55.0-SNAPSHOT~24adc9a61e

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.488 ms) : 0, 1488
crashtracking [candidate] (1.453 ms) : 0, 1453
BytebuddyAgent [baseline] (699.185 ms) : 0, 699185
BytebuddyAgent [candidate] (691.908 ms) : 0, 691908
GlobalTracer [baseline] (242.311 ms) : 0, 242311
GlobalTracer [candidate] (339.347 ms) : 0, 339347
AppSec [baseline] (32.453 ms) : 0, 32453
AppSec [candidate] (31.013 ms) : 0, 31013
Debugger [baseline] (6.421 ms) : 0, 6421
Debugger [candidate] (6.348 ms) : 0, 6348
Remote Config [baseline] (703.01 µs) : 0, 703
Remote Config [candidate] (669.889 µs) : 0, 670
Telemetry [baseline] (9.315 ms) : 0, 9315
Telemetry [candidate] (8.145 ms) : 0, 8145
Flare Poller [baseline] (10.254 ms) : 0, 10254
Flare Poller [candidate] (3.981 ms) : 0, 3981
section appsec
crashtracking [baseline] (1.479 ms) : 0, 1479
crashtracking [candidate] (1.466 ms) : 0, 1466
BytebuddyAgent [baseline] (718.179 ms) : 0, 718179
BytebuddyAgent [candidate] (715.511 ms) : 0, 715511
GlobalTracer [baseline] (234.316 ms) : 0, 234316
GlobalTracer [candidate] (332.645 ms) : 0, 332645
IAST [baseline] (24.753 ms) : 0, 24753
IAST [candidate] (23.675 ms) : 0, 23675
AppSec [baseline] (174.625 ms) : 0, 174625
AppSec [candidate] (155.319 ms) : 0, 155319
Debugger [baseline] (6.193 ms) : 0, 6193
Debugger [candidate] (6.068 ms) : 0, 6068
Remote Config [baseline] (645.482 µs) : 0, 645
Remote Config [candidate] (649.792 µs) : 0, 650
Telemetry [baseline] (9.479 ms) : 0, 9479
Telemetry [candidate] (8.154 ms) : 0, 8154
Flare Poller [baseline] (3.988 ms) : 0, 3988
Flare Poller [candidate] (5.955 ms) : 0, 5955
section iast
crashtracking [baseline] (1.462 ms) : 0, 1462
crashtracking [candidate] (1.46 ms) : 0, 1460
BytebuddyAgent [baseline] (816.059 ms) : 0, 816059
BytebuddyAgent [candidate] (820.042 ms) : 0, 820042
GlobalTracer [baseline] (231.879 ms) : 0, 231879
GlobalTracer [candidate] (329.18 ms) : 0, 329180
IAST [baseline] (26.673 ms) : 0, 26673
IAST [candidate] (24.874 ms) : 0, 24874
AppSec [baseline] (35.063 ms) : 0, 35063
AppSec [candidate] (31.601 ms) : 0, 31601
Debugger [baseline] (6.165 ms) : 0, 6165
Debugger [candidate] (7.483 ms) : 0, 7483
Remote Config [baseline] (617.195 µs) : 0, 617
Remote Config [candidate] (589.06 µs) : 0, 589
Telemetry [baseline] (8.637 ms) : 0, 8637
Telemetry [candidate] (7.702 ms) : 0, 7702
Flare Poller [baseline] (4.308 ms) : 0, 4308
Flare Poller [candidate] (3.881 ms) : 0, 3881
section profiling
crashtracking [baseline] (1.42 ms) : 0, 1420
crashtracking [candidate] (1.452 ms) : 0, 1452
BytebuddyAgent [baseline] (722.131 ms) : 0, 722131
BytebuddyAgent [candidate] (731.435 ms) : 0, 731435
GlobalTracer [baseline] (218.066 ms) : 0, 218066
GlobalTracer [candidate] (308.151 ms) : 0, 308151
AppSec [baseline] (32.787 ms) : 0, 32787
AppSec [candidate] (31.386 ms) : 0, 31386
Debugger [baseline] (6.491 ms) : 0, 6491
Debugger [candidate] (6.345 ms) : 0, 6345
Remote Config [baseline] (706.74 µs) : 0, 707
Remote Config [candidate] (689.086 µs) : 0, 689
Telemetry [baseline] (16.74 ms) : 0, 16740
Telemetry [candidate] (7.844 ms) : 0, 7844
Flare Poller [baseline] (4.209 ms) : 0, 4209
Flare Poller [candidate] (4.086 ms) : 0, 4086
ProfilingAgent [baseline] (107.158 ms) : 0, 107158
ProfilingAgent [candidate] (109.651 ms) : 0, 109651
Profiling [baseline] (107.732 ms) : 0, 107732
Profiling [candidate] (110.291 ms) : 0, 110291
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master raphael/memfd
git_commit_date 1759995296 1760019182
git_commit_sha 24adc9a 94cab5d
release_version 1.55.0-SNAPSHOT~24adc9a61e 1.55.0-SNAPSHOT~94cab5d641
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1760020574 1760020574
ci_job_id 1171878603 1171878603
ci_pipeline_id 78856520 78856520
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-1-n16vxik5 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zfyrx7zua-project-304-concurrent-1-n16vxik5 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

Summary

Found 4 performance improvements and 1 performance regressions! Performance is the same for 7 metrics, 12 unstable metrics.

scenario Δ mean http_req_duration Δ mean throughput candidate mean http_req_duration candidate mean throughput baseline mean http_req_duration baseline mean throughput
scenario:load:insecure-bank:no_agent:high_load better
[-221.178µs; -109.554µs] or [-5.072%; -2.512%]
unstable
[-89.555op/s; +171.118op/s] or [-8.509%; +16.259%]
4.195ms 1093.219op/s 4.361ms 1052.438op/s
scenario:load:insecure-bank:tracing:high_load better
[-733.503µs; -474.087µs] or [-8.821%; -5.701%]
unstable
[-30.138op/s; +116.388op/s] or [-5.406%; +20.876%]
7.712ms 600.656op/s 8.316ms 557.531op/s
scenario:load:petclinic:iast:high_load better
[-2.291ms; -1.489ms] or [-5.008%; -3.255%]
unstable
[-3.436op/s; +12.286op/s] or [-3.359%; +12.011%]
43.860ms 106.713op/s 45.751ms 102.287op/s
scenario:load:petclinic:code_origins:high_load worse
[+1.494ms; +2.288ms] or [+3.545%; +5.429%]
unstable
[-12.864op/s; +3.339op/s] or [-11.590%; +3.009%]
44.043ms 106.237op/s 42.152ms 111.000op/s
scenario:load:petclinic:appsec:high_load better
[-3.308ms; -2.342ms] or [-6.422%; -4.546%]
unstable
[-2.243op/s; +12.718op/s] or [-2.468%; +13.991%]
48.680ms 96.138op/s 51.505ms 90.900op/s
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.55.0-SNAPSHOT~94cab5d641, baseline=1.55.0-SNAPSHOT~24adc9a61e
    dateFormat X
    axisFormat %s
section baseline
no_agent (36.038 ms) : 35753, 36324
.   : milestone, 36038,
appsec (51.505 ms) : 51051, 51958
.   : milestone, 51505,
code_origins (42.152 ms) : 41801, 42503
.   : milestone, 42152,
iast (45.751 ms) : 45372, 46129
.   : milestone, 45751,
profiling (48.387 ms) : 47905, 48869
.   : milestone, 48387,
tracing (46.13 ms) : 45725, 46535
.   : milestone, 46130,
section candidate
no_agent (35.944 ms) : 35653, 36235
.   : milestone, 35944,
appsec (48.68 ms) : 48236, 49124
.   : milestone, 48680,
code_origins (44.043 ms) : 43657, 44429
.   : milestone, 44043,
iast (43.86 ms) : 43494, 44227
.   : milestone, 43860,
profiling (49.209 ms) : 48720, 49698
.   : milestone, 49209,
tracing (44.91 ms) : 44523, 45296
.   : milestone, 44910,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 36.038 ms [35.753 ms, 36.324 ms] -
appsec 51.505 ms [51.051 ms, 51.958 ms] 15.466 ms (42.9%)
code_origins 42.152 ms [41.801 ms, 42.503 ms] 6.113 ms (17.0%)
iast 45.751 ms [45.372 ms, 46.129 ms] 9.712 ms (27.0%)
profiling 48.387 ms [47.905 ms, 48.869 ms] 12.349 ms (34.3%)
tracing 46.13 ms [45.725 ms, 46.535 ms] 10.092 ms (28.0%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 35.944 ms [35.653 ms, 36.235 ms] -
appsec 48.68 ms [48.236 ms, 49.124 ms] 12.736 ms (35.4%)
code_origins 44.043 ms [43.657 ms, 44.429 ms] 8.099 ms (22.5%)
iast 43.86 ms [43.494 ms, 44.227 ms] 7.917 ms (22.0%)
profiling 49.209 ms [48.72 ms, 49.698 ms] 13.266 ms (36.9%)
tracing 44.91 ms [44.523 ms, 45.296 ms] 8.966 ms (24.9%)
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.55.0-SNAPSHOT~94cab5d641, baseline=1.55.0-SNAPSHOT~24adc9a61e
    dateFormat X
    axisFormat %s
section baseline
no_agent (4.361 ms) : 4307, 4415
.   : milestone, 4361,
iast (9.961 ms) : 9791, 10130
.   : milestone, 9961,
iast_FULL (14.438 ms) : 14149, 14726
.   : milestone, 14438,
iast_GLOBAL (10.327 ms) : 10145, 10510
.   : milestone, 10327,
profiling (8.991 ms) : 8851, 9131
.   : milestone, 8991,
tracing (8.316 ms) : 8193, 8439
.   : milestone, 8316,
section candidate
no_agent (4.195 ms) : 4146, 4245
.   : milestone, 4195,
iast (10.001 ms) : 9832, 10169
.   : milestone, 10001,
iast_FULL (14.046 ms) : 13758, 14335
.   : milestone, 14046,
iast_GLOBAL (10.598 ms) : 10406, 10790
.   : milestone, 10598,
profiling (9.22 ms) : 9064, 9377
.   : milestone, 9220,
tracing (7.712 ms) : 7594, 7830
.   : milestone, 7712,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 4.361 ms [4.307 ms, 4.415 ms] -
iast 9.961 ms [9.791 ms, 10.13 ms] 5.6 ms (128.4%)
iast_FULL 14.438 ms [14.149 ms, 14.726 ms] 10.077 ms (231.1%)
iast_GLOBAL 10.327 ms [10.145 ms, 10.51 ms] 5.967 ms (136.8%)
profiling 8.991 ms [8.851 ms, 9.131 ms] 4.631 ms (106.2%)
tracing 8.316 ms [8.193 ms, 8.439 ms] 3.955 ms (90.7%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 4.195 ms [4.146 ms, 4.245 ms] -
iast 10.001 ms [9.832 ms, 10.169 ms] 5.805 ms (138.4%)
iast_FULL 14.046 ms [13.758 ms, 14.335 ms] 9.851 ms (234.8%)
iast_GLOBAL 10.598 ms [10.406 ms, 10.79 ms] 6.402 ms (152.6%)
profiling 9.22 ms [9.064 ms, 9.377 ms] 5.025 ms (119.8%)
tracing 7.712 ms [7.594 ms, 7.83 ms] 3.517 ms (83.8%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master raphael/memfd
git_commit_date 1759995296 1760019182
git_commit_sha 24adc9a 94cab5d
release_version 1.55.0-SNAPSHOT~24adc9a61e 1.55.0-SNAPSHOT~94cab5d641
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1760021077 1760021077
ci_job_id 1171878605 1171878605
ci_pipeline_id 78856520 78856520
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-0-qazza6ue 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zfyrx7zua-project-304-concurrent-0-qazza6ue 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

Summary

Found 0 performance improvements and 0 performance regressions! Performance is the same for 11 metrics, 1 unstable metrics.

Execution time for tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.55.0-SNAPSHOT~94cab5d641, baseline=1.55.0-SNAPSHOT~24adc9a61e
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.473 ms) : 1461, 1484
.   : milestone, 1473,
appsec (3.687 ms) : 3468, 3905
.   : milestone, 3687,
iast (2.223 ms) : 2159, 2287
.   : milestone, 2223,
iast_GLOBAL (2.247 ms) : 2182, 2311
.   : milestone, 2247,
profiling (2.079 ms) : 2026, 2133
.   : milestone, 2079,
tracing (2.034 ms) : 1984, 2084
.   : milestone, 2034,
section candidate
no_agent (1.475 ms) : 1464, 1487
.   : milestone, 1475,
appsec (3.73 ms) : 3511, 3949
.   : milestone, 3730,
iast (2.209 ms) : 2146, 2273
.   : milestone, 2209,
iast_GLOBAL (2.246 ms) : 2182, 2310
.   : milestone, 2246,
profiling (2.044 ms) : 1993, 2095
.   : milestone, 2044,
tracing (2.034 ms) : 1984, 2084
.   : milestone, 2034,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.473 ms [1.461 ms, 1.484 ms] -
appsec 3.687 ms [3.468 ms, 3.905 ms] 2.214 ms (150.3%)
iast 2.223 ms [2.159 ms, 2.287 ms] 750.226 µs (50.9%)
iast_GLOBAL 2.247 ms [2.182 ms, 2.311 ms] 773.826 µs (52.5%)
profiling 2.079 ms [2.026 ms, 2.133 ms] 606.592 µs (41.2%)
tracing 2.034 ms [1.984 ms, 2.084 ms] 561.131 µs (38.1%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.475 ms [1.464 ms, 1.487 ms] -
appsec 3.73 ms [3.511 ms, 3.949 ms] 2.254 ms (152.8%)
iast 2.209 ms [2.146 ms, 2.273 ms] 734.046 µs (49.8%)
iast_GLOBAL 2.246 ms [2.182 ms, 2.31 ms] 770.663 µs (52.2%)
profiling 2.044 ms [1.993 ms, 2.095 ms] 568.38 µs (38.5%)
tracing 2.034 ms [1.984 ms, 2.084 ms] 558.441 µs (37.8%)
Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.55.0-SNAPSHOT~94cab5d641, baseline=1.55.0-SNAPSHOT~24adc9a61e
    dateFormat X
    axisFormat %s
section baseline
no_agent (15.484 s) : 15484000, 15484000
.   : milestone, 15484000,
appsec (15.064 s) : 15064000, 15064000
.   : milestone, 15064000,
iast (18.444 s) : 18444000, 18444000
.   : milestone, 18444000,
iast_GLOBAL (17.71 s) : 17710000, 17710000
.   : milestone, 17710000,
profiling (15.279 s) : 15279000, 15279000
.   : milestone, 15279000,
tracing (15.077 s) : 15077000, 15077000
.   : milestone, 15077000,
section candidate
no_agent (15.033 s) : 15033000, 15033000
.   : milestone, 15033000,
appsec (14.978 s) : 14978000, 14978000
.   : milestone, 14978000,
iast (18.238 s) : 18238000, 18238000
.   : milestone, 18238000,
iast_GLOBAL (17.965 s) : 17965000, 17965000
.   : milestone, 17965000,
profiling (15.251 s) : 15251000, 15251000
.   : milestone, 15251000,
tracing (15.206 s) : 15206000, 15206000
.   : milestone, 15206000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.484 s [15.484 s, 15.484 s] -
appsec 15.064 s [15.064 s, 15.064 s] -420.0 ms (-2.7%)
iast 18.444 s [18.444 s, 18.444 s] 2.96 s (19.1%)
iast_GLOBAL 17.71 s [17.71 s, 17.71 s] 2.226 s (14.4%)
profiling 15.279 s [15.279 s, 15.279 s] -205.0 ms (-1.3%)
tracing 15.077 s [15.077 s, 15.077 s] -407.0 ms (-2.6%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.033 s [15.033 s, 15.033 s] -
appsec 14.978 s [14.978 s, 14.978 s] -55.0 ms (-0.4%)
iast 18.238 s [18.238 s, 18.238 s] 3.205 s (21.3%)
iast_GLOBAL 17.965 s [17.965 s, 17.965 s] 2.932 s (19.5%)
profiling 15.251 s [15.251 s, 15.251 s] 218.0 ms (1.5%)
tracing 15.206 s [15.206 s, 15.206 s] 173.0 ms (1.2%)

this.localRootSpanTagsNeedIntercept =
this.tagInterceptor.needsIntercept(this.localRootSpanTags);
try {
Class<?> cls = Class.forName("datadog.trace.agent.tooling.ServiceDiscoveryWriter");
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

little hack to try out, I need to figure out the package dependency

@raphaelgavache raphaelgavache force-pushed the raphael/memfd branch 2 times, most recently from a4c39f7 to 1bb3e54 Compare October 8, 2025 21:21
@bm1549
Copy link
Contributor

bm1549 commented Oct 9, 2025

@raphaelgavache iiuc GraalVM and Spring Native are not expected to work because of the way native libraries work with native image. So long as it won't crash or cause other adverse behavior in those scenarios, I think we're good

@dougqh
Copy link
Contributor

dougqh commented Oct 9, 2025

@raphaelgavache iiuc GraalVM and Spring Native are not expected to work because of the way native libraries work with native image. So long as it won't crash or cause other adverse behavior in those scenarios, I think we're good

Yes, Graal native image support is awhile off for any native library usage.
In this case, the problem is JNA itself because JNA's dynamic class generation doesn't work well with the AoT approach of Graal native image.

public class ServiceDiscovery {
private static final Logger log = LoggerFactory.getLogger(ServiceDiscovery.class);

private static final byte[] SCHEMA_VERSION = "schema_version".getBytes(ISO_8859_1);
Copy link
Contributor

@dougqh dougqh Oct 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For this particular case, I'd rather not have the constants.
The problem is that they end up permanently consuming memory when we really only intend to use them once.

Admittedly, this is a weird case and it has got me thinking about whether we want to just unload the class, but that's on platform to figure out.

TracerVersion.TRACER_VERSION,
config.getHostName(),
config.getRuntimeId(),
config.getServiceName(),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is using the statically configured service name which isn't necessarily the service name that the tracer will use in the end. Are we okay with that?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We might also want to consider moving this to a background task, so it doesn't impact start-up.

mapElements += (processTags != null && processTags.length() > 0) ? 1 : 0;
mapElements += (containerID != null && !containerID.isEmpty()) ? 1 : 0;

SimpleUtf8Cache encodingCache = new SimpleUtf8Cache(256);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would skip the cache in this case.
Since the code is creating a new cache each time, the cache isn't providing a benefit here. And the cache is actually slower than just doing the encoding directly, the cache is only helpful if we're repeatedly allocating again and again.

And since this code is only called a handful of times, there's not much chance to save on allocation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants