feat: emit TaskBlock events for native socket I/O - #666
Conversation
This comment has been minimized.
This comment has been minimized.
CI Test ResultsRun: #30894235207 | Commit:
Status Overview
Legend: ✅ passed | ❌ failed | ⚪ skipped | 🚫 cancelled Summary: Total: 32 | Passed: 32 | Failed: 0 Updated: 2026-08-04 09:18:09 UTC |
5de84e2 to
c4a2496
Compare
Benchmark Results (commit 4077c10)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/125241502 Commit:
|
| Benchmark | JDK | Latest | Dev | Δ (dev vs latest) | Issues L/D |
|---|---|---|---|---|---|
| akka-uct | 21 | ✅ 10318 ms (21 iters) | ✅ 10297 ms (21 iters) | ≈ -0.2% (±11.5%) | — / — |
| akka-uct | 25 | ✅ 8877 ms (24 iters) | ✅ 8872 ms (24 iters) | ≈ -0.1% (±10%) | — / — |
| finagle-chirper | 21 | ✅ 5924 ms (33 iters) | ✅ 6023 ms (33 iters) | ≈ +1.7% (±25.7%) | |
| finagle-chirper | 25 | ✅ 5440 ms (36 iters) | ✅ 5447 ms (36 iters) | ≈ +0.1% (±24%) | |
| fj-kmeans | 25 | ✅ 2819 ms (66 iters) | ✅ 2768 ms (68 iters) | ≈ -1.8% (±2.7%) | — / — |
| future-genetic | 21 | ✅ 2100 ms (89 iters) | ✅ 2118 ms (87 iters) | ≈ +0.9% (±2.8%) | — / — |
| future-genetic | 25 | ✅ 2072 ms (89 iters) | ✅ 2005 ms (93 iters) | 🟢 -3.2% | — / — |
| naive-bayes | 25 | ✅ 990 ms (172 iters) | ✅ 1017 ms (169 iters) | ≈ +2.7% (±31.9%) | — / — |
| reactors | 21 | ✅ 16610 ms (15 iters) | ✅ 16761 ms (15 iters) | ≈ +0.9% (±8%) | — / — |
| reactors | 25 | ✅ 18536 ms (15 iters) | ✅ 18473 ms (15 iters) | ≈ -0.3% (±2.8%) | — / — |
Internal counter details (ddprof)
ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
| Benchmark | JDK | Dropped rec | Dropped jvmti | Dropped trace | Skipped WC | AGCT fail | Unwind fail |
|---|---|---|---|---|---|---|---|
| akka-uct | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 2000 / 2002 | ✅ / ✅ | ✅ / ✅ |
| akka-uct | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 4 | 2240 / 2285 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 21 | ✅ / ✅ | ✅ / ✅ | 3 / 4 | 8783 / 8895 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 3 | 8381 / 7985 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 21 | ✅ / ✅ | ✅ / ✅ | 4 / ✅ | 1321 / ✅ | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 3 | 1268 / 1276 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / 2 | 2969 / 2966 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 25 | ✅ / ✅ | ✅ / ✅ | 3 / 1 | 2828 / 2888 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 4 | 3471 / 3500 | ✅ / ✅ | ✅ / ✅ |
| reactors | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 1675 / 1607 | ✅ / ✅ | ✅ / ✅ |
| reactors | 25 | ✅ / ✅ | ✅ / ✅ | 1 / ✅ | 1935 / 1843 | ✅ / ✅ | ✅ / ✅ |
7a6627e to
0aadd79
Compare
There was a problem hiding this comment.
Pull request overview
Adds TaskBlock event production for native socket I/O waits (Linux) by introducing native interposition + fd classification, expanding TaskBlock recording infrastructure (native + Java API), and updating wall-clock precheck behavior/tests to reflect lifecycle-owned suppression semantics.
Changes:
- Introduces
datadog.TaskBlockJFR event end-to-end: metadata, recording, counters, and Java public paired API (beginTaskBlock/endTaskBlock). - Implements Linux native socket I/O interposition + fd classification and emits TaskBlock for owned native I/O waits (plus lifecycle-safe patch/unpatch handling).
- Expands/updates Java + C++ test coverage and adds a wall-clock precheck overhead benchmark + native test fixture build support.
Reviewed changes
Copilot reviewed 91 out of 91 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/WallclockMitigationsCombinedTest.java | Updates assertions to reflect context-scoped threads not being suppression candidates. |
| ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/VirtualNativeIoTaskBlockTest.java | Adds (currently disabled) virtual-thread native I/O attribution coverage. |
| ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/UnfilteredWallPrecheckTest.java | Adds unfiltered (filter=) precheck behavior tests for owned-block suppression. |
| ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/UnfilteredWallPrecheckRestartTest.java | Verifies owned-block registry activation doesn’t leak across restart sequences. |
| ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/TaskBlockAssertions.java | Adds shared assertions for the datadog.TaskBlock event contract. |
| ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/PrecheckTest.java | Updates precheck tests/counters for lifecycle-owned suppression and unfiltered sampling. |
| ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/PrecheckEfficiencyTest.java | Adjusts benchmark-like tests to run under explicit filter= semantics. |
| ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/ParkTaskBlockTest.java | Adds TaskBlock coverage for Java-owned park hooks + suppression behavior. |
| ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/NativeSocketTaskBlockLifecycleTest.java | Adds (disabled) lifecycle tests for native socket hooks across stop/restart/uninstall. |
| ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/NativeIoBlockHelper.java | Adds JNI helper entrypoints for blocking Linux syscalls used in tests. |
| ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/MonitorTaskBlockTest.java | Adds TaskBlock coverage for monitor wait/contended callbacks and restart recovery. |
| ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/JvmtiBasedUnfilteredWallPrecheckTest.java | Runs unfiltered precheck coverage with delegated JVMTI stack collection. |
| ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/JvmtiBasedPrecheckTest.java | Ensures delegated stacks path uses explicit unfiltered recording flags. |
| ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/JvmtiBasedParkTaskBlockTest.java | Verifies TaskBlock production with delegated wall-clock stacks enabled. |
| ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/JvmtiBasedNativeSocketTaskBlockTest.java | Adds (disabled) native socket TaskBlock coverage with delegated stacks. |
| ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/JvmtiBasedMonitorTaskBlockTest.java | Verifies monitor TaskBlock production with delegated stacks enabled. |
| ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/JavaProfilerTaskBlockPreExistingThreadTest.java | Ensures pre-existing threads can initialize TaskBlock TLS and record events. |
| ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/JavaProfilerTaskBlockDisabledTest.java | Confirms paired API remains inactive under filter=0 (no all-thread scope). |
| ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/JavaProfilerTaskBlockApiTest.java | End-to-end tests for the paired public TaskBlock API and eligibility rules. |
| ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/J9WallClockPrecheckCapabilityTest.java | Ensures unsupported wall engine does not activate unfiltered precheck tracking on J9. |
| ddprof-test/src/test/java/com/datadoghq/profiler/JavaProfilerTest.java | Adds agentpath-based startup tests and pre-existing monitor callback coverage. |
| ddprof-test/src/test/java/com/datadoghq/profiler/JavaProfilerApiSurfaceTest.java | Locks public API surface for TaskBlock and monitor ownership/delegation. |
| ddprof-test/src/test/java/com/datadoghq/profiler/ExternalLauncher.java | Adds child-process scenarios for agent initialization + pre-existing monitor callbacks. |
| ddprof-test/src/test/java/com/datadoghq/profiler/context/OtelContextStorageModeTest.java | Ensures trace context is cleared during cleanup. |
| ddprof-test/src/test/java/com/datadoghq/profiler/context/AllNativeContextTest.java | Ensures trace context is cleared during cleanup. |
| ddprof-test/src/test/java/com/datadoghq/profiler/AbstractProfilerTest.java | Adds beforeProfilerStart() hook and clears trace context on stop. |
| ddprof-stresstest/src/jmh/java/com/datadoghq/profiler/WallClockPrecheckBenchmarkHooks.java | Exposes package-scoped owned-block hooks to JMH benchmarks. |
| ddprof-stresstest/src/jmh/java/com/datadoghq/profiler/stresstest/scenarios/throughput/WallClockPrecheckOverheadBenchmark.java | Adds throughput benchmark for precheck overhead under increasing owned-block populations. |
| ddprof-lib/src/test/resources/native-libs/unloadable-io-lib/unloadable_io.c | Adds native fixture library used by unload/unpatch safety tests. |
| ddprof-lib/src/test/resources/native-libs/unloadable-io-lib/Makefile | Build recipe for unloadable native fixture library. |
| ddprof-lib/src/test/resources/native-libs/reladyn-lib/reladyn.c | Expands relocation fixture to exercise multiple import slots for same symbol. |
| ddprof-lib/src/test/cpp/wallprecheck_args_ut.cpp | Adds capability + filter parsing tests for unfiltered wall precheck. |
| ddprof-lib/src/test/cpp/wallClockCounters_ut.cpp | Updates counter tests to new “suppressed owned block” naming. |
| ddprof-lib/src/test/cpp/wallClockCandidateSelector_ut.cpp | Adds tests for candidate selection/backfill logic used in wall-clock sampling. |
| ddprof-lib/src/test/cpp/park_state_ut.cpp | Extends tests for park + monitor block state snapshotting and slot transitions. |
| ddprof-lib/src/test/cpp/jvmSupport_ut.cpp | Adds tests for JNI-based platform vs virtual thread classification. |
| ddprof-lib/src/test/cpp/frame_ut.cpp | Adds test ensuring JVMTI→ASGCT frame copy preserves overlapping fields. |
| ddprof-lib/src/test/cpp/elfparser_ut.cpp | Adds import-location coverage + skips a deliberate race test under TSan. |
| ddprof-lib/src/main/java/com/datadoghq/profiler/JavaProfiler.java | Adds TaskBlock public API, monitor delegation flag, and thread-aware native hook signatures. |
| ddprof-lib/src/main/cpp/wallClockCounters.h | Renames/repurposes suppression counter for lifecycle-owned blocked intervals. |
| ddprof-lib/src/main/cpp/wallClockCandidateSelector.h | Adds bounded backfill selector for wall-clock sampling candidates. |
| ddprof-lib/src/main/cpp/wallClock.h | Integrates bounded backfill selection + adds unfiltered-precheck capability on wall engines. |
| ddprof-lib/src/main/cpp/vmEntry.h | Adds monitor ownership/delegation init-result plumbing to bridge initialization. |
| ddprof-lib/src/main/cpp/threadState.h | Adds IO_WAIT OS thread state. |
| ddprof-lib/src/main/cpp/threadLocalData.h | Adds per-thread TaskBlock, park, and monitor state tracking for event emission. |
| ddprof-lib/src/main/cpp/taskBlockRecorder.h | Declares TaskBlock record/finish helpers and eligibility logic. |
| ddprof-lib/src/main/cpp/taskBlockRecorder.cpp | Implements min-duration thresholding and “finish-at-exit” recording path. |
| ddprof-lib/src/main/cpp/symbols.h | Makes UnloadProtection movable and adds release() for retained handles. |
| ddprof-lib/src/main/cpp/symbols_macos.cpp | Implements move operations + release for UnloadProtection. |
| ddprof-lib/src/main/cpp/symbols_linux.cpp | Hardens ELF address computations, adds relocation parsing fixes, and sanitizer-specific VDSO behavior. |
| ddprof-lib/src/main/cpp/profiler.h | Adds TaskBlock recording entrypoints/rotation state and test hooks. |
| ddprof-lib/src/main/cpp/nativeSocketSampler.h | Refactors sampling to use shared fd classifier and adds active/disable helpers. |
| ddprof-lib/src/main/cpp/nativeSocketSampler.cpp | Integrates shared fd classifier, improves lifecycle handling around patch failures, and adds test observers. |
| ddprof-lib/src/main/cpp/nativeSocketInterposer.h | Adds Linux native I/O interposer API and hook specs for blocking syscalls. |
| ddprof-lib/src/main/cpp/nativeFdClassifier.h | Adds shared fd type classifier with epoch+incarnation tagging for reuse safety. |
| ddprof-lib/src/main/cpp/nativeBlock.h | Adds native owned-block scope for TaskBlock emission around blocking syscalls. |
| ddprof-lib/src/main/cpp/nativeBlock.cpp | Implements native blocking scope lifecycle + TaskBlock recording integration. |
| ddprof-lib/src/main/cpp/libraryPatcher.h | Extends patch tracking for native I/O hook sets and safe restoration across unload. |
| ddprof-lib/src/main/cpp/jvmThread.h | Adds capability query for resolving native thread IDs beyond the caller. |
| ddprof-lib/src/main/cpp/jvmThread.cpp | Implements native thread ID lookup capability helper. |
| ddprof-lib/src/main/cpp/jvmSupport.h | Adds platform-thread classification helper. |
| ddprof-lib/src/main/cpp/jvmSupport.cpp | Implements JNI IsVirtualThread-based platform-thread classification. |
| ddprof-lib/src/main/cpp/jfrMetadata.h | Adds JFR type ID for TaskBlock. |
| ddprof-lib/src/main/cpp/jfrMetadata.cpp | Defines datadog.TaskBlock event schema and updates wall epoch suppression field name. |
| ddprof-lib/src/main/cpp/frames.h | Adds safe JVMTI→ASGCT frame copy helper. |
| ddprof-lib/src/main/cpp/flightRecorder.h | Adds TaskBlock recording entrypoints. |
| ddprof-lib/src/main/cpp/flightRecorder.cpp | Emits TaskBlock events and adds IO_WAIT thread state to constant pool. |
| ddprof-lib/src/main/cpp/event.h | Adds TaskBlock event struct and renames wall epoch suppression field. |
| ddprof-lib/src/main/cpp/engine.h | Adds wall-engine capability hook for unfiltered precheck consumption. |
| ddprof-lib/src/main/cpp/counters.h | Adds counters for TaskBlock and precheck backfill/lookup budgeting. |
| ddprof-lib/src/main/cpp/codeCache.h | Redesigns import tracking to support multiple slots per import + patch preparation. |
| ddprof-lib/src/main/cpp/codeCache.cpp | Implements multi-location import storage, patchability prep, and broader import discovery. |
| ddprof-lib/build.gradle.kts | Wires native fixture build directories into gtest extension configuration. |
| build-logic/conventions/src/main/kotlin/com/datadoghq/native/gtest/GtestPlugin.kt | Adds native fixture build task and CI-friendly build task dependency behavior. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
18130c4 to
4698b06
Compare
Benchmark Results (commit 4698b06)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/126018479 Commit: ✅ Within expected boundariesNo significant runtime deltas (all within run-to-run noise) and no internal-counter outliers. Runtime details (per benchmark × JDK)
Internal counter details (ddprof)ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
|
4698b06 to
cb952e8
Compare
cb952e8 to
cd67725
Compare
Benchmark Results (commit cd67725)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/126291644 Commit:
|
| Benchmark | JDK | Latest | Dev | Δ (dev vs latest) | Issues L/D |
|---|---|---|---|---|---|
| akka-uct | 21 | ✅ 10352 ms (21 iters) | ✅ 10315 ms (21 iters) | ≈ -0.4% (±11.2%) | — / — |
| akka-uct | 25 | ✅ 8989 ms (24 iters) | ✅ 8928 ms (24 iters) | ≈ -0.7% (±10.6%) | — / — |
| finagle-chirper | 21 | ✅ 5977 ms (33 iters) | ✅ 5873 ms (33 iters) | ≈ -1.7% (±24.6%) | |
| finagle-chirper | 25 | ✅ 5487 ms (36 iters) | ✅ 5512 ms (36 iters) | ≈ +0.5% (±24.7%) | |
| fj-kmeans | 21 | ✅ 2824 ms (66 iters) | ✅ 2737 ms (69 iters) | 🟢 -3.1% | — / — |
| fj-kmeans | 25 | ✅ 2810 ms (66 iters) | ✅ 2810 ms (66 iters) | ≈ 0% (±2.6%) | — / — |
| future-genetic | 21 | ✅ 2074 ms (89 iters) | ✅ 2074 ms (89 iters) | ≈ 0% (±2.6%) | — / — |
| future-genetic | 25 | ✅ 2073 ms (89 iters) | ✅ 2093 ms (88 iters) | ≈ +1% (±2.6%) | — / — |
| naive-bayes | 21 | ✅ 1285 ms (134 iters) | ✅ 1234 ms (138 iters) | ≈ -4% (±32.2%) | — / — |
| naive-bayes | 25 | ✅ 994 ms (172 iters) | ✅ 1022 ms (168 iters) | ≈ +2.8% (±32.1%) | — / — |
| reactors | 21 | ✅ 16106 ms (15 iters) | ✅ 16148 ms (15 iters) | ≈ +0.3% (±6.8%) | — / — |
| reactors | 25 | ✅ 18475 ms (15 iters) | ✅ 18665 ms (15 iters) | ≈ +1% (±3.7%) | — / — |
Internal counter details (ddprof)
ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
| Benchmark | JDK | Dropped rec | Dropped jvmti | Dropped trace | Skipped WC | AGCT fail | Unwind fail |
|---|---|---|---|---|---|---|---|
| akka-uct | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 1 | 2055 / 2030 | ✅ / ✅ | ✅ / ✅ |
| akka-uct | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 1 | 2174 / 2475 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 21 | ✅ / ✅ | ✅ / ✅ | 4 / 4 | 8918 / 8594 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 25 | ✅ / ✅ | ✅ / ✅ | 3 / ✅ | 7992 / 8655 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 2 | 1289 / 1309 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 3 | 1291 / 1252 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 21 | ✅ / ✅ | ✅ / ✅ | 2 / 2 | 2945 / 2931 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 25 | ✅ / ✅ | ✅ / ✅ | 3 / ✅ | 2867 / 2908 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 21 | ✅ / ✅ | ✅ / ✅ | 3 / 3 | 3527 / 3516 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 25 | ✅ / ✅ | ✅ / ✅ | 3 / 2 | 3486 / 3473 | ✅ / ✅ | ✅ / ✅ |
| reactors | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 1682 / 1564 | ✅ / ✅ | ✅ / ✅ |
| reactors | 25 | ✅ / ✅ | ✅ / ✅ | 1 / ✅ | 1819 / 1948 | ✅ / ✅ | ✅ / ✅ |
Reliability & Chaos Results✅ All reliability & chaos checks passed Pipeline: https://gitlab.ddbuild.io/DataDog/java-profiler/-/pipelines/128787972 |
cd67725 to
eca3d88
Compare
Benchmark Results (commit eca3d88)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/126390430 Commit:
|
| Benchmark | JDK | Latest | Dev | Δ (dev vs latest) | Issues L/D |
|---|---|---|---|---|---|
| akka-uct | 21 | ✅ 10305 ms (21 iters) | ✅ 10365 ms (21 iters) | ≈ +0.6% (±11.5%) | — / — |
| akka-uct | 25 | ✅ 8825 ms (24 iters) | ✅ 8930 ms (24 iters) | ≈ +1.2% (±10%) | — / — |
| finagle-chirper | 21 | ✅ 5940 ms (33 iters) | ✅ 5959 ms (33 iters) | ≈ +0.3% (±25.2%) | |
| fj-kmeans | 21 | ✅ 2707 ms (69 iters) | ✅ 2698 ms (70 iters) | ≈ -0.3% (±2.7%) | — / — |
| fj-kmeans | 25 | ✅ 2735 ms (69 iters) | ✅ 2811 ms (67 iters) | 🔴 +2.8% | — / — |
| future-genetic | 21 | ✅ 2078 ms (89 iters) | ✅ 2090 ms (88 iters) | ≈ +0.6% (±2.6%) | — / — |
| future-genetic | 25 | ✅ 2056 ms (91 iters) | ✅ 2102 ms (88 iters) | ≈ +2.2% (±2.6%) | — / — |
| naive-bayes | 21 | ✅ 1251 ms (137 iters) | ✅ 1225 ms (139 iters) | ≈ -2.1% (±32.2%) | — / — |
| naive-bayes | 25 | ✅ 1026 ms (167 iters) | ✅ 1005 ms (170 iters) | ≈ -2% (±31.1%) | — / — |
| reactors | 21 | ✅ 16519 ms (15 iters) | ✅ 16203 ms (15 iters) | ≈ -1.9% (±7.4%) | — / — |
Internal counter details (ddprof)
ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
| Benchmark | JDK | Dropped rec | Dropped jvmti | Dropped trace | Skipped WC | AGCT fail | Unwind fail |
|---|---|---|---|---|---|---|---|
| akka-uct | 21 | ✅ / ✅ | ✅ / ✅ | 3 / 1 | 1985 / 1922 | ✅ / ✅ | ✅ / ✅ |
| akka-uct | 25 | ✅ / ✅ | ✅ / ✅ | 3 / 3 | 2211 / 2276 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 21 | ✅ / ✅ | ✅ / ✅ | 6 / 5 | 8445 / 8610 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 21 | ✅ / ✅ | ✅ / ✅ | 2 / 3 | 1308 / 1293 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 25 | ✅ / ✅ | ✅ / ✅ | 3 / 3 | 1276 / 1318 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 2911 / 2965 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 25 | ✅ / ✅ | ✅ / ✅ | 3 / 1 | 2948 / 2836 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 21 | ✅ / ✅ | ✅ / ✅ | 3 / 5 | 3479 / 3486 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 4 | 3474 / 3438 | ✅ / ✅ | ✅ / ✅ |
| reactors | 21 | ✅ / ✅ | ✅ / ✅ | 1 / ✅ | 1748 / 1664 | ✅ / ✅ | ✅ / ✅ |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: eca3d88f9e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Benchmark Results (commit 3919bfb)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/126818333 Commit:
|
| Benchmark | JDK | Latest | Dev | Δ (dev vs latest) | Issues L/D |
|---|---|---|---|---|---|
| akka-uct | 21 | ✅ 10418 ms (21 iters) | ✅ 10214 ms (21 iters) | ≈ -2% (±10.7%) | — / — |
| akka-uct | 25 | ✅ 8888 ms (24 iters) | ✅ 8832 ms (24 iters) | ≈ -0.6% (±10.4%) | — / — |
| finagle-chirper | 21 | ✅ 6019 ms (33 iters) | ✅ 5980 ms (33 iters) | ≈ -0.6% (±25.1%) | |
| finagle-chirper | 25 | ✅ 5432 ms (36 iters) | ✅ 5446 ms (36 iters) | ≈ +0.3% (±24.4%) | |
| fj-kmeans | 21 | ✅ 2789 ms (67 iters) | ✅ 2662 ms (69 iters) | 🟢 -4.6% | — / — |
| fj-kmeans | 25 | ✅ 2809 ms (67 iters) | ✅ 2750 ms (68 iters) | ≈ -2.1% (±2.7%) | — / — |
| future-genetic | 21 | ✅ 2036 ms (91 iters) | ✅ 2039 ms (90 iters) | ≈ +0.1% (±2.5%) | — / — |
| future-genetic | 25 | ✅ 2062 ms (90 iters) | ✅ 2126 ms (87 iters) | 🔴 +3.1% | — / — |
| naive-bayes | 21 | ✅ 1297 ms (132 iters) | ✅ 1288 ms (133 iters) | ≈ -0.7% (±32.7%) | — / — |
| naive-bayes | 25 | ✅ 1021 ms (168 iters) | ✅ 1018 ms (168 iters) | ≈ -0.3% (±31.8%) | — / — |
| reactors | 21 | ✅ 16109 ms (15 iters) | ✅ 17100 ms (15 iters) | ≈ +6.2% (±8.5%) | — / — |
| reactors | 25 | ✅ 18270 ms (15 iters) | ✅ 18619 ms (15 iters) | ≈ +1.9% (±5.8%) | — / — |
Internal counter details (ddprof)
ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
| Benchmark | JDK | Dropped rec | Dropped jvmti | Dropped trace | Skipped WC | AGCT fail | Unwind fail |
|---|---|---|---|---|---|---|---|
| akka-uct | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 2080 / 1895 | ✅ / ✅ | ✅ / ✅ |
| akka-uct | 25 | ✅ / ✅ | ✅ / ✅ | 5 / 1 | 2429 / 2266 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 21 | ✅ / ✅ | ✅ / ✅ | 4 / 3 | 8524 / 8648 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 25 | ✅ / ✅ | ✅ / ✅ | 3 / ✅ | 8076 / 8724 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 21 | ✅ / ✅ | ✅ / ✅ | 2 / ✅ | 1281 / 1249 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 25 | ✅ / ✅ | ✅ / ✅ | 4 / 2 | 1299 / 1279 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 1 | 3000 / 2916 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 3 | 2872 / 2874 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 21 | ✅ / ✅ | ✅ / ✅ | 7 / 8 | 3542 / 3554 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 2 | 3505 / 3516 | ✅ / ✅ | ✅ / ✅ |
| reactors | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ |
| reactors | 25 | ✅ / ✅ | ✅ / ✅ | 1 / ✅ | 1881 / 1883 | ✅ / ✅ | ✅ / ✅ |
3919bfb to
7ed1836
Compare
670822a to
1e0ced5
Compare
9e8b44a to
cf9cb37
Compare
Benchmark Results (commit cf9cb37)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/128535828 Commit:
|
| Benchmark | JDK | Latest | Dev | Δ (dev vs latest) | Issues L/D |
|---|---|---|---|---|---|
| akka-uct | 21 | ✅ 10401 ms (21 iters) | ✅ 10315 ms (21 iters) | ≈ -0.8% (±12%) | — / — |
| akka-uct | 25 | ✅ 8696 ms (24 iters) | ✅ 8833 ms (24 iters) | ≈ +1.6% (±10.2%) | — / — |
| finagle-chirper | 21 | ✅ 5992 ms (33 iters) | ✅ 6017 ms (33 iters) | ≈ +0.4% (±25.5%) | |
| finagle-chirper | 25 | ✅ 5460 ms (36 iters) | ✅ 5470 ms (36 iters) | ≈ +0.2% (±24.4%) | |
| fj-kmeans | 21 | ✅ 2719 ms (68 iters) | ✅ 2638 ms (72 iters) | 🟢 -3% | — / — |
| fj-kmeans | 25 | ✅ 2772 ms (68 iters) | ✅ 2849 ms (66 iters) | 🔴 +2.8% | — / — |
| future-genetic | 21 | ✅ 2093 ms (90 iters) | ✅ 2059 ms (90 iters) | ≈ -1.6% (±2.6%) | — / — |
| future-genetic | 25 | ✅ 2102 ms (88 iters) | ✅ 2007 ms (92 iters) | 🟢 -4.5% | — / — |
| naive-bayes | 21 | ✅ 1287 ms (133 iters) | ✅ 1340 ms (128 iters) | ≈ +4.1% (±33.5%) | — / — |
| naive-bayes | 25 | ✅ 1016 ms (168 iters) | ✅ 1009 ms (169 iters) | ≈ -0.7% (±31.5%) | — / — |
| reactors | 25 | ✅ 17765 ms (15 iters) | ✅ 18578 ms (15 iters) | ≈ +4.6% (±6.2%) | — / — |
Internal counter details (ddprof)
ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
| Benchmark | JDK | Dropped rec | Dropped jvmti | Dropped trace | Skipped WC | AGCT fail | Unwind fail |
|---|---|---|---|---|---|---|---|
| akka-uct | 21 | ✅ / ✅ | ✅ / ✅ | 3 / 3 | 2009 / 1944 | ✅ / ✅ | ✅ / ✅ |
| akka-uct | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 4 | 2123 / 2272 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 2 | 8717 / 8484 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 4 | 8348 / 8330 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 1245 / 1301 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 1289 / 1285 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 1 | 3009 / 2953 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 2 | 2980 / 2911 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 21 | ✅ / ✅ | ✅ / ✅ | 5 / 4 | 3576 / 3492 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 7 | 3535 / 3496 | ✅ / ✅ | ✅ / ✅ |
| reactors | 21 | ✅ / ✅ | ✅ / ✅ | 1 / ✅ | 1481 / 1825 | ✅ / ✅ | ✅ / ✅ |
| reactors | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | 1764 / 1794 | ✅ / ✅ | ✅ / ✅ |
cf9cb37 to
03e7049
Compare
90a8930 to
8e56e7c
Compare
03e7049 to
651f7f4
Compare
Benchmark Results (commit 03e7049)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/128546115 Commit:
|
| Benchmark | JDK | Latest | Dev | Δ (dev vs latest) | Issues L/D |
|---|---|---|---|---|---|
| akka-uct | 21 | ✅ 10323 ms (21 iters) | ✅ 10255 ms (21 iters) | ≈ -0.7% (±11.5%) | — / — |
| akka-uct | 25 | ✅ 8840 ms (24 iters) | ✅ 8855 ms (24 iters) | ≈ +0.2% (±9.6%) | — / — |
| finagle-chirper | 21 | ✅ 5973 ms (33 iters) | ✅ 6015 ms (33 iters) | ≈ +0.7% (±24.9%) | |
| fj-kmeans | 21 | ✅ 2692 ms (70 iters) | ✅ 2663 ms (69 iters) | ≈ -1.1% (±2.6%) | — / — |
| fj-kmeans | 25 | ✅ 2779 ms (67 iters) | ✅ 2834 ms (66 iters) | ≈ +2% (±2.7%) | — / — |
| future-genetic | 21 | ✅ 2041 ms (90 iters) | ✅ 2047 ms (91 iters) | ≈ +0.3% (±2.6%) | — / — |
| future-genetic | 25 | ✅ 2045 ms (91 iters) | ✅ 2106 ms (88 iters) | 🔴 +3% | — / — |
| naive-bayes | 21 | ✅ 1254 ms (137 iters) | ✅ 1271 ms (135 iters) | ≈ +1.4% (±32.4%) | — / — |
| reactors | 21 | ✅ 16796 ms (15 iters) | ✅ 15416 ms (15 iters) | 🟢 -8.2% | — / — |
Internal counter details (ddprof)
ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
| Benchmark | JDK | Dropped rec | Dropped jvmti | Dropped trace | Skipped WC | AGCT fail | Unwind fail |
|---|---|---|---|---|---|---|---|
| akka-uct | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 1 | 1939 / 2010 | ✅ / ✅ | ✅ / ✅ |
| akka-uct | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 5 | 2354 / 2198 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 21 | ✅ / ✅ | ✅ / ✅ | 7 / 3 | 8416 / 8577 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 21 | ✅ / ✅ | ✅ / ✅ | 2 / ✅ | 1267 / 1266 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 25 | ✅ / ✅ | ✅ / ✅ | 3 / 4 | 1261 / 1272 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 1 | 2899 / 2955 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 7 | 2864 / 2954 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 21 | ✅ / ✅ | ✅ / ✅ | 4 / 2 | 3517 / 3535 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / 5 | 3459 / 3443 | ✅ / ✅ | ✅ / ✅ |
| reactors | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / 2 | 1687 / 1556 | ✅ / ✅ | ✅ / ✅ |
| reactors | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | 1865 / 1863 | ✅ / ✅ | ✅ / ✅ |
Benchmark Results (commit 651f7f4)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/128550926 Commit:
|
| Benchmark | JDK | Latest | Dev | Δ (dev vs latest) | Issues L/D |
|---|---|---|---|---|---|
| akka-uct | 21 | ✅ 10198 ms (21 iters) | ✅ 10290 ms (21 iters) | ≈ +0.9% (±11.4%) | — / — |
| akka-uct | 25 | ✅ 8747 ms (24 iters) | ✅ 8835 ms (24 iters) | ≈ +1% (±9.7%) | — / — |
| finagle-chirper | 21 | ✅ 5959 ms (33 iters) | ✅ 5972 ms (33 iters) | ≈ +0.2% (±24.9%) | |
| finagle-chirper | 25 | ✅ 5442 ms (36 iters) | ✅ 5469 ms (36 iters) | ≈ +0.5% (±24%) | |
| fj-kmeans | 21 | ✅ 2714 ms (68 iters) | ✅ 2697 ms (70 iters) | ≈ -0.6% (±2.7%) | — / — |
| fj-kmeans | 25 | ✅ 2851 ms (66 iters) | ✅ 2795 ms (67 iters) | ≈ -2% (±2.6%) | — / — |
| future-genetic | 21 | ✅ 2104 ms (88 iters) | ✅ 2119 ms (88 iters) | ≈ +0.7% (±2.7%) | — / — |
| future-genetic | 25 | ✅ 2069 ms (90 iters) | ✅ 2010 ms (93 iters) | 🟢 -2.9% | — / — |
| naive-bayes | 21 | ✅ 1252 ms (137 iters) | ✅ 1232 ms (138 iters) | ≈ -1.6% (±32.2%) | — / — |
| naive-bayes | 25 | ✅ 987 ms (173 iters) | ✅ 980 ms (174 iters) | ≈ -0.7% (±31.6%) | — / — |
| reactors | 21 | ✅ 16408 ms (16 iters) | ✅ 16498 ms (15 iters) | ≈ +0.5% (±7.2%) | — / — |
| reactors | 25 | ✅ 18396 ms (15 iters) | ✅ 18436 ms (15 iters) | ≈ +0.2% (±5.2%) | — / — |
Internal counter details (ddprof)
ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
| Benchmark | JDK | Dropped rec | Dropped jvmti | Dropped trace | Skipped WC | AGCT fail | Unwind fail |
|---|---|---|---|---|---|---|---|
| akka-uct | 21 | ✅ / ✅ | ✅ / ✅ | 4 / 3 | 1974 / 2084 | ✅ / ✅ | ✅ / ✅ |
| akka-uct | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 1 | 2247 / 2084 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 21 | ✅ / ✅ | ✅ / ✅ | 6 / 5 | 8651 / 8862 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / 4 | 8705 / 8497 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 5 | 1241 / 1274 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 25 | ✅ / ✅ | ✅ / ✅ | 3 / 1 | 1275 / 1298 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 21 | ✅ / ✅ | ✅ / ✅ | 3 / 1 | 2915 / 3019 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 2971 / 2899 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 21 | ✅ / ✅ | ✅ / ✅ | 6 / 5 | 3542 / 3470 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 25 | ✅ / ✅ | ✅ / ✅ | 4 / 4 | 3478 / 3482 | ✅ / ✅ | ✅ / ✅ |
| reactors | 21 | ✅ / ✅ | ✅ / ✅ | 1 / ✅ | 1910 / 1659 | ✅ / ✅ | ✅ / ✅ |
| reactors | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 1837 / 1867 | ✅ / ✅ | ✅ / ✅ |
8e56e7c to
e32a7e7
Compare
651f7f4 to
c85e1c2
Compare
Benchmark Results (commit c85e1c2)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/128589334 Commit:
|
| Benchmark | JDK | Latest | Dev | Δ (dev vs latest) | Issues L/D |
|---|---|---|---|---|---|
| akka-uct | 21 | ✅ 10272 ms (21 iters) | ✅ 10388 ms (21 iters) | ≈ +1.1% (±11.3%) | — / — |
| akka-uct | 25 | ✅ 8851 ms (24 iters) | ✅ 8826 ms (24 iters) | ≈ -0.3% (±10.1%) | — / — |
| finagle-chirper | 21 | ✅ 5952 ms (33 iters) | ✅ 5971 ms (33 iters) | ≈ +0.3% (±25.1%) | |
| finagle-chirper | 25 | ✅ 5470 ms (36 iters) | ✅ 5525 ms (36 iters) | ≈ +1% (±24.9%) | |
| fj-kmeans | 21 | ✅ 2706 ms (70 iters) | ✅ 2718 ms (69 iters) | ≈ +0.4% (±2.7%) | — / — |
| fj-kmeans | 25 | ✅ 2773 ms (68 iters) | ✅ 2835 ms (66 iters) | ≈ +2.2% (±2.8%) | — / — |
| future-genetic | 21 | ✅ 2100 ms (88 iters) | ✅ 2045 ms (91 iters) | 🟢 -2.6% | — / — |
| future-genetic | 25 | ✅ 2100 ms (89 iters) | ✅ 2093 ms (89 iters) | ≈ -0.3% (±2.5%) | — / — |
| naive-bayes | 21 | ✅ 1278 ms (133 iters) | ✅ 1249 ms (137 iters) | ≈ -2.3% (±32.4%) | — / — |
| naive-bayes | 25 | ✅ 1010 ms (170 iters) | ✅ 1019 ms (168 iters) | ≈ +0.9% (±31.8%) | — / — |
| reactors | 25 | ✅ 17803 ms (15 iters) | ✅ 18426 ms (15 iters) | ≈ +3.5% (±6%) | — / — |
Internal counter details (ddprof)
ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
| Benchmark | JDK | Dropped rec | Dropped jvmti | Dropped trace | Skipped WC | AGCT fail | Unwind fail |
|---|---|---|---|---|---|---|---|
| akka-uct | 21 | ✅ / ✅ | ✅ / ✅ | 2 / 2 | 2005 / 1971 | ✅ / ✅ | ✅ / ✅ |
| akka-uct | 25 | ✅ / ✅ | ✅ / ✅ | 3 / ✅ | 2197 / 2384 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 21 | ✅ / ✅ | ✅ / ✅ | 3 / 2 | 8331 / 8714 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 1 | 8122 / 8256 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 21 | ✅ / ✅ | ✅ / ✅ | 4 / 5 | 1294 / 1249 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 3 | 1296 / 1267 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 21 | ✅ / ✅ | ✅ / ✅ | 2 / 1 | 2930 / 3028 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 2 | 2926 / 2960 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 21 | ✅ / ✅ | ✅ / ✅ | 5 / 3 | 3470 / 3517 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 25 | ✅ / ✅ | ✅ / ✅ | 3 / 2 | 3467 / 3477 | ✅ / ✅ | ✅ / ✅ |
| reactors | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ |
| reactors | 25 | ✅ / ✅ | ✅ / ✅ | 1 / ✅ | 1829 / 1809 | ✅ / ✅ | ✅ / ✅ |
Benchmark Results (commit 256a584)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/128780406 Commit:
|
| Benchmark | JDK | Latest | Dev | Δ (dev vs latest) | Issues L/D |
|---|---|---|---|---|---|
| akka-uct | 21 | ✅ 10270 ms (21 iters) | ✅ 10179 ms (21 iters) | ≈ -0.9% (±11%) | — / — |
| akka-uct | 25 | ✅ 8874 ms (24 iters) | ✅ 8865 ms (24 iters) | ≈ -0.1% (±9.7%) | — / — |
| finagle-chirper | 21 | ✅ 6039 ms (33 iters) | ✅ 6024 ms (33 iters) | ≈ -0.2% (±25.2%) | |
| finagle-chirper | 25 | ✅ 5446 ms (36 iters) | ✅ 5487 ms (36 iters) | ≈ +0.8% (±24.5%) | |
| fj-kmeans | 21 | ✅ 2728 ms (68 iters) | ✅ 2697 ms (70 iters) | ≈ -1.1% (±2.7%) | — / — |
| fj-kmeans | 25 | ✅ 2801 ms (66 iters) | ✅ 2820 ms (66 iters) | ≈ +0.7% (±2.7%) | — / — |
| future-genetic | 21 | ✅ 2126 ms (87 iters) | ✅ 2086 ms (90 iters) | ≈ -1.9% (±2.7%) | — / — |
| future-genetic | 25 | ✅ 2098 ms (88 iters) | ✅ 2037 ms (91 iters) | 🟢 -2.9% | — / — |
| naive-bayes | 21 | ✅ 1222 ms (140 iters) | ✅ 1292 ms (133 iters) | ≈ +5.7% (±33.7%) | — / — |
| naive-bayes | 25 | ✅ 1027 ms (167 iters) | ✅ 1006 ms (170 iters) | ≈ -2% (±31%) | — / — |
| reactors | 21 | ✅ 16422 ms (15 iters) | ✅ 15562 ms (16 iters) | ≈ -5.2% (±8.5%) | — / — |
| reactors | 25 | ✅ 18214 ms (15 iters) | ✅ 18736 ms (15 iters) | ≈ +2.9% (±4.4%) | — / — |
Internal counter details (ddprof)
ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
| Benchmark | JDK | Dropped rec | Dropped jvmti | Dropped trace | Skipped WC | AGCT fail | Unwind fail |
|---|---|---|---|---|---|---|---|
| akka-uct | 21 | ✅ / ✅ | ✅ / ✅ | 3 / ✅ | 1950 / 2042 | ✅ / ✅ | ✅ / ✅ |
| akka-uct | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 4 | 2193 / 2277 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 21 | ✅ / ✅ | ✅ / ✅ | 2 / 2 | 8371 / 8861 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / 6 | 8295 / 8820 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 21 | ✅ / ✅ | ✅ / ✅ | 4 / 2 | 1248 / 1277 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 4 | 1265 / 1291 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 1 | 3014 / 2936 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 25 | ✅ / ✅ | ✅ / ✅ | 2 / ✅ | 2894 / 2913 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 21 | ✅ / ✅ | ✅ / ✅ | 3 / 6 | 3519 / 3573 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 25 | ✅ / ✅ | ✅ / ✅ | 3 / 5 | 3492 / 3479 | ✅ / ✅ | ✅ / ✅ |
| reactors | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / 2 | 1662 / 1663 | ✅ / ✅ | ✅ / ✅ |
| reactors | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 1877 / 1980 | ✅ / ✅ | ✅ / ✅ |
Benchmark Results (commit 979357f)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/128787980 Commit:
|
| Benchmark | JDK | Latest | Dev | Δ (dev vs latest) | Issues L/D |
|---|---|---|---|---|---|
| akka-uct | 25 | ✅ 8820 ms (24 iters) | ✅ 8838 ms (24 iters) | ≈ +0.2% (±9.8%) | — / — |
| finagle-chirper | 25 | ✅ 5464 ms (36 iters) | ✅ 5437 ms (36 iters) | ≈ -0.5% (±24.1%) | |
| fj-kmeans | 21 | ✅ 2711 ms (69 iters) | ✅ 2631 ms (72 iters) | 🟢 -3% | — / — |
| future-genetic | 21 | ✅ 2125 ms (87 iters) | ✅ 2088 ms (88 iters) | ≈ -1.7% (±2.7%) | — / — |
| future-genetic | 25 | ✅ 2046 ms (91 iters) | ✅ 2143 ms (87 iters) | 🔴 +4.7% | — / — |
| naive-bayes | 21 | ✅ 1299 ms (132 iters) | ✅ 1236 ms (138 iters) | ≈ -4.8% (±31.8%) | — / — |
| naive-bayes | 25 | ✅ 1010 ms (169 iters) | ✅ 1019 ms (168 iters) | ≈ +0.9% (±31.7%) | — / — |
| reactors | 21 | ✅ 16498 ms (15 iters) | ✅ 16073 ms (15 iters) | ≈ -2.6% (±6.5%) | — / — |
| reactors | 25 | ✅ 18446 ms (15 iters) | ✅ 18746 ms (15 iters) | ≈ +1.6% (±4.9%) | — / — |
Internal counter details (ddprof)
ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
| Benchmark | JDK | Dropped rec | Dropped jvmti | Dropped trace | Skipped WC | AGCT fail | Unwind fail |
|---|---|---|---|---|---|---|---|
| akka-uct | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 2172 / 2203 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 21 | ✅ / ✅ | ✅ / ✅ | 5 / 5 | 8669 / 8779 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 25 | ✅ / ✅ | ✅ / ✅ | 1 / ✅ | 8541 / 8300 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 21 | ✅ / ✅ | ✅ / ✅ | 4 / ✅ | 1229 / 1292 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 4 | 1225 / 1259 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 21 | ✅ / ✅ | ✅ / ✅ | 4 / 1 | 3002 / 2951 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 25 | ✅ / ✅ | ✅ / ✅ | 1 / ✅ | 2851 / 2976 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 21 | ✅ / ✅ | ✅ / ✅ | 3 / 5 | 3535 / 3509 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 25 | ✅ / 1 | ✅ / ✅ | ✅ / 3 | 3486 / 3498 | ✅ / ✅ | ✅ / ✅ |
| reactors | 21 | ✅ / ✅ | ✅ / ✅ | 1 / ✅ | 1630 / 1600 | ✅ / ✅ | ✅ / ✅ |
| reactors | 25 | ✅ / ✅ | ✅ / ✅ | 1 / ✅ | 1848 / 1912 | ✅ / ✅ | ✅ / ✅ |
What does this PR do?:
Adds native socket I/O TaskBlock instrumentation on Linux by interposing blocking socket APIs, classifying socket file descriptors, and recording synchronous TaskBlock events for owned native I/O waits.
Motivation:
Blocking native I/O is a major source of wall-clock time. Recording these intervals directly avoids intentionally signaling threads while they are blocked in recognized socket operations.
Additional Notes:
This PR includes Linux native interposition, socket/Fd classification, lifecycle handling for unloadable libraries, integration tests, and a native socket I/O benchmark.
This iteration instruments blocking socket I/O originating from supported JDK networking libraries on Linux:
libnet.so,libnio.so, and the recognized IBM Java 8 JCL bridge inlibjava.so.It intentionally does not interpose arbitrary application or JNI shared libraries. Consequently, pinned virtual-thread native calls made through arbitrary JNI DSOs are outside the supported scope of this PR. Unsupported native calls continue through their original targets and remain eligible for normal wall-clock sampling.
How to test the change?:
Automated coverage includes native unit tests for interposition, socket sampling, native block handling, thread-filter suppression, and Java integration tests for native socket TaskBlock behavior.
./.claude/commands/build-and-summarize testDebugNative socket integration tests are Linux-specific and skip on macOS.
For Datadog employees:
dd:platform-security-reviewskill, or file a request via the PSEC review form).bewairealso runs automatically on every PR.