Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
d9d4887
Add apm-sdks-benchmarks to CI
sarahchen6 Dec 12, 2025
732aefd
Add thresholds file
sarahchen6 Dec 12, 2025
0beddad
Empty commit to run benchmarks again
sarahchen6 Dec 12, 2025
9610907
Empty commit to run benchmarks again
sarahchen6 Dec 12, 2025
4fc38a5
Empty commit to run benchmarks again
sarahchen6 Dec 12, 2025
bb85a00
Empty commit to run benchmarks again
sarahchen6 Dec 12, 2025
e6573d0
Empty commit to run benchmarks again
sarahchen6 Dec 12, 2025
a4e4452
Merge branch 'master' into sarahchen6/test-merge-base-benchmark
sarahchen6 Jan 6, 2026
573ddbc
Run microbenchmarks
sarahchen6 Jan 6, 2026
d3ae881
Add infrastructure stage
sarahchen6 Jan 6, 2026
b28e0fa
Add another stage
sarahchen6 Jan 6, 2026
177d428
Empty commit to run benchmarks
sarahchen6 Jan 6, 2026
1fb5e0c
Empty commit to run benchmarks again
sarahchen6 Jan 6, 2026
dbd6c94
Include insecure bank file
sarahchen6 Jan 7, 2026
9a0a7d5
Empty commit to run benchmarks without full suite
sarahchen6 Jan 7, 2026
22465b7
Empty commit to run benchmarks with updated file
sarahchen6 Jan 7, 2026
63e044f
Empty commit to run benchmarks again
sarahchen6 Jan 7, 2026
b279363
Empty commit to run benchmarks again
sarahchen6 Jan 7, 2026
f501067
Empty commit to run benchmarks again...
sarahchen6 Jan 7, 2026
9da26aa
Empty commit to run benchmarks again again
sarahchen6 Jan 8, 2026
e0bdfa2
Merge branch 'master' into sarahchen6/test-merge-base-benchmark
sarahchen6 Jan 13, 2026
da1f6c4
Merge branch 'master' into sarahchen6/test-merge-base-benchmark
sarahchen6 Jan 13, 2026
3d8f8c0
Empty commit to run benchmarks
sarahchen6 Jan 13, 2026
bb0c8f1
Merge branch 'master' into sarahchen6/test-merge-base-benchmark
sarahchen6 Jan 14, 2026
fb618b4
Try deleting microbenchmarks
sarahchen6 Jan 14, 2026
698e89e
Comment out local benchmarks
sarahchen6 Jan 14, 2026
1455402
Merge branch 'master' into sarahchen6/test-merge-base-benchmark
sarahchen6 Jan 16, 2026
c359791
Change stage names
sarahchen6 Jan 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,24 @@ include:
- local: ".gitlab/macrobenchmarks.yml"
- local: ".gitlab/exploration-tests.yml"
- local: ".gitlab/ci-visibility-tests.yml"
- project: 'DataDog/apm-reliability/apm-sdks-benchmarks'
file: '.gitlab/ci-java-spring-petclinic.yml'
ref: 'sarahchen6/run-java-microbenchmarks'
- project: 'DataDog/apm-reliability/apm-sdks-benchmarks'
file: '.gitlab/ci-java-insecure-bank.yml'
ref: 'sarahchen6/run-java-microbenchmarks'

stages:
- build
- publish
- shared-pipeline
- benchmarks
- infrastructure
- java-spring-petclinic-tests
- java-spring-petclinic-macrobenchmarks
- java-startup-microbenchmarks
- java-load-microbenchmarks
- generate-slos
- macrobenchmarks
- tests
- exploration-tests
Expand Down
144 changes: 72 additions & 72 deletions .gitlab/benchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,82 +30,82 @@
UPSTREAM_BRANCH: $CI_COMMIT_REF_NAME # The branch or tag name for which project is built.
UPSTREAM_COMMIT_SHA: $CI_COMMIT_SHA # The commit revision the project is built for.

benchmarks-startup:
extends: .benchmarks
script:
- !reference [ .benchmarks, script ]
- ./steps/capture-hardware-software-info.sh
- ./steps/run-benchmarks.sh startup
- ./steps/analyze-results.sh startup
# benchmarks-startup:
# extends: .benchmarks
# script:
# - !reference [ .benchmarks, script ]
# - ./steps/capture-hardware-software-info.sh
# - ./steps/run-benchmarks.sh startup
# - ./steps/analyze-results.sh startup

benchmarks-load:
extends: .benchmarks
script:
- !reference [ .benchmarks, script ]
- ./steps/capture-hardware-software-info.sh
- ./steps/run-benchmarks.sh load
- ./steps/analyze-results.sh load
# benchmarks-load:
# extends: .benchmarks
# script:
# - !reference [ .benchmarks, script ]
# - ./steps/capture-hardware-software-info.sh
# - ./steps/run-benchmarks.sh load
# - ./steps/analyze-results.sh load

benchmarks-dacapo:
extends: .benchmarks
script:
- !reference [ .benchmarks, script ]
- ./steps/capture-hardware-software-info.sh
- ./steps/run-benchmarks.sh dacapo
- ./steps/analyze-results.sh dacapo
# benchmarks-dacapo:
# extends: .benchmarks
# script:
# - !reference [ .benchmarks, script ]
# - ./steps/capture-hardware-software-info.sh
# - ./steps/run-benchmarks.sh dacapo
# - ./steps/analyze-results.sh dacapo

benchmarks-post-results:
extends: .benchmarks
tags: ["arch:amd64"]
script:
- !reference [ .benchmarks, script ]
- ./steps/upload-results-to-s3.sh
- ./steps/post-pr-comment.sh
needs:
- job: benchmarks-startup
artifacts: true
- job: benchmarks-load
artifacts: true
- job: benchmarks-dacapo
artifacts: true
# benchmarks-post-results:
# extends: .benchmarks
# tags: ["arch:amd64"]
# script:
# - !reference [ .benchmarks, script ]
# - ./steps/upload-results-to-s3.sh
# - ./steps/post-pr-comment.sh
# needs:
# - job: benchmarks-startup
# artifacts: true
# - job: benchmarks-load
# artifacts: true
# - job: benchmarks-dacapo
# artifacts: true

check-big-regressions:
extends: .benchmarks
needs:
- job: benchmarks-startup
artifacts: true
- job: benchmarks-dacapo
artifacts: true
when: on_success
tags: ["arch:amd64"]
rules:
- if: '$POPULATE_CACHE'
when: never
- if: '$CI_COMMIT_BRANCH =~ /backport-pr-/'
when: never
- if: '$CI_COMMIT_BRANCH !~ /^(master|release\/)/'
when: on_success
- when: never
# ARTIFACTS_DIR /go/src/github.com/DataDog/apm-reliability/dd-trace-java/reports/
# need to convert them
script:
- !reference [ .benchmarks, script ]
- |
for benchmarkType in startup dacapo; do
find "$ARTIFACTS_DIR/$benchmarkType" -name "benchmark-baseline.json" -o -name "benchmark-candidate.json" | while read file; do
relpath="${file#$ARTIFACTS_DIR/$benchmarkType/}"
prefix="${relpath%/benchmark-*}" # Remove the trailing /benchmark-(baseline|candidate).json
prefix="${prefix#./}" # Remove any leading ./
prefix="${prefix//\//-}" # Replace / with -
case "$file" in
*benchmark-baseline.json) type="baseline" ;;
*benchmark-candidate.json) type="candidate" ;;
esac
echo "Moving $file to $ARTIFACTS_DIR/${type}-${prefix}.converted.json"
cp "$file" "$ARTIFACTS_DIR/${type}-${prefix}.converted.json"
done
done
- bp-runner $CI_PROJECT_DIR/.gitlab/benchmarks/bp-runner.fail-on-regression.yml --debug
# check-big-regressions:
# extends: .benchmarks
# needs:
# - job: benchmarks-startup
# artifacts: true
# - job: benchmarks-dacapo
# artifacts: true
# when: on_success
# tags: ["arch:amd64"]
# rules:
# - if: '$POPULATE_CACHE'
# when: never
# - if: '$CI_COMMIT_BRANCH =~ /backport-pr-/'
# when: never
# - if: '$CI_COMMIT_BRANCH !~ /^(master|release\/)/'
# when: on_success
# - when: never
# # ARTIFACTS_DIR /go/src/github.com/DataDog/apm-reliability/dd-trace-java/reports/
# # need to convert them
# script:
# - !reference [ .benchmarks, script ]
# - |
# for benchmarkType in startup dacapo; do
# find "$ARTIFACTS_DIR/$benchmarkType" -name "benchmark-baseline.json" -o -name "benchmark-candidate.json" | while read file; do
# relpath="${file#$ARTIFACTS_DIR/$benchmarkType/}"
# prefix="${relpath%/benchmark-*}" # Remove the trailing /benchmark-(baseline|candidate).json
# prefix="${prefix#./}" # Remove any leading ./
# prefix="${prefix//\//-}" # Replace / with -
# case "$file" in
# *benchmark-baseline.json) type="baseline" ;;
# *benchmark-candidate.json) type="candidate" ;;
# esac
# echo "Moving $file to $ARTIFACTS_DIR/${type}-${prefix}.converted.json"
# cp "$file" "$ARTIFACTS_DIR/${type}-${prefix}.converted.json"
# done
# done
# - bp-runner $CI_PROJECT_DIR/.gitlab/benchmarks/bp-runner.fail-on-regression.yml --debug

.dsm-kafka-benchmarks:
stage: benchmarks
Expand Down
12 changes: 6 additions & 6 deletions .gitlab/macrobenchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,12 +92,12 @@ check-slo-breaches:
artifacts: true
- job: otel-latest
artifacts: true
- job: benchmarks-startup
artifacts: true
- job: benchmarks-load
artifacts: true
- job: benchmarks-dacapo
artifacts: true
# - job: benchmarks-startup
# artifacts: true
# - job: benchmarks-load
# artifacts: true
# - job: benchmarks-dacapo
# artifacts: true
script:
# macrobenchmarks are located here, files are already in "converted" format
- export ARTIFACTS_DIR="$(pwd)/platform/artifacts/" && mkdir -p "${ARTIFACTS_DIR}"
Expand Down
36 changes: 36 additions & 0 deletions .gitlab/thresholds/java-spring-petclinic.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Thresholds set based on guidance in https://datadoghq.atlassian.net/wiki/x/LgI1LgE#How-to-choose-thresholds-for-pre-release-gates%3F

experiments:
- name: Run SLO breach check
steps:
- name: SLO breach check
run: fail_on_breach
# https://datadoghq.atlassian.net/wiki/x/LgI1LgE#How-to-choose-a-warning-range-for-pre-release-gates%3F
warning_range: 10
# File spec
# https://datadoghq.atlassian.net/wiki/x/LgI1LgE#Specification
# Measurements
# https://benchmarking.us1.prod.dog/trends?projectId=4&branch=master&trendsTab=per_scenario
scenarios:
# Note that thresholds there are chosen based the confidence interval with a 10% adjustment.

# Standard macrobenchmarks
# https://benchmarking.us1.prod.dog/trends?projectId=4&branch=master&trendsTab=per_scenario&scenario=normal_operation%2Fonly-tracing&trendsType=scenario
- name: normal_operation/only-tracing
thresholds:
- agg_http_req_duration_p50 < 2.6 ms
- agg_http_req_duration_p99 < 8.5 ms
# https://benchmarking.us1.prod.dog/trends?projectId=4&branch=master&trendsTab=per_scenario&scenario=normal_operation%2Fotel-latest&trendsType=scenario
- name: normal_operation/otel-latest
thresholds:
- agg_http_req_duration_p50 < 2.5 ms
- agg_http_req_duration_p99 < 10 ms

# https://benchmarking.us1.prod.dog/trends?projectId=4&branch=master&trendsTab=per_scenario&scenario=high_load%2Fonly-tracing&trendsType=scenario
- name: high_load/only-tracing
thresholds:
- throughput > 1100.0 op/s
# https://benchmarking.us1.prod.dog/trends?projectId=4&branch=master&trendsTab=per_scenario&scenario=high_load%2Fotel-latest&trendsType=scenario
- name: high_load/otel-latest
thresholds:
- throughput > 1100.0 op/s
103 changes: 0 additions & 103 deletions benchmark/Dockerfile

This file was deleted.

29 changes: 0 additions & 29 deletions benchmark/README.MD

This file was deleted.

Loading