Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Make Akka's ForkJoin pool instrumented class names configurable #8766

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

nikita-tkachenko-datadog
Copy link
Contributor

@nikita-tkachenko-datadog nikita-tkachenko-datadog commented May 5, 2025

What Does This Do

Update Akka's ForkJoinPool instrumentations to also instrument backported fork of the pool that is used by logs-backend (existing instrumentations can now be configured to instrument custom class names; logs-backend-specific class names will be provided in logs-backend tracer config).

Motivation

CI Visibility's per-test code coverage relies on spans propagation to capture coverage data from different threads.
Without this instrumentation coverage data for test cases that use Akka is incomplete.

Additional Notes

More context as to why logs-backend has its own ForkJoinPool implementation can be found in this PR.

Contributor Checklist

Jira ticket: SDTEST-1957

@nikita-tkachenko-datadog nikita-tkachenko-datadog added type: bug tag: no release notes Changes to exclude from release notes comp: ci visibility Continuous Integration Visibility labels May 5, 2025
@nikita-tkachenko-datadog nikita-tkachenko-datadog marked this pull request as ready for review May 5, 2025 11:02
@nikita-tkachenko-datadog nikita-tkachenko-datadog requested a review from a team as a code owner May 5, 2025 11:02
@@ -52,14 +52,17 @@ public Map<String, String> contextStore() {

@Override
public String hierarchyMarkerType() {
return "akka.dispatch.forkjoin.ForkJoinTask";
return "org.apache.pekko.dispatch.ExecutorServiceConfigurator";
Copy link
Collaborator

Choose a reason for hiding this comment

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

why this has been changed?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Because the previously used class (akka.dispatch.forkjoin.ForkJoinTask) is not available in logs-backend, since logs-backend uses a newer Akka version and its own ForkJoinPool implementation.

The class name returned by this method is used as a hint: class loaders that do not contain this class will be skipped by the instrumentation.
The new value is the superclass of both the original fork join pool and the logs-backend backport. If either of those pools is present in a classloader, then this parent class is guaranteed to be present too.

Copy link
Collaborator

Choose a reason for hiding this comment

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

I feel that doing that we're going to break customer with older versions. Is putting null something acceptable? It will bypass the classloader hint for that instrumentation

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Makes sense. I made the custom class name configurable, if nothing is configured then the old value is used as the hint, and if a custom hierarchy is configured then null is used to bypass the hint.

public String[] knownMatchingTypes() {
return new String[] {
"akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask",
"com.dd.logs.concurrent.akka.AkkaForkJoinTask", // logs-backend fork
Copy link
Collaborator

Choose a reason for hiding this comment

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

are we putting internal dd things in that repo? This is not tested and perhaps it will change in time. I would rather have made it configurable (see ForConfiguredType) and have a configuration flag returning that. logs-backend can then enable it optionally

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This will only cover 2 out of 3 instrumentations, the 3rd one needs to instrument a type hierarchy (every class that implements an interface).

logs-backend are going to get rid of the fork in the future and replace it with the standard implementation, also covered with these instrumentations.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I did this for 2 instrumentations in the end, and for the third one I implemented some ad-hoc logic to allow configuring the type hierarchy root.

@pr-commenter
Copy link

pr-commenter bot commented May 5, 2025

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master nikita-tkachenko/instrument-logs-backend-fork-join-pool
git_commit_date 1746516330 1746520061
git_commit_sha 0e18e0e ef04432
release_version 1.49.0-SNAPSHOT~0e18e0e887 1.49.0-SNAPSHOT~ef0443286b
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1746523147 1746523147
ci_job_id 925006847 925006847
ci_pipeline_id 64211755 64211755
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-dhdkofs9-project-304-concurrent-0-mc8k09c1 6.8.0-1027-aws #29~22.04.1-Ubuntu SMP Sun Mar 30 07:45:38 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-dhdkofs9-project-304-concurrent-0-mc8k09c1 6.8.0-1027-aws #29~22.04.1-Ubuntu SMP Sun Mar 30 07:45:38 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
module Agent Agent
parent None None
variant iast iast

Summary

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

Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.49.0-SNAPSHOT~ef0443286b, baseline=1.49.0-SNAPSHOT~0e18e0e887

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.005 s) : 0, 1005059
Total [baseline] (10.493 s) : 0, 10492600
Agent [candidate] (1.009 s) : 0, 1008532
Total [candidate] (10.502 s) : 0, 10502005
section appsec
Agent [baseline] (1.151 s) : 0, 1151263
Total [baseline] (10.73 s) : 0, 10730258
Agent [candidate] (1.159 s) : 0, 1158727
Total [candidate] (10.731 s) : 0, 10730840
section iast
Agent [baseline] (1.147 s) : 0, 1146506
Total [baseline] (10.842 s) : 0, 10841636
Agent [candidate] (1.139 s) : 0, 1138536
Total [candidate] (10.83 s) : 0, 10829840
section profiling
Agent [baseline] (1.259 s) : 0, 1258834
Total [baseline] (10.887 s) : 0, 10887111
Agent [candidate] (1.26 s) : 0, 1259847
Total [candidate] (10.828 s) : 0, 10827882
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.005 s -
Agent appsec 1.151 s 146.204 ms (14.5%)
Agent iast 1.147 s 141.447 ms (14.1%)
Agent profiling 1.259 s 253.775 ms (25.2%)
Total tracing 10.493 s -
Total appsec 10.73 s 237.657 ms (2.3%)
Total iast 10.842 s 349.036 ms (3.3%)
Total profiling 10.887 s 394.511 ms (3.8%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.009 s -
Agent appsec 1.159 s 150.195 ms (14.9%)
Agent iast 1.139 s 130.004 ms (12.9%)
Agent profiling 1.26 s 251.315 ms (24.9%)
Total tracing 10.502 s -
Total appsec 10.731 s 228.835 ms (2.2%)
Total iast 10.83 s 327.835 ms (3.1%)
Total profiling 10.828 s 325.877 ms (3.1%)
gantt
    title petclinic - break down per module: candidate=1.49.0-SNAPSHOT~ef0443286b, baseline=1.49.0-SNAPSHOT~0e18e0e887

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (670.082 ms) : 0, 670082
BytebuddyAgent [candidate] (674.278 ms) : 0, 674278
GlobalTracer [baseline] (240.01 ms) : 0, 240010
GlobalTracer [candidate] (240.233 ms) : 0, 240233
AppSec [baseline] (54.732 ms) : 0, 54732
AppSec [candidate] (54.519 ms) : 0, 54519
Debugger [baseline] (6.203 ms) : 0, 6203
Debugger [candidate] (6.132 ms) : 0, 6132
Remote Config [baseline] (705.121 µs) : 0, 705
Remote Config [candidate] (687.724 µs) : 0, 688
Telemetry [baseline] (9.92 ms) : 0, 9920
Telemetry [candidate] (9.135 ms) : 0, 9135
section appsec
BytebuddyAgent [baseline] (690.568 ms) : 0, 690568
BytebuddyAgent [candidate] (695.015 ms) : 0, 695015
GlobalTracer [baseline] (237.017 ms) : 0, 237017
GlobalTracer [candidate] (238.378 ms) : 0, 238378
AppSec [baseline] (174.966 ms) : 0, 174966
AppSec [candidate] (174.839 ms) : 0, 174839
Debugger [baseline] (5.869 ms) : 0, 5869
Debugger [candidate] (5.925 ms) : 0, 5925
Remote Config [baseline] (635.187 µs) : 0, 635
Remote Config [candidate] (641.411 µs) : 0, 641
Telemetry [baseline] (7.742 ms) : 0, 7742
Telemetry [candidate] (9.337 ms) : 0, 9337
IAST [baseline] (22.051 ms) : 0, 22051
IAST [candidate] (22.043 ms) : 0, 22043
section iast
BytebuddyAgent [baseline] (796.526 ms) : 0, 796526
BytebuddyAgent [candidate] (790.828 ms) : 0, 790828
GlobalTracer [baseline] (232.114 ms) : 0, 232114
GlobalTracer [candidate] (230.243 ms) : 0, 230243
AppSec [baseline] (56.846 ms) : 0, 56846
AppSec [candidate] (56.648 ms) : 0, 56648
Debugger [baseline] (5.948 ms) : 0, 5948
Debugger [candidate] (5.936 ms) : 0, 5936
Remote Config [baseline] (592.51 µs) : 0, 593
Remote Config [candidate] (603.271 µs) : 0, 603
Telemetry [baseline] (7.956 ms) : 0, 7956
Telemetry [candidate] (7.885 ms) : 0, 7885
IAST [baseline] (22.976 ms) : 0, 22976
IAST [candidate] (22.897 ms) : 0, 22897
section profiling
BytebuddyAgent [baseline] (662.588 ms) : 0, 662588
BytebuddyAgent [candidate] (664.024 ms) : 0, 664024
GlobalTracer [baseline] (379.882 ms) : 0, 379882
GlobalTracer [candidate] (379.923 ms) : 0, 379923
AppSec [baseline] (54.828 ms) : 0, 54828
AppSec [candidate] (54.215 ms) : 0, 54215
Debugger [baseline] (6.152 ms) : 0, 6152
Debugger [candidate] (6.194 ms) : 0, 6194
Remote Config [baseline] (659.256 µs) : 0, 659
Remote Config [candidate] (654.567 µs) : 0, 655
Telemetry [baseline] (8.191 ms) : 0, 8191
Telemetry [candidate] (8.246 ms) : 0, 8246
ProfilingAgent [baseline] (96.306 ms) : 0, 96306
ProfilingAgent [candidate] (96.334 ms) : 0, 96334
Profiling [baseline] (96.329 ms) : 0, 96329
Profiling [candidate] (96.357 ms) : 0, 96357
Loading
Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.49.0-SNAPSHOT~ef0443286b, baseline=1.49.0-SNAPSHOT~0e18e0e887

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.011 s) : 0, 1010735
Total [baseline] (8.668 s) : 0, 8667803
Agent [candidate] (1.011 s) : 0, 1010708
Total [candidate] (8.637 s) : 0, 8636788
section iast
Agent [baseline] (1.138 s) : 0, 1138292
Total [baseline] (9.202 s) : 0, 9202227
Agent [candidate] (1.139 s) : 0, 1138799
Total [candidate] (9.221 s) : 0, 9221169
section iast_HARDCODED_SECRET_DISABLED
Agent [baseline] (1.134 s) : 0, 1134109
Total [baseline] (9.154 s) : 0, 9154105
Agent [candidate] (1.137 s) : 0, 1136537
Total [candidate] (9.203 s) : 0, 9202729
section iast_TELEMETRY_OFF
Agent [baseline] (1.135 s) : 0, 1134858
Total [baseline] (9.187 s) : 0, 9187419
Agent [candidate] (1.143 s) : 0, 1142861
Total [candidate] (9.222 s) : 0, 9222472
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.011 s -
Agent iast 1.138 s 127.557 ms (12.6%)
Agent iast_HARDCODED_SECRET_DISABLED 1.134 s 123.374 ms (12.2%)
Agent iast_TELEMETRY_OFF 1.135 s 124.123 ms (12.3%)
Total tracing 8.668 s -
Total iast 9.202 s 534.424 ms (6.2%)
Total iast_HARDCODED_SECRET_DISABLED 9.154 s 486.302 ms (5.6%)
Total iast_TELEMETRY_OFF 9.187 s 519.616 ms (6.0%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.011 s -
Agent iast 1.139 s 128.091 ms (12.7%)
Agent iast_HARDCODED_SECRET_DISABLED 1.137 s 125.829 ms (12.4%)
Agent iast_TELEMETRY_OFF 1.143 s 132.153 ms (13.1%)
Total tracing 8.637 s -
Total iast 9.221 s 584.38 ms (6.8%)
Total iast_HARDCODED_SECRET_DISABLED 9.203 s 565.941 ms (6.6%)
Total iast_TELEMETRY_OFF 9.222 s 585.684 ms (6.8%)
gantt
    title insecure-bank - break down per module: candidate=1.49.0-SNAPSHOT~ef0443286b, baseline=1.49.0-SNAPSHOT~0e18e0e887

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (675.586 ms) : 0, 675586
BytebuddyAgent [candidate] (672.289 ms) : 0, 672289
GlobalTracer [baseline] (240.643 ms) : 0, 240643
GlobalTracer [candidate] (240.577 ms) : 0, 240577
AppSec [baseline] (54.874 ms) : 0, 54874
AppSec [candidate] (54.747 ms) : 0, 54747
Debugger [baseline] (6.201 ms) : 0, 6201
Debugger [candidate] (6.881 ms) : 0, 6881
Remote Config [baseline] (720.12 µs) : 0, 720
Remote Config [candidate] (698.462 µs) : 0, 698
Telemetry [baseline] (9.234 ms) : 0, 9234
Telemetry [candidate] (12.134 ms) : 0, 12134
section iast
BytebuddyAgent [baseline] (790.805 ms) : 0, 790805
BytebuddyAgent [candidate] (791.543 ms) : 0, 791543
GlobalTracer [baseline] (230.537 ms) : 0, 230537
GlobalTracer [candidate] (230.501 ms) : 0, 230501
IAST [baseline] (22.765 ms) : 0, 22765
IAST [candidate] (22.813 ms) : 0, 22813
AppSec [baseline] (56.292 ms) : 0, 56292
AppSec [candidate] (56.229 ms) : 0, 56229
Debugger [baseline] (5.944 ms) : 0, 5944
Debugger [candidate] (5.89 ms) : 0, 5890
Remote Config [baseline] (588.018 µs) : 0, 588
Remote Config [candidate] (581.053 µs) : 0, 581
Telemetry [baseline] (7.947 ms) : 0, 7947
Telemetry [candidate] (7.876 ms) : 0, 7876
section iast_HARDCODED_SECRET_DISABLED
BytebuddyAgent [baseline] (787.476 ms) : 0, 787476
BytebuddyAgent [candidate] (788.943 ms) : 0, 788943
GlobalTracer [baseline] (229.406 ms) : 0, 229406
GlobalTracer [candidate] (229.768 ms) : 0, 229768
IAST [baseline] (22.923 ms) : 0, 22923
IAST [candidate] (22.985 ms) : 0, 22985
AppSec [baseline] (56.735 ms) : 0, 56735
AppSec [candidate] (56.995 ms) : 0, 56995
Debugger [baseline] (5.842 ms) : 0, 5842
Debugger [candidate] (5.918 ms) : 0, 5918
Remote Config [baseline] (581.51 µs) : 0, 582
Remote Config [candidate] (587.556 µs) : 0, 588
Telemetry [baseline] (7.826 ms) : 0, 7826
Telemetry [candidate] (7.862 ms) : 0, 7862
section iast_TELEMETRY_OFF
BytebuddyAgent [baseline] (787.966 ms) : 0, 787966
BytebuddyAgent [candidate] (794.134 ms) : 0, 794134
GlobalTracer [baseline] (230.831 ms) : 0, 230831
GlobalTracer [candidate] (231.816 ms) : 0, 231816
IAST [baseline] (22.364 ms) : 0, 22364
IAST [candidate] (22.58 ms) : 0, 22580
AppSec [baseline] (56.025 ms) : 0, 56025
AppSec [candidate] (56.408 ms) : 0, 56408
Debugger [baseline] (5.94 ms) : 0, 5940
Debugger [candidate] (5.926 ms) : 0, 5926
Remote Config [baseline] (608.529 µs) : 0, 609
Remote Config [candidate] (609.982 µs) : 0, 610
Telemetry [baseline] (7.762 ms) : 0, 7762
Telemetry [candidate] (7.855 ms) : 0, 7855
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
end_time 2025-05-06T08:49:33 2025-05-06T08:57:18
git_branch master nikita-tkachenko/instrument-logs-backend-fork-join-pool
git_commit_date 1746516330 1746520061
git_commit_sha 0e18e0e ef04432
release_version 1.49.0-SNAPSHOT~0e18e0e887 1.49.0-SNAPSHOT~ef0443286b
start_time 2025-05-06T08:49:19 2025-05-06T08:57:03
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1746522236 1746522236
ci_job_id 925006849 925006849
ci_pipeline_id 64211755 64211755
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-dhdkofs9-project-304-concurrent-1-iszcesj6 6.8.0-1027-aws #29~22.04.1-Ubuntu SMP Sun Mar 30 07:45:38 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-dhdkofs9-project-304-concurrent-1-iszcesj6 6.8.0-1027-aws #29~22.04.1-Ubuntu SMP Sun Mar 30 07:45:38 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
variant iast iast

Summary

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

Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.49.0-SNAPSHOT~ef0443286b, baseline=1.49.0-SNAPSHOT~0e18e0e887
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.354 ms) : 1335, 1374
.   : milestone, 1354,
appsec (1.733 ms) : 1710, 1756
.   : milestone, 1733,
appsec_no_iast (1.724 ms) : 1701, 1747
.   : milestone, 1724,
code_origins (1.682 ms) : 1655, 1709
.   : milestone, 1682,
iast (1.52 ms) : 1496, 1543
.   : milestone, 1520,
profiling (1.52 ms) : 1497, 1544
.   : milestone, 1520,
tracing (1.484 ms) : 1459, 1510
.   : milestone, 1484,
section candidate
no_agent (1.367 ms) : 1347, 1386
.   : milestone, 1367,
appsec (1.741 ms) : 1718, 1765
.   : milestone, 1741,
appsec_no_iast (1.748 ms) : 1724, 1772
.   : milestone, 1748,
code_origins (1.688 ms) : 1662, 1715
.   : milestone, 1688,
iast (1.505 ms) : 1481, 1528
.   : milestone, 1505,
profiling (1.517 ms) : 1494, 1541
.   : milestone, 1517,
tracing (1.488 ms) : 1464, 1513
.   : milestone, 1488,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.354 ms [1.335 ms, 1.374 ms] -
appsec 1.733 ms [1.71 ms, 1.756 ms] 378.524 µs (27.9%)
appsec_no_iast 1.724 ms [1.701 ms, 1.747 ms] 369.547 µs (27.3%)
code_origins 1.682 ms [1.655 ms, 1.709 ms] 327.449 µs (24.2%)
iast 1.52 ms [1.496 ms, 1.543 ms] 165.127 µs (12.2%)
profiling 1.52 ms [1.497 ms, 1.544 ms] 165.851 µs (12.2%)
tracing 1.484 ms [1.459 ms, 1.51 ms] 129.713 µs (9.6%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.367 ms [1.347 ms, 1.386 ms] -
appsec 1.741 ms [1.718 ms, 1.765 ms] 374.757 µs (27.4%)
appsec_no_iast 1.748 ms [1.724 ms, 1.772 ms] 381.577 µs (27.9%)
code_origins 1.688 ms [1.662 ms, 1.715 ms] 321.929 µs (23.6%)
iast 1.505 ms [1.481 ms, 1.528 ms] 138.367 µs (10.1%)
profiling 1.517 ms [1.494 ms, 1.541 ms] 150.879 µs (11.0%)
tracing 1.488 ms [1.464 ms, 1.513 ms] 121.922 µs (8.9%)
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.49.0-SNAPSHOT~ef0443286b, baseline=1.49.0-SNAPSHOT~0e18e0e887
    dateFormat X
    axisFormat %s
section baseline
no_agent (388.543 µs) : 369, 408
.   : milestone, 389,
iast (524.177 µs) : 500, 548
.   : milestone, 524,
iast_FULL (743.735 µs) : 720, 767
.   : milestone, 744,
iast_GLOBAL (574.483 µs) : 551, 598
.   : milestone, 574,
iast_HARDCODED_SECRET_DISABLED (531.845 µs) : 509, 555
.   : milestone, 532,
iast_INACTIVE (471.732 µs) : 449, 494
.   : milestone, 472,
iast_TELEMETRY_OFF (518.021 µs) : 495, 541
.   : milestone, 518,
tracing (462.162 µs) : 440, 484
.   : milestone, 462,
section candidate
no_agent (384.904 µs) : 365, 405
.   : milestone, 385,
iast (528.501 µs) : 505, 552
.   : milestone, 529,
iast_FULL (736.223 µs) : 713, 760
.   : milestone, 736,
iast_GLOBAL (582.271 µs) : 558, 606
.   : milestone, 582,
iast_HARDCODED_SECRET_DISABLED (522.629 µs) : 500, 545
.   : milestone, 523,
iast_INACTIVE (464.884 µs) : 443, 487
.   : milestone, 465,
iast_TELEMETRY_OFF (515.989 µs) : 494, 538
.   : milestone, 516,
tracing (459.221 µs) : 437, 481
.   : milestone, 459,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 388.543 µs [368.856 µs, 408.229 µs] -
iast 524.177 µs [500.136 µs, 548.218 µs] 135.635 µs (34.9%)
iast_FULL 743.735 µs [720.347 µs, 767.122 µs] 355.192 µs (91.4%)
iast_GLOBAL 574.483 µs [551.244 µs, 597.722 µs] 185.94 µs (47.9%)
iast_HARDCODED_SECRET_DISABLED 531.845 µs [508.582 µs, 555.108 µs] 143.302 µs (36.9%)
iast_INACTIVE 471.732 µs [449.168 µs, 494.295 µs] 83.189 µs (21.4%)
iast_TELEMETRY_OFF 518.021 µs [495.096 µs, 540.946 µs] 129.479 µs (33.3%)
tracing 462.162 µs [440.152 µs, 484.173 µs] 73.62 µs (18.9%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 384.904 µs [365.085 µs, 404.724 µs] -
iast 528.501 µs [505.424 µs, 551.579 µs] 143.597 µs (37.3%)
iast_FULL 736.223 µs [712.831 µs, 759.616 µs] 351.319 µs (91.3%)
iast_GLOBAL 582.271 µs [558.493 µs, 606.049 µs] 197.366 µs (51.3%)
iast_HARDCODED_SECRET_DISABLED 522.629 µs [500.065 µs, 545.194 µs] 137.725 µs (35.8%)
iast_INACTIVE 464.884 µs [442.774 µs, 486.994 µs] 79.98 µs (20.8%)
iast_TELEMETRY_OFF 515.989 µs [493.583 µs, 538.395 µs] 131.084 µs (34.1%)
tracing 459.221 µs [437.368 µs, 481.075 µs] 74.317 µs (19.3%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master nikita-tkachenko/instrument-logs-backend-fork-join-pool
git_commit_date 1746516330 1746520061
git_commit_sha 0e18e0e ef04432
release_version 1.49.0-SNAPSHOT~0e18e0e887 1.49.0-SNAPSHOT~ef0443286b
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1746522755 1746522755
ci_job_id 925006852 925006852
ci_pipeline_id 64211755 64211755
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-z2euzavw-project-304-concurrent-0-zkb9oyos 6.8.0-1027-aws #29~22.04.1-Ubuntu SMP Sun Mar 30 07:45:38 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-z2euzavw-project-304-concurrent-0-zkb9oyos 6.8.0-1027-aws #29~22.04.1-Ubuntu SMP Sun Mar 30 07:45:38 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
variant appsec appsec

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.49.0-SNAPSHOT~ef0443286b, baseline=1.49.0-SNAPSHOT~0e18e0e887
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.476 ms) : 1464, 1488
.   : milestone, 1476,
appsec (2.384 ms) : 2337, 2432
.   : milestone, 2384,
iast (2.161 ms) : 2101, 2220
.   : milestone, 2161,
iast_GLOBAL (2.215 ms) : 2155, 2276
.   : milestone, 2215,
profiling (2.487 ms) : 2307, 2667
.   : milestone, 2487,
tracing (2.004 ms) : 1958, 2051
.   : milestone, 2004,
section candidate
no_agent (1.48 ms) : 1468, 1491
.   : milestone, 1480,
appsec (2.389 ms) : 2342, 2437
.   : milestone, 2389,
iast (2.167 ms) : 2107, 2227
.   : milestone, 2167,
iast_GLOBAL (2.211 ms) : 2151, 2271
.   : milestone, 2211,
profiling (2.041 ms) : 1992, 2089
.   : milestone, 2041,
tracing (1.987 ms) : 1941, 2033
.   : milestone, 1987,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.476 ms [1.464 ms, 1.488 ms] -
appsec 2.384 ms [2.337 ms, 2.432 ms] 908.095 µs (61.5%)
iast 2.161 ms [2.101 ms, 2.22 ms] 684.63 µs (46.4%)
iast_GLOBAL 2.215 ms [2.155 ms, 2.276 ms] 739.288 µs (50.1%)
profiling 2.487 ms [2.307 ms, 2.667 ms] 1.011 ms (68.5%)
tracing 2.004 ms [1.958 ms, 2.051 ms] 528.378 µs (35.8%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.48 ms [1.468 ms, 1.491 ms] -
appsec 2.389 ms [2.342 ms, 2.437 ms] 909.557 µs (61.5%)
iast 2.167 ms [2.107 ms, 2.227 ms] 687.446 µs (46.5%)
iast_GLOBAL 2.211 ms [2.151 ms, 2.271 ms] 731.328 µs (49.4%)
profiling 2.041 ms [1.992 ms, 2.089 ms] 560.982 µs (37.9%)
tracing 1.987 ms [1.941 ms, 2.033 ms] 507.274 µs (34.3%)
Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.49.0-SNAPSHOT~ef0443286b, baseline=1.49.0-SNAPSHOT~0e18e0e887
    dateFormat X
    axisFormat %s
section baseline
no_agent (15.405 s) : 15405000, 15405000
.   : milestone, 15405000,
appsec (14.976 s) : 14976000, 14976000
.   : milestone, 14976000,
iast (18.512 s) : 18512000, 18512000
.   : milestone, 18512000,
iast_GLOBAL (18.217 s) : 18217000, 18217000
.   : milestone, 18217000,
profiling (15.262 s) : 15262000, 15262000
.   : milestone, 15262000,
tracing (15.011 s) : 15011000, 15011000
.   : milestone, 15011000,
section candidate
no_agent (15.368 s) : 15368000, 15368000
.   : milestone, 15368000,
appsec (15.072 s) : 15072000, 15072000
.   : milestone, 15072000,
iast (19.027 s) : 19027000, 19027000
.   : milestone, 19027000,
iast_GLOBAL (17.967 s) : 17967000, 17967000
.   : milestone, 17967000,
profiling (14.886 s) : 14886000, 14886000
.   : milestone, 14886000,
tracing (14.873 s) : 14873000, 14873000
.   : milestone, 14873000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.405 s [15.405 s, 15.405 s] -
appsec 14.976 s [14.976 s, 14.976 s] -429.0 ms (-2.8%)
iast 18.512 s [18.512 s, 18.512 s] 3.107 s (20.2%)
iast_GLOBAL 18.217 s [18.217 s, 18.217 s] 2.812 s (18.3%)
profiling 15.262 s [15.262 s, 15.262 s] -143.0 ms (-0.9%)
tracing 15.011 s [15.011 s, 15.011 s] -394.0 ms (-2.6%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.368 s [15.368 s, 15.368 s] -
appsec 15.072 s [15.072 s, 15.072 s] -296.0 ms (-1.9%)
iast 19.027 s [19.027 s, 19.027 s] 3.659 s (23.8%)
iast_GLOBAL 17.967 s [17.967 s, 17.967 s] 2.599 s (16.9%)
profiling 14.886 s [14.886 s, 14.886 s] -482.0 ms (-3.1%)
tracing 14.873 s [14.873 s, 14.873 s] -495.0 ms (-3.2%)

@@ -72,6 +72,11 @@ public final class TraceInstrumentationConfig {

public static final String JDBC_CONNECTION_CLASS_NAME = "trace.jdbc.connection.class.name";

public static final String AKKA_FORK_JOIN_TASK_NAME = "trace.akka.fork.join.task.name";
Copy link
Collaborator

Choose a reason for hiding this comment

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

it's really a nit (for the three configuration options). Since it's an additional class (it matches with a or) perhaps something like trace.akka.additional.fork.join.task.name is more clear

Copy link
Collaborator

@amarziali amarziali left a comment

Choose a reason for hiding this comment

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

LGTM thanks for having taken into account the observations. I left a nit on the configuration names.

@nikita-tkachenko-datadog nikita-tkachenko-datadog changed the title Instrument logs-backend forks of Akka's ForkJoin pool Make Akka's ForkJoin pool instrumented class names configurable May 5, 2025
@nikita-tkachenko-datadog nikita-tkachenko-datadog enabled auto-merge (squash) May 5, 2025 14:10
@nikita-tkachenko-datadog nikita-tkachenko-datadog merged commit 745b2f1 into master May 6, 2025
454 checks passed
@nikita-tkachenko-datadog nikita-tkachenko-datadog deleted the nikita-tkachenko/instrument-logs-backend-fork-join-pool branch May 6, 2025 10:27
@github-actions github-actions bot added this to the 1.49.0 milestone May 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
comp: ci visibility Continuous Integration Visibility tag: no release notes Changes to exclude from release notes type: bug
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants