Skip to content

Commit fdd30e5

Browse files
committed
chore(ci): Basic slo breach prototype
1 parent ad6d6b9 commit fdd30e5

File tree

2 files changed

+82
-0
lines changed

2 files changed

+82
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Example of measurements can be seen here:
2+
# https://benchmarking.us1.prod.dog/benchmarks?benchmarkGroupPipelineId=66629462&benchmarkGroupSha=16054515e292a66c5eaf79b9ea62df6f348cd67e&page=1&ciJobDateStart=1746309551994&ciJobDateEnd=1748901551994&benchmarkId=14167634
3+
4+
# Thresholds set based on guidance in https://datadoghq.atlassian.net/wiki/spaces/APMINT/pages/5070193198/How+to+set+up+pre-release+performance+quality+gates#How-to-choose-thresholds-for-pre-release-gates%3F
5+
6+
experiments:
7+
- name: Run SLO breach check
8+
steps:
9+
- name: SLO breach check
10+
run: fail_on_breach
11+
# https://datadoghq.atlassian.net/wiki/x/LgI1LgE#How-to-choose-a-warning-range-for-pre-release-gates%3F
12+
warning_range: 10
13+
# File spec
14+
# https://datadoghq.atlassian.net/wiki/x/LgI1LgE#Specification
15+
# Measurements
16+
# https://benchmarking.us1.prod.dog/trends?projectId=4&branch=master&trendsTab=per_scenario
17+
scenarios:
18+
19+
# Standard macrobenchmarks
20+
- name: normal_operation/only-tracing
21+
thresholds:
22+
- agg_http_req_duration_p50 < 2.28 ms
23+
- name: normal_operation/only-tracing
24+
thresholds:
25+
- agg_http_req_duration_p99 < 7.45 ms
26+
- name: normal_operation/otel-latest
27+
thresholds:
28+
- agg_http_req_duration_p50 < 2.28 ms
29+
- name: normal_operation/otel-latest
30+
thresholds:
31+
- agg_http_req_duration_p99 < 9.00 ms
32+
33+
- name: high_load/only-tracing
34+
thresholds:
35+
- throughput > 1400.0 op/s
36+
- name: high_load/otel-latest
37+
thresholds:
38+
- throughput > 1400.0 op/s
39+
40+
# Startup macrobenchmarks
41+
- name: "startup:petclinic:(tracing|appsec|iast):GlobalTracer"
42+
thresholds:
43+
- execution_time < 245 ms
44+
- name: "startup:petclinic:profiling:GlobalTracer"
45+
thresholds:
46+
- execution_time < 368 ms

.gitlab/macrobenchmarks.yml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
include:
2+
project: 'DataDog/benchmarking-platform-tools'
3+
file: 'images/templates/gitlab/notify-slo-breaches.template.yml'
4+
ref: '925e0a3e7dd628885f6fc69cdaea5c8cc9e212bc'
5+
16
.macrobenchmarks:
27
stage: macrobenchmarks
38
rules:
@@ -68,3 +73,34 @@ otel-latest:
6873
BP_BENCHMARKS_CONFIGURATION: otel-latest
6974
TRACER_OPTS: -javaagent:/app/otel-java-agent.jar -Ddd.env=otel-latest -Ddd.service=bp-java-petclinic
7075
JAVA_OPTS: -javaagent:/app/memcheck/stability-testing-memwatch.jar -Xmx128M
76+
77+
78+
check-slo-breaches:
79+
stage: macrobenchmarks
80+
when: always
81+
tags: ["arch:amd64"]
82+
image: registry.ddbuild.io/images/benchmarking-platform-tools-ubuntu:latest
83+
needs:
84+
- job: baseline
85+
artifacts: true
86+
- job: only-tracing
87+
artifacts: true
88+
- job: otel-latest
89+
artifacts: true
90+
artifacts:
91+
name: "artifacts"
92+
when: always
93+
paths:
94+
- platform/artifacts/
95+
expire_in: 3 months
96+
script:
97+
- export ARTIFACTS_DIR="$(pwd)/platform/artifacts/"
98+
- bp-runner .gitlab/benchmarks/bp-runner.fail-on-breach.yml
99+
100+
notify-slo-breaches:
101+
extends: .notify-slo-breaches
102+
stage: macrobenchmarks
103+
needs: ["check-slo-breaches"]
104+
when: always
105+
variables:
106+
CHANNEL: "apm-release-platform"

0 commit comments

Comments
 (0)