-
Notifications
You must be signed in to change notification settings - Fork 312
Disable byte-buddy's Nexus mechanism #9569
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
…rs use of Unsafe)
🎯 Code Coverage 🔗 Commit SHA: 46155af | Docs | Was this helpful? Give us feedback! |
BenchmarksStartupParameters
See matching parameters
SummaryFound 14 performance improvements and 1 performance regressions! Performance is the same for 34 metrics, 10 unstable metrics.
Startup time reports for petclinicgantt
title petclinic - global startup overhead: candidate=1.54.0-SNAPSHOT~46155af318, baseline=1.54.0-SNAPSHOT~418fb39b19
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.064 s) : 0, 1064330
Total [baseline] (10.64 s) : 0, 10639661
Agent [candidate] (1.02 s) : 0, 1020018
Total [candidate] (10.714 s) : 0, 10714376
section appsec
Agent [baseline] (1.239 s) : 0, 1239258
Total [baseline] (11.029 s) : 0, 11028661
Agent [candidate] (1.198 s) : 0, 1198373
Total [candidate] (11.02 s) : 0, 11020010
section iast
Agent [baseline] (1.191 s) : 0, 1190822
Total [baseline] (11.125 s) : 0, 11125106
Agent [candidate] (1.158 s) : 0, 1157980
Total [candidate] (11.113 s) : 0, 11113123
section profiling
Agent [baseline] (1.219 s) : 0, 1218788
Total [baseline] (11.035 s) : 0, 11035308
Agent [candidate] (1.167 s) : 0, 1166830
Total [candidate] (11.081 s) : 0, 11080853
gantt
title petclinic - break down per module: candidate=1.54.0-SNAPSHOT~46155af318, baseline=1.54.0-SNAPSHOT~418fb39b19
dateFormat X
axisFormat %s
section tracing
crashtracking [baseline] (1.458 ms) : 0, 1458
crashtracking [candidate] (1.445 ms) : 0, 1445
BytebuddyAgent [baseline] (733.291 ms) : 0, 733291
BytebuddyAgent [candidate] (686.765 ms) : 0, 686765
GlobalTracer [baseline] (253.962 ms) : 0, 253962
GlobalTracer [candidate] (258.687 ms) : 0, 258687
AppSec [baseline] (30.998 ms) : 0, 30998
AppSec [candidate] (31.671 ms) : 0, 31671
Debugger [baseline] (6.45 ms) : 0, 6450
Debugger [candidate] (6.325 ms) : 0, 6325
Remote Config [baseline] (716.224 µs) : 0, 716
Remote Config [candidate] (679.791 µs) : 0, 680
Telemetry [baseline] (16.336 ms) : 0, 16336
Telemetry [candidate] (13.384 ms) : 0, 13384
section appsec
crashtracking [baseline] (1.459 ms) : 0, 1459
crashtracking [candidate] (1.448 ms) : 0, 1448
BytebuddyAgent [baseline] (759.043 ms) : 0, 759043
BytebuddyAgent [candidate] (711.833 ms) : 0, 711833
GlobalTracer [baseline] (247.159 ms) : 0, 247159
GlobalTracer [candidate] (251.58 ms) : 0, 251580
AppSec [baseline] (171.548 ms) : 0, 171548
AppSec [candidate] (170.116 ms) : 0, 170116
Debugger [baseline] (6.0 ms) : 0, 6000
Debugger [candidate] (6.83 ms) : 0, 6830
Remote Config [baseline] (648.155 µs) : 0, 648
Remote Config [candidate] (619.302 µs) : 0, 619
Telemetry [baseline] (8.502 ms) : 0, 8502
Telemetry [candidate] (9.917 ms) : 0, 9917
IAST [baseline] (23.747 ms) : 0, 23747
IAST [candidate] (25.034 ms) : 0, 25034
section iast
crashtracking [baseline] (1.455 ms) : 0, 1455
crashtracking [candidate] (1.486 ms) : 0, 1486
BytebuddyAgent [baseline] (852.432 ms) : 0, 852432
BytebuddyAgent [candidate] (811.751 ms) : 0, 811751
GlobalTracer [baseline] (245.326 ms) : 0, 245326
GlobalTracer [candidate] (250.084 ms) : 0, 250084
AppSec [baseline] (25.265 ms) : 0, 25265
AppSec [candidate] (27.982 ms) : 0, 27982
Debugger [baseline] (6.018 ms) : 0, 6018
Debugger [candidate] (6.098 ms) : 0, 6098
Remote Config [baseline] (594.817 µs) : 0, 595
Remote Config [candidate] (599.517 µs) : 0, 600
Telemetry [baseline] (8.229 ms) : 0, 8229
Telemetry [candidate] (8.13 ms) : 0, 8130
IAST [baseline] (30.511 ms) : 0, 30511
IAST [candidate] (30.789 ms) : 0, 30789
section profiling
crashtracking [baseline] (1.451 ms) : 0, 1451
crashtracking [candidate] (1.437 ms) : 0, 1437
BytebuddyAgent [baseline] (767.547 ms) : 0, 767547
BytebuddyAgent [candidate] (721.382 ms) : 0, 721382
GlobalTracer [baseline] (234.742 ms) : 0, 234742
GlobalTracer [candidate] (236.432 ms) : 0, 236432
AppSec [baseline] (30.949 ms) : 0, 30949
AppSec [candidate] (31.106 ms) : 0, 31106
Debugger [baseline] (13.022 ms) : 0, 13022
Debugger [candidate] (6.478 ms) : 0, 6478
Remote Config [baseline] (726.784 µs) : 0, 727
Remote Config [candidate] (700.205 µs) : 0, 700
Telemetry [baseline] (9.438 ms) : 0, 9438
Telemetry [candidate] (16.701 ms) : 0, 16701
ProfilingAgent [baseline] (109.469 ms) : 0, 109469
ProfilingAgent [candidate] (101.465 ms) : 0, 101465
Profiling [baseline] (110.104 ms) : 0, 110104
Profiling [candidate] (102.06 ms) : 0, 102060
Startup time reports for insecure-bankgantt
title insecure-bank - global startup overhead: candidate=1.54.0-SNAPSHOT~46155af318, baseline=1.54.0-SNAPSHOT~418fb39b19
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.063 s) : 0, 1062749
Total [baseline] (8.63 s) : 0, 8630200
Agent [candidate] (1.024 s) : 0, 1024121
Total [candidate] (8.653 s) : 0, 8653429
section iast
Agent [baseline] (1.191 s) : 0, 1190924
Total [baseline] (9.293 s) : 0, 9293054
Agent [candidate] (1.152 s) : 0, 1151936
Total [candidate] (9.421 s) : 0, 9420592
gantt
title insecure-bank - break down per module: candidate=1.54.0-SNAPSHOT~46155af318, baseline=1.54.0-SNAPSHOT~418fb39b19
dateFormat X
axisFormat %s
section tracing
crashtracking [baseline] (1.45 ms) : 0, 1450
crashtracking [candidate] (1.461 ms) : 0, 1461
BytebuddyAgent [baseline] (735.194 ms) : 0, 735194
BytebuddyAgent [candidate] (692.143 ms) : 0, 692143
GlobalTracer [baseline] (253.379 ms) : 0, 253379
GlobalTracer [candidate] (259.182 ms) : 0, 259182
AppSec [baseline] (30.772 ms) : 0, 30772
AppSec [candidate] (31.498 ms) : 0, 31498
Debugger [baseline] (6.368 ms) : 0, 6368
Debugger [candidate] (6.348 ms) : 0, 6348
Remote Config [baseline] (699.228 µs) : 0, 699
Remote Config [candidate] (681.644 µs) : 0, 682
Telemetry [baseline] (13.984 ms) : 0, 13984
Telemetry [candidate] (11.781 ms) : 0, 11781
section iast
crashtracking [baseline] (1.449 ms) : 0, 1449
crashtracking [candidate] (1.453 ms) : 0, 1453
BytebuddyAgent [baseline] (852.572 ms) : 0, 852572
BytebuddyAgent [candidate] (807.723 ms) : 0, 807723
GlobalTracer [baseline] (246.119 ms) : 0, 246119
GlobalTracer [candidate] (248.871 ms) : 0, 248871
AppSec [baseline] (26.056 ms) : 0, 26056
AppSec [candidate] (27.881 ms) : 0, 27881
Debugger [baseline] (6.074 ms) : 0, 6074
Debugger [candidate] (6.024 ms) : 0, 6024
Remote Config [baseline] (610.849 µs) : 0, 611
Remote Config [candidate] (596.747 µs) : 0, 597
Telemetry [baseline] (8.25 ms) : 0, 8250
Telemetry [candidate] (8.044 ms) : 0, 8044
IAST [baseline] (28.862 ms) : 0, 28862
IAST [candidate] (30.447 ms) : 0, 30447
LoadParameters
See matching parameters
SummaryFound 0 performance improvements and 3 performance regressions! Performance is the same for 9 metrics, 12 unstable metrics.
Request duration reports for insecure-bankgantt
title insecure-bank - request duration [CI 0.99] : candidate=1.54.0-SNAPSHOT~46155af318, baseline=1.54.0-SNAPSHOT~418fb39b19
dateFormat X
axisFormat %s
section baseline
no_agent (4.442 ms) : 4391, 4494
. : milestone, 4442,
iast (9.509 ms) : 9352, 9666
. : milestone, 9509,
iast_FULL (14.289 ms) : 14000, 14578
. : milestone, 14289,
iast_GLOBAL (10.494 ms) : 10309, 10679
. : milestone, 10494,
profiling (9.185 ms) : 9028, 9342
. : milestone, 9185,
tracing (7.849 ms) : 7729, 7969
. : milestone, 7849,
section candidate
no_agent (4.327 ms) : 4278, 4375
. : milestone, 4327,
iast (10.489 ms) : 10310, 10667
. : milestone, 10489,
iast_FULL (13.999 ms) : 13724, 14273
. : milestone, 13999,
iast_GLOBAL (10.989 ms) : 10793, 11185
. : milestone, 10989,
profiling (9.285 ms) : 9127, 9443
. : milestone, 9285,
tracing (7.739 ms) : 7630, 7847
. : milestone, 7739,
Request duration reports for petclinicgantt
title petclinic - request duration [CI 0.99] : candidate=1.54.0-SNAPSHOT~46155af318, baseline=1.54.0-SNAPSHOT~418fb39b19
dateFormat X
axisFormat %s
section baseline
no_agent (36.533 ms) : 36244, 36822
. : milestone, 36533,
appsec (47.236 ms) : 46824, 47647
. : milestone, 47236,
code_origins (47.091 ms) : 46676, 47505
. : milestone, 47091,
iast (45.611 ms) : 45230, 45991
. : milestone, 45611,
profiling (46.511 ms) : 46018, 47004
. : milestone, 46511,
tracing (46.09 ms) : 45697, 46483
. : milestone, 46090,
section candidate
no_agent (36.963 ms) : 36662, 37263
. : milestone, 36963,
appsec (47.576 ms) : 47133, 48020
. : milestone, 47576,
code_origins (45.979 ms) : 45575, 46382
. : milestone, 45979,
iast (44.4 ms) : 44035, 44765
. : milestone, 44400,
profiling (50.237 ms) : 49800, 50674
. : milestone, 50237,
tracing (45.249 ms) : 44842, 45657
. : milestone, 45249,
DacapoParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 11 metrics, 1 unstable metrics. Execution time for biojavagantt
title biojava - execution time [CI 0.99] : candidate=1.54.0-SNAPSHOT~46155af318, baseline=1.54.0-SNAPSHOT~418fb39b19
dateFormat X
axisFormat %s
section baseline
no_agent (14.999 s) : 14999000, 14999000
. : milestone, 14999000,
appsec (14.92 s) : 14920000, 14920000
. : milestone, 14920000,
iast (19.037 s) : 19037000, 19037000
. : milestone, 19037000,
iast_GLOBAL (17.894 s) : 17894000, 17894000
. : milestone, 17894000,
profiling (15.35 s) : 15350000, 15350000
. : milestone, 15350000,
tracing (14.815 s) : 14815000, 14815000
. : milestone, 14815000,
section candidate
no_agent (15.469 s) : 15469000, 15469000
. : milestone, 15469000,
appsec (15.031 s) : 15031000, 15031000
. : milestone, 15031000,
iast (18.717 s) : 18717000, 18717000
. : milestone, 18717000,
iast_GLOBAL (18.31 s) : 18310000, 18310000
. : milestone, 18310000,
profiling (15.409 s) : 15409000, 15409000
. : milestone, 15409000,
tracing (15.141 s) : 15141000, 15141000
. : milestone, 15141000,
Execution time for tomcatgantt
title tomcat - execution time [CI 0.99] : candidate=1.54.0-SNAPSHOT~46155af318, baseline=1.54.0-SNAPSHOT~418fb39b19
dateFormat X
axisFormat %s
section baseline
no_agent (1.479 ms) : 1468, 1491
. : milestone, 1479,
appsec (2.509 ms) : 2457, 2562
. : milestone, 2509,
iast (2.214 ms) : 2150, 2277
. : milestone, 2214,
iast_GLOBAL (2.256 ms) : 2193, 2319
. : milestone, 2256,
profiling (2.083 ms) : 2030, 2135
. : milestone, 2083,
tracing (2.04 ms) : 1991, 2090
. : milestone, 2040,
section candidate
no_agent (1.485 ms) : 1473, 1496
. : milestone, 1485,
appsec (3.682 ms) : 3467, 3897
. : milestone, 3682,
iast (2.215 ms) : 2152, 2278
. : milestone, 2215,
iast_GLOBAL (2.257 ms) : 2193, 2321
. : milestone, 2257,
profiling (2.063 ms) : 2012, 2114
. : milestone, 2063,
tracing (2.038 ms) : 1989, 2087
. : milestone, 2038,
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👏 praise: Thanks for the fix and the related explanation
What Does This Do
Disable byte-buddy's Nexus mechanism by setting the system property defined in https://javadoc.io/doc/net.bytebuddy/byte-buddy-dep/latest/constant-values.html#net.bytebuddy.dynamic.Nexus.PROPERTY
Motivation
We don't need byte-buddy's Nexus mechanism, and it triggers use of Unsafe.
The simple constructor for
AgentBuilder.Default
calls the more complexAgentBuilder
constructor withnew InitializationStrategy.SelfInjection.Split()
as the default initialization strategy. We override this setting later on when we calldisableClassFormatChanges()
, but this doesn't stop the eager construction ofInitializationStrategy.SelfInjection.Split
, even though it is not actually used.The
Split
constructor creates aNexusAccessor
which usesUnsafe
via reflection to inject the Nexus mechanism (a way of adding dynamic type initializers)Setting the
net.bytebuddy.nexus.disabled
system property totrue
skips injection of the Nexus mechanism, and avoids a startup warning about use ofUnsafe
on Java 24+