Skip to content

feat: emit TaskBlock events for native socket I/O - #666

Draft
kaahos wants to merge 16 commits into
paul.fournillon/taskblock-jvm-producersfrom
paul.fournillon/taskblock-native-io
Draft

feat: emit TaskBlock events for native socket I/O#666
kaahos wants to merge 16 commits into
paul.fournillon/taskblock-jvm-producersfrom
paul.fournillon/taskblock-native-io

Conversation

@kaahos

@kaahos kaahos commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

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 in libjava.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 testDebug

Native socket integration tests are Linux-specific and skip on macOS.

For Datadog employees:

  • If this PR touches code that signs or publishes builds or packages, or handles credentials of any kind, I've requested a security review (run the dd:platform-security-review skill, or file a request via the PSEC review form).
    bewaire also runs automatically on every PR.
  • This PR doesn't touch any of that.
  • JIRA: [JIRA-XXXX]

@datadog-datadog-prod-us1

This comment has been minimized.

@dd-octo-sts

dd-octo-sts Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

CI Test Results

Run: #30894235207 | Commit: 07d551d | Duration: 16m 18s (longest job)

All 32 test jobs passed

Status Overview

JDK glibc-aarch64/debug glibc-amd64/debug musl-aarch64/debug musl-amd64/debug
8 - - -
8-ibm - - -
8-j9 - -
8-librca - -
8-orcl - - -
11 - - -
11-j9 - -
11-librca - -
17 - -
17-graal - -
17-j9 - -
17-librca - -
21 - -
21-graal - -
21-librca - -
25 - -
25-graal - -
25-librca - -

Legend: ✅ passed | ❌ failed | ⚪ skipped | 🚫 cancelled

Summary: Total: 32 | Passed: 32 | Failed: 0


Updated: 2026-08-04 09:18:09 UTC

@kaahos
kaahos force-pushed the paul.fournillon/taskblock-native-io branch 5 times, most recently from 5de84e2 to c4a2496 Compare July 17, 2026 09:44
@dd-octo-sts

dd-octo-sts Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit 4077c10)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/125241502 Commit: 4077c10d812d39470e41a46ffb6dd02dfe10ae05

⚠️ Significant outliers

  • 🟢 future-genetic (JDK 25): runtime -3.2% (2072→2005 ms)
Runtime details (per benchmark × JDK)
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%) ⚠️ W:3 / ⚠️ W:3
finagle-chirper 25 ✅ 5440 ms (36 iters) ✅ 5447 ms (36 iters) ≈ +0.1% (±24%) ⚠️ W:3 / ⚠️ W:3
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 ✅ / ✅ ✅ / ✅

@kaahos
kaahos force-pushed the paul.fournillon/taskblock-native-io branch 4 times, most recently from 7a6627e to 0aadd79 Compare July 21, 2026 07:39
Copilot AI review requested due to automatic review settings July 21, 2026 07:39

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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.TaskBlock JFR 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.

Comment thread ddprof-lib/src/main/cpp/profiler.h Outdated
@kaahos
kaahos force-pushed the paul.fournillon/taskblock-native-io branch 2 times, most recently from 18130c4 to 4698b06 Compare July 21, 2026 16:11
@dd-octo-sts

dd-octo-sts Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit 4698b06)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/126018479 Commit: 4698b06106e60ae0c890bef42375f831660f5f82

✅ Within expected boundaries

No significant runtime deltas (all within run-to-run noise) and no internal-counter outliers.

Runtime details (per benchmark × JDK)
Benchmark JDK Latest Dev Δ (dev vs latest) Issues L/D
akka-uct 21 ✅ 10187 ms (21 iters) ✅ 10361 ms (21 iters) ≈ +1.7% (±11.1%) — / —
akka-uct 25 ✅ 8903 ms (24 iters) ✅ 8898 ms (24 iters) ≈ -0.1% (±9.9%) — / —
finagle-chirper 21 ✅ 5980 ms (33 iters) ✅ 5974 ms (33 iters) ≈ -0.1% (±25.1%) ⚠️ W:3 / ⚠️ W:3
finagle-chirper 25 ✅ 5485 ms (36 iters) ✅ 5457 ms (36 iters) ≈ -0.5% (±23.9%) ⚠️ W:3 / ⚠️ W:3
fj-kmeans 21 ✅ 2777 ms (67 iters) ✅ 2779 ms (68 iters) ≈ +0.1% (±2.7%) — / —
fj-kmeans 25 ✅ 2824 ms (66 iters) ✅ 2819 ms (66 iters) ≈ -0.2% (±2.6%) — / —
future-genetic 25 ✅ 2120 ms (88 iters) ✅ 2116 ms (88 iters) ≈ -0.2% (±2.4%) — / —
naive-bayes 21 ✅ 1252 ms (137 iters) ✅ 1254 ms (137 iters) ≈ +0.2% (±32.2%) — / —
naive-bayes 25 ✅ 1009 ms (169 iters) ✅ 987 ms (173 iters) ≈ -2.2% (±31.2%) — / —
reactors 21 ✅ 16229 ms (15 iters) ✅ 16443 ms (15 iters) ≈ +1.3% (±8.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 ✅ / ✅ ✅ / ✅ 3 / 1 1903 / 1959 ✅ / ✅ ✅ / ✅
akka-uct 25 ✅ / ✅ ✅ / ✅ 2 / 1 2280 / 2206 ✅ / ✅ ✅ / ✅
finagle-chirper 21 ✅ / ✅ ✅ / ✅ 5 / 4 8883 / 8542 ✅ / ✅ ✅ / ✅
finagle-chirper 25 ✅ / ✅ ✅ / ✅ 1 / 1 8636 / 8339 ✅ / ✅ ✅ / ✅
fj-kmeans 21 ✅ / ✅ ✅ / ✅ 3 / 4 1236 / 1266 ✅ / ✅ ✅ / ✅
fj-kmeans 25 ✅ / ✅ ✅ / ✅ 3 / 3 1246 / 1275 ✅ / ✅ ✅ / ✅
future-genetic 21 ✅ / ✅ ✅ / ✅ 3 / 2 3093 / 2929 ✅ / ✅ ✅ / ✅
future-genetic 25 ✅ / ✅ ✅ / ✅ ✅ / 2 2950 / 2833 ✅ / ✅ ✅ / ✅
naive-bayes 21 ✅ / ✅ ✅ / ✅ 3 / 5 3498 / 3535 ✅ / ✅ ✅ / ✅
naive-bayes 25 ✅ / ✅ ✅ / ✅ 3 / 3 3491 / 3446 ✅ / ✅ ✅ / ✅
reactors 21 ✅ / ✅ ✅ / ✅ ✅ / 1 1697 / 1715 ✅ / ✅ ✅ / ✅

@kaahos
kaahos force-pushed the paul.fournillon/taskblock-native-io branch from 4698b06 to cb952e8 Compare July 22, 2026 12:12
@kaahos
kaahos force-pushed the paul.fournillon/taskblock-native-io branch from cb952e8 to cd67725 Compare July 22, 2026 16:01
@dd-octo-sts

dd-octo-sts Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit cd67725)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/126291644 Commit: cd677256bc02c69e22bcd3e8b35d544105f865c6

⚠️ Significant outliers

  • 🟢 fj-kmeans (JDK 21): runtime -3.1% (2824→2737 ms)
Runtime details (per benchmark × JDK)
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%) ⚠️ W:3 / ⚠️ W:3
finagle-chirper 25 ✅ 5487 ms (36 iters) ✅ 5512 ms (36 iters) ≈ +0.5% (±24.7%) ⚠️ W:3 / ⚠️ W:3
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 ✅ / ✅ ✅ / ✅

@dd-octo-sts

dd-octo-sts Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Reliability & Chaos Results

All reliability & chaos checks passed Pipeline: https://gitlab.ddbuild.io/DataDog/java-profiler/-/pipelines/128787972

@kaahos
kaahos force-pushed the paul.fournillon/taskblock-native-io branch from cd67725 to eca3d88 Compare July 22, 2026 21:48
@dd-octo-sts

dd-octo-sts Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit eca3d88)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/126390430 Commit: eca3d88f9e3209d7e400b762761f72304497d936

⚠️ Significant outliers

  • 🔴 fj-kmeans (JDK 25): runtime +2.8% (2735→2811 ms)
Runtime details (per benchmark × JDK)
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%) ⚠️ W:3 / ⚠️ W:3
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 ✅ / ✅ ✅ / ✅

@kaahos

kaahos commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 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".

Comment thread ddprof-lib/src/main/cpp/profiler.cpp Outdated
Comment thread ddprof-lib/src/main/java/com/datadoghq/profiler/JavaProfiler.java
@dd-octo-sts

dd-octo-sts Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit 3919bfb)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/126818333 Commit: 3919bfbe4a26302cd0fe9a31f2c21c63b871a79b

⚠️ Significant outliers

  • 🟢 fj-kmeans (JDK 21): runtime -4.6% (2789→2662 ms)
  • 🔴 future-genetic (JDK 25): runtime +3.1% (2062→2126 ms)
Runtime details (per benchmark × JDK)
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%) ⚠️ W:3 / ⚠️ W:3
finagle-chirper 25 ✅ 5432 ms (36 iters) ✅ 5446 ms (36 iters) ≈ +0.3% (±24.4%) ⚠️ W:3 / ⚠️ W:3
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 ✅ / ✅ ✅ / ✅

@kaahos
kaahos changed the base branch from main to paul.fournillon/taskblock-jvm-producers July 30, 2026 11:16
@kaahos
kaahos force-pushed the paul.fournillon/taskblock-native-io branch from 3919bfb to 7ed1836 Compare July 30, 2026 16:53
@kaahos
kaahos force-pushed the paul.fournillon/taskblock-jvm-producers branch from 670822a to 1e0ced5 Compare August 3, 2026 09:17
@kaahos
kaahos force-pushed the paul.fournillon/taskblock-native-io branch from 9e8b44a to cf9cb37 Compare August 3, 2026 09:38
@dd-octo-sts

dd-octo-sts Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit cf9cb37)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/128535828 Commit: cf9cb3779995235a3ba7f3b248e47fd168554c59

⚠️ Significant outliers

  • 🟢 fj-kmeans (JDK 21): runtime -3% (2719→2638 ms)
  • 🔴 fj-kmeans (JDK 25): runtime +2.8% (2772→2849 ms)
  • 🟢 future-genetic (JDK 25): runtime -4.5% (2102→2007 ms)
Runtime details (per benchmark × JDK)
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%) ⚠️ W:3 / ⚠️ W:3
finagle-chirper 25 ✅ 5460 ms (36 iters) ✅ 5470 ms (36 iters) ≈ +0.2% (±24.4%) ⚠️ W:3 / ⚠️ W:3
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 ✅ / ✅ ✅ / ✅

@kaahos
kaahos force-pushed the paul.fournillon/taskblock-native-io branch from cf9cb37 to 03e7049 Compare August 3, 2026 10:50
@kaahos
kaahos force-pushed the paul.fournillon/taskblock-jvm-producers branch 2 times, most recently from 90a8930 to 8e56e7c Compare August 3, 2026 11:19
@kaahos
kaahos force-pushed the paul.fournillon/taskblock-native-io branch from 03e7049 to 651f7f4 Compare August 3, 2026 11:19
@dd-octo-sts

dd-octo-sts Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit 03e7049)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/128546115 Commit: 03e7049ceb68fafab9204a298dc9e23a75ee238e

⚠️ Significant outliers

  • 🔴 future-genetic (JDK 25): runtime +3% (2045→2106 ms)
  • 🟢 reactors (JDK 21): runtime -8.2% (16796→15416 ms)
Runtime details (per benchmark × JDK)
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%) ⚠️ W:3 / ⚠️ W:3
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 ✅ / ✅ ✅ / ✅

@dd-octo-sts

dd-octo-sts Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit 651f7f4)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/128550926 Commit: 651f7f4177c42dd4f329657c0088da23e74aa2d3

⚠️ Significant outliers

  • 🟢 future-genetic (JDK 25): runtime -2.9% (2069→2010 ms)
Runtime details (per benchmark × JDK)
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%) ⚠️ W:3 / ⚠️ W:3
finagle-chirper 25 ✅ 5442 ms (36 iters) ✅ 5469 ms (36 iters) ≈ +0.5% (±24%) ⚠️ W:3 / ⚠️ W:3
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 ✅ / ✅ ✅ / ✅

@kaahos
kaahos force-pushed the paul.fournillon/taskblock-jvm-producers branch from 8e56e7c to e32a7e7 Compare August 3, 2026 13:36
@kaahos
kaahos force-pushed the paul.fournillon/taskblock-native-io branch from 651f7f4 to c85e1c2 Compare August 3, 2026 13:38
@dd-octo-sts

dd-octo-sts Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit c85e1c2)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/128589334 Commit: c85e1c268f181adc8753ecbf03e8cf88d5205cc1

⚠️ Significant outliers

  • 🟢 future-genetic (JDK 21): runtime -2.6% (2100→2045 ms)
Runtime details (per benchmark × JDK)
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%) ⚠️ W:3 / ⚠️ W:3
finagle-chirper 25 ✅ 5470 ms (36 iters) ✅ 5525 ms (36 iters) ≈ +1% (±24.9%) ⚠️ W:4 / ⚠️ W:3
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 ✅ / ✅ ✅ / ✅

@dd-octo-sts

dd-octo-sts Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit 256a584)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/128780406 Commit: 256a5843588b0da80d5a9820f5282542c7c10590

⚠️ Significant outliers

  • 🟢 future-genetic (JDK 25): runtime -2.9% (2098→2037 ms)
Runtime details (per benchmark × JDK)
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%) ⚠️ W:3 / ⚠️ W:3
finagle-chirper 25 ✅ 5446 ms (36 iters) ✅ 5487 ms (36 iters) ≈ +0.8% (±24.5%) ⚠️ W:3 / ⚠️ W:3
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 ✅ / ✅ ✅ / ✅

@dd-octo-sts

dd-octo-sts Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit 979357f)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/128787980 Commit: 979357f6e2e76ed670f1d8632ed71a58ae96122a

⚠️ Significant outliers

  • 🟢 fj-kmeans (JDK 21): runtime -3% (2711→2631 ms)
  • 🔴 future-genetic (JDK 25): runtime +4.7% (2046→2143 ms)
Runtime details (per benchmark × JDK)
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%) ⚠️ W:3 / ⚠️ W:3
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 ✅ / ✅ ✅ / ✅

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants