Skip to content

Commit adb3f7f

Browse files
authored
Improve repeatability & precision of throughput tests on Linux & ARM (#7268)
## Summary of changes This PR tweaks RPS & k6 configuration variables in order to ensure better stability of results. Also it adds x86 suffix for relevant variants. ## Reason for change Throughput tests had unexpected spikes in Datadog dashboards due to several factors (warmup not being excluded, incorrect timeseries queries, too high concurrent VUs traffic). Couple of these issues were fixed directly in Datadog/benchmarking-platform repository on dd-trace-dotnet/macro branch, this PR does the last step in order for fix to apply universally.
1 parent 84056f1 commit adb3f7f

File tree

1 file changed

+51
-60
lines changed

1 file changed

+51
-60
lines changed

.gitlab/benchmarks/macrobenchmarks.yml

Lines changed: 51 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ update-bp-infra:
6767
AWS_EPHEMERAL_INFRA_ARTIFACTS_BUCKET_URI: "s3://windows-benchmarking-results/$CI_PROJECT_NAME/$CI_COMMIT_REF_NAME/$CI_JOB_ID"
6868
AWS_EPHEMERAL_INFRA_REGION: "us-east-1"
6969

70-
.benchmarks:
70+
.benchmarks-x86:
7171
stage: benchmarks
7272
tags: ["runner:apm-k8s-same-cpu"]
7373
needs: ["check_azure_pipeline"]
@@ -99,35 +99,32 @@ update-bp-infra:
9999
- platform/artifacts/
100100
expire_in: 3 months
101101
variables:
102-
K6_OPTIONS_WARMUP_RATE: 14000
102+
# k6 configuration, similar to the one in https://grafana.com/docs/k6/latest/using-k6/scenarios/#options
103103
K6_OPTIONS_WARMUP_DURATION: 3m
104104
K6_OPTIONS_WARMUP_GRACEFUL_STOP: 10s
105-
K6_OPTIONS_WARMUP_PRE_ALLOCATED_VUS: 500
106-
K6_OPTIONS_WARMUP_MAX_VUS: 2000
105+
K6_OPTIONS_WARMUP_VUS: 2
107106

108-
K6_OPTIONS_NORMAL_OPERATION_RATE: 13000
109-
K6_OPTIONS_NORMAL_OPERATION_DURATION: 7m
107+
K6_OPTIONS_NORMAL_OPERATION_RATE: 5000
108+
K6_OPTIONS_NORMAL_OPERATION_DURATION: 10m
110109
K6_OPTIONS_NORMAL_OPERATION_GRACEFUL_STOP: 10s
111-
K6_OPTIONS_NORMAL_OPERATION_PRE_ALLOCATED_VUS: 500
112-
K6_OPTIONS_NORMAL_OPERATION_MAX_VUS: 2000
110+
K6_OPTIONS_NORMAL_OPERATION_PRE_ALLOCATED_VUS: 2
111+
K6_OPTIONS_NORMAL_OPERATION_MAX_VUS: 2
113112

114-
K6_OPTIONS_HIGH_LOAD_RATE: 15000
115-
K6_OPTIONS_HIGH_LOAD_DURATION: 3m
116-
K6_OPTIONS_HIGH_LOAD_GRACEFUL_STOP: 10s
117-
K6_OPTIONS_HIGH_LOAD_PRE_ALLOCATED_VUS: 500
118-
K6_OPTIONS_HIGH_LOAD_MAX_VUS: 2000
113+
K6_OPTIONS_HIGH_LOAD_DURATION: 5m
114+
K6_OPTIONS_HIGH_LOAD_GRACEFUL_STOP: 0s
115+
K6_OPTIONS_HIGH_LOAD_VUS: 2
119116

120-
baseline:
121-
extends: .benchmarks
117+
baseline-x86:
118+
extends: .benchmarks-x86
122119
variables:
123120
NATIVE_PROFILER_PATH: "dd-trace-dotnet/tracer/tracer-home-linux/linux-x64/Datadog.Trace.ClrProfiler.Native.so"
124121
TRACER_HOME_PATH: "dd-trace-dotnet/tracer/tracer-home-linux"
125122
COR_ENABLE_PROFILING: 0
126123
CORECLR_ENABLE_PROFILING: 0
127124
ENDPOINT: "hello"
128-
129-
calltarget_ngen:
130-
extends: .benchmarks
125+
126+
calltarget_ngen-x86:
127+
extends: .benchmarks-x86
131128
variables:
132129
NATIVE_PROFILER_PATH: "dd-trace-dotnet/tracer/tracer-home-linux/linux-x64/Datadog.Trace.ClrProfiler.Native.so"
133130
TRACER_HOME_PATH: "dd-trace-dotnet/tracer/tracer-home-linux"
@@ -137,8 +134,8 @@ calltarget_ngen:
137134
DD_CLR_ENABLE_NGEN: 1
138135
ENDPOINT: "hello"
139136

140-
trace_stats:
141-
extends: .benchmarks
137+
trace_stats-x86:
138+
extends: .benchmarks-x86
142139
variables:
143140
NATIVE_PROFILER_PATH: "dd-trace-dotnet/tracer/tracer-home-linux/linux-x64/Datadog.Trace.ClrProfiler.Native.so"
144141
TRACER_HOME_PATH: "dd-trace-dotnet/tracer/tracer-home-linux"
@@ -149,8 +146,8 @@ trace_stats:
149146
DD_TRACE_STATS_COMPUTATION_ENABLED: 1
150147
ENDPOINT: "hello"
151148

152-
manual_only:
153-
extends: .benchmarks
149+
manual_only-x86:
150+
extends: .benchmarks-x86
154151
variables:
155152
NATIVE_PROFILER_PATH: "dd-trace-dotnet/tracer/tracer-home-linux/linux-x64/Datadog.Trace.ClrProfiler.Native.so"
156153
TRACER_HOME_PATH: "dd-trace-dotnet/tracer/tracer-home-linux"
@@ -159,8 +156,8 @@ manual_only:
159156
DOTNET_BUILD_ARGS: "/p:MANUAL_INSTRUMENTATION=true /p:MANUAL_ONLY_INSTRUMENTATION=true"
160157
ENDPOINT: "hello"
161158

162-
manual_and_automatic:
163-
extends: .benchmarks
159+
manual_and_automatic-x86:
160+
extends: .benchmarks-x86
164161
variables:
165162
NATIVE_PROFILER_PATH: "dd-trace-dotnet/tracer/tracer-home-linux/linux-x64/Datadog.Trace.ClrProfiler.Native.so"
166163
TRACER_HOME_PATH: "dd-trace-dotnet/tracer/tracer-home-linux"
@@ -169,8 +166,8 @@ manual_and_automatic:
169166
DOTNET_BUILD_ARGS: "/p:MANUAL_INSTRUMENTATION=true"
170167
ENDPOINT: "hello"
171168

172-
ddtraceenabled_false:
173-
extends: .benchmarks
169+
ddtraceenabled_false-x86:
170+
extends: .benchmarks-x86
174171
variables:
175172
NATIVE_PROFILER_PATH: "dd-trace-dotnet/tracer/tracer-home-linux/linux-x64/Datadog.Trace.ClrProfiler.Native.so"
176173
TRACER_HOME_PATH: "dd-trace-dotnet/tracer/tracer-home-linux"
@@ -179,17 +176,17 @@ ddtraceenabled_false:
179176
DD_TRACE_ENABLED: 0
180177
ENDPOINT: "hello"
181178

182-
profiler_exceptions_baseline:
183-
extends: .benchmarks
179+
profiler_exceptions_baseline-x86:
180+
extends: .benchmarks-x86
184181
variables:
185182
NATIVE_PROFILER_PATH: "dd-trace-dotnet/tracer/tracer-home-linux/linux-x64/Datadog.Trace.ClrProfiler.Native.so"
186183
TRACER_HOME_PATH: "dd-trace-dotnet/tracer/tracer-home-linux"
187184
COR_ENABLE_PROFILING: 0
188185
CORECLR_ENABLE_PROFILING: 0
189186
ENDPOINT: "hello/Exception"
190187

191-
profiler:
192-
extends: .benchmarks
188+
profiler-x86:
189+
extends: .benchmarks-x86
193190
variables:
194191
NATIVE_PROFILER_PATH: "dd-trace-dotnet/tracer/tracer-home-linux/linux-x64/Datadog.Trace.ClrProfiler.Native.so"
195192
TRACER_HOME_PATH: "dd-trace-dotnet/tracer/tracer-home-linux"
@@ -199,8 +196,8 @@ profiler:
199196
COMPlus_EnableDiagnostics: 1
200197
ENDPOINT: "hello"
201198

202-
profiler_walltime:
203-
extends: .benchmarks
199+
profiler_walltime-x86:
200+
extends: .benchmarks-x86
204201
variables:
205202
NATIVE_PROFILER_PATH: "dd-trace-dotnet/tracer/tracer-home-linux/linux-x64/Datadog.Trace.ClrProfiler.Native.so"
206203
TRACER_HOME_PATH: "dd-trace-dotnet/tracer/tracer-home-linux"
@@ -212,8 +209,8 @@ profiler_walltime:
212209
DD_PROFILING_CPU_ENABLED: 0
213210
ENDPOINT: "hello"
214211

215-
profiler_exceptions:
216-
extends: .benchmarks
212+
profiler_exceptions-x86:
213+
extends: .benchmarks-x86
217214
variables:
218215
NATIVE_PROFILER_PATH: "dd-trace-dotnet/tracer/tracer-home-linux/linux-x64/Datadog.Trace.ClrProfiler.Native.so"
219216
TRACER_HOME_PATH: "dd-trace-dotnet/tracer/tracer-home-linux"
@@ -224,8 +221,8 @@ profiler_exceptions:
224221
COMPlus_EnableDiagnostics: 1
225222
ENDPOINT: "hello/Exception"
226223

227-
profiler_cpu:
228-
extends: .benchmarks
224+
profiler_cpu-x86:
225+
extends: .benchmarks-x86
229226
variables:
230227
NATIVE_PROFILER_PATH: "dd-trace-dotnet/tracer/tracer-home-linux/linux-x64/Datadog.Trace.ClrProfiler.Native.so"
231228
TRACER_HOME_PATH: "dd-trace-dotnet/tracer/tracer-home-linux"
@@ -237,8 +234,8 @@ profiler_cpu:
237234
COMPlus_EnableDiagnostics: 1
238235
ENDPOINT: "hello"
239236

240-
profiler_cpu_timer_create:
241-
extends: .benchmarks
237+
profiler_cpu_timer_create-x86:
238+
extends: .benchmarks-x86
242239
variables:
243240
NATIVE_PROFILER_PATH: "dd-trace-dotnet/tracer/tracer-home-linux/linux-x64/Datadog.Trace.ClrProfiler.Native.so"
244241
TRACER_HOME_PATH: "dd-trace-dotnet/tracer/tracer-home-linux"
@@ -274,31 +271,27 @@ profiler_cpu_timer_create:
274271
- git clone --branch dd-trace-dotnet/macro https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.ddbuild.io/DataDog/benchmarking-platform platform && cd platform
275272
- ./steps/setup-sut.sh
276273
- bp-runner bp-runner.arm.yml --debug
277-
after_script: !reference [.benchmarks, after_script]
278274
artifacts:
279275
name: "artifacts"
280276
when: always
281277
paths:
282278
- platform/artifacts/
283279
expire_in: 3 months
284280
variables:
285-
K6_OPTIONS_WARMUP_RATE: 14000
281+
# k6 configuration, similar to the one in https://grafana.com/docs/k6/latest/using-k6/scenarios/#options
286282
K6_OPTIONS_WARMUP_DURATION: 3m
287283
K6_OPTIONS_WARMUP_GRACEFUL_STOP: 10s
288-
K6_OPTIONS_WARMUP_PRE_ALLOCATED_VUS: 500
289-
K6_OPTIONS_WARMUP_MAX_VUS: 2000
284+
K6_OPTIONS_WARMUP_VUS: 2
290285

291-
K6_OPTIONS_NORMAL_OPERATION_RATE: 13000
292-
K6_OPTIONS_NORMAL_OPERATION_DURATION: 7m
286+
K6_OPTIONS_NORMAL_OPERATION_RATE: 4000
287+
K6_OPTIONS_NORMAL_OPERATION_DURATION: 10m
293288
K6_OPTIONS_NORMAL_OPERATION_GRACEFUL_STOP: 10s
294-
K6_OPTIONS_NORMAL_OPERATION_PRE_ALLOCATED_VUS: 500
295-
K6_OPTIONS_NORMAL_OPERATION_MAX_VUS: 2000
289+
K6_OPTIONS_NORMAL_OPERATION_PRE_ALLOCATED_VUS: 2
290+
K6_OPTIONS_NORMAL_OPERATION_MAX_VUS: 2
296291

297-
K6_OPTIONS_HIGH_LOAD_RATE: 15000
298-
K6_OPTIONS_HIGH_LOAD_DURATION: 3m
299-
K6_OPTIONS_HIGH_LOAD_GRACEFUL_STOP: 10s
300-
K6_OPTIONS_HIGH_LOAD_PRE_ALLOCATED_VUS: 500
301-
K6_OPTIONS_HIGH_LOAD_MAX_VUS: 2000
292+
K6_OPTIONS_HIGH_LOAD_DURATION: 5m
293+
K6_OPTIONS_HIGH_LOAD_GRACEFUL_STOP: 0s
294+
K6_OPTIONS_HIGH_LOAD_VUS: 2
302295

303296
baseline-arm64:
304297
extends: .benchmarks-arm64
@@ -473,23 +466,20 @@ profiler_cpu_timer_create-arm64:
473466
# Whether to cleanup ephemeral instances after benchmarks are run
474467
CLEANUP: "true"
475468

476-
K6_OPTIONS_WARMUP_RATE: 14000
469+
# k6 configuration, similar to the one in https://grafana.com/docs/k6/latest/using-k6/scenarios/#options
477470
K6_OPTIONS_WARMUP_DURATION: 3m
478471
K6_OPTIONS_WARMUP_GRACEFUL_STOP: 10s
479-
K6_OPTIONS_WARMUP_PRE_ALLOCATED_VUS: 500
480-
K6_OPTIONS_WARMUP_MAX_VUS: 2000
472+
K6_OPTIONS_WARMUP_VUS: 2
481473

482474
K6_OPTIONS_NORMAL_OPERATION_RATE: 13000
483-
K6_OPTIONS_NORMAL_OPERATION_DURATION: 7m
475+
K6_OPTIONS_NORMAL_OPERATION_DURATION: 10m
484476
K6_OPTIONS_NORMAL_OPERATION_GRACEFUL_STOP: 10s
485477
K6_OPTIONS_NORMAL_OPERATION_PRE_ALLOCATED_VUS: 500
486478
K6_OPTIONS_NORMAL_OPERATION_MAX_VUS: 2000
487479

488-
K6_OPTIONS_HIGH_LOAD_RATE: 15000
489-
K6_OPTIONS_HIGH_LOAD_DURATION: 3m
490-
K6_OPTIONS_HIGH_LOAD_GRACEFUL_STOP: 10s
491-
K6_OPTIONS_HIGH_LOAD_PRE_ALLOCATED_VUS: 500
492-
K6_OPTIONS_HIGH_LOAD_MAX_VUS: 2000
480+
K6_OPTIONS_HIGH_LOAD_DURATION: 5m
481+
K6_OPTIONS_HIGH_LOAD_GRACEFUL_STOP: 0s
482+
K6_OPTIONS_HIGH_LOAD_VUS: 2
493483
script:
494484
- source build-id.txt
495485
- echo "Building for the following build https://dev.azure.com/datadoghq/dd-trace-dotnet/_build/results?buildId=$buildId&view=results"
@@ -609,3 +599,4 @@ profiler_cpu_timer_create-win:
609599
DD_PROFILING_CPU_ENABLED: 1
610600
COMPlus_EnableDiagnostics: 1
611601
ENDPOINT: "hello"
602+

0 commit comments

Comments
 (0)