Skip to content

Commit 5d02ce7

Browse files
committed
Add experiments focused on dogstatsd's string interner
This commit replaces the _nodist variants of the `uds_dogstatsd_to_api` experiment with a set of parameterized string interner experiments, varying both total contexts and throughput along two scales. The goal here is to understand how, at 8MiB/sec throughput, the variation of contexts impacts the stringInterner hotspot and along throughput to achieve coverage on a small range of contexts. REF SMPTNG-12 REF #19852 REF #19882 REF #19990 Signed-off-by: Brian L. Troutwine <[email protected]>
1 parent d8005da commit 5d02ce7

File tree

31 files changed

+428
-172
lines changed

31 files changed

+428
-172
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
optimization_goal: ingress_throughput
2+
erratic: false
3+
4+
environment:
5+
DD_TELEMETRY_ENABLED: true
6+
7+
profiling_environment:
8+
DD_INTERNAL_PROFILING_BLOCK_PROFILE_RATE: 10000
9+
DD_INTERNAL_PROFILING_CPU_DURATION: 1m
10+
DD_INTERNAL_PROFILING_DELTA_PROFILES: true
11+
DD_INTERNAL_PROFILING_ENABLED: true
12+
DD_INTERNAL_PROFILING_ENABLE_GOROUTINE_STACKTRACES: true
13+
DD_INTERNAL_PROFILING_MUTEX_PROFILE_FRACTION: 10
14+
DD_INTERNAL_PROFILING_PERIOD: 1m
15+
DD_INTERNAL_PROFILING_UNIX_SOCKET: /var/run/datadog/apm.socket
16+
DD_PROFILING_EXECUTION_TRACE_ENABLED: true
17+
DD_PROFILING_EXECUTION_TRACE_PERIOD: 1m
18+
DD_PROFILING_WAIT_PROFILE: true
19+
20+
DD_INTERNAL_PROFILING_EXTRA_TAGS: experiment:dogstatsd_string_interner_128MiB_100

test/regression/cases/uds_dogstatsd_to_api_nodist_1MiB/lading/lading.yaml test/regression/cases/dogstatsd_string_interner_128MiB_100/lading/lading.yaml

+5-7
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@ generator:
88
variant:
99
dogstatsd:
1010
contexts:
11-
inclusive:
12-
min: 1000
13-
max: 10000
11+
constant: 100
1412
name_length:
1513
inclusive:
1614
min: 1
@@ -40,10 +38,10 @@ generator:
4038
count: 100
4139
gauge: 10
4240
timer: 0
43-
distribution: 0
41+
distribution: 50
4442
set: 0
45-
histogram: 0
46-
bytes_per_second: "1 MiB"
43+
histogram: 1
44+
bytes_per_second: "128 MiB"
4745
block_sizes: ["256b", "512b", "1Kb", "2Kb", "3Kb", "4Kb", "5Kb", "6Kb"]
4846
maximum_prebuild_cache_size_bytes: "500 Mb"
4947

@@ -55,4 +53,4 @@ blackhole:
5553

5654
target_metrics:
5755
- prometheus:
58-
uri: "http://127.0.0.1:5000/telemetry"
56+
uri: "http://127.0.0.1:9000"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
optimization_goal: ingress_throughput
2+
erratic: false
3+
4+
environment:
5+
DD_TELEMETRY_ENABLED: true
6+
7+
profiling_environment:
8+
DD_INTERNAL_PROFILING_BLOCK_PROFILE_RATE: 10000
9+
DD_INTERNAL_PROFILING_CPU_DURATION: 1m
10+
DD_INTERNAL_PROFILING_DELTA_PROFILES: true
11+
DD_INTERNAL_PROFILING_ENABLED: true
12+
DD_INTERNAL_PROFILING_ENABLE_GOROUTINE_STACKTRACES: true
13+
DD_INTERNAL_PROFILING_MUTEX_PROFILE_FRACTION: 10
14+
DD_INTERNAL_PROFILING_PERIOD: 1m
15+
DD_INTERNAL_PROFILING_UNIX_SOCKET: /var/run/datadog/apm.socket
16+
DD_PROFILING_EXECUTION_TRACE_ENABLED: true
17+
DD_PROFILING_EXECUTION_TRACE_PERIOD: 1m
18+
DD_PROFILING_WAIT_PROFILE: true
19+
20+
DD_INTERNAL_PROFILING_EXTRA_TAGS: experiment:dogstatsd_string_interner_128MiB_1k

test/regression/cases/uds_dogstatsd_to_api_nodist_32MiB/lading/lading.yaml test/regression/cases/dogstatsd_string_interner_128MiB_1k/lading/lading.yaml

+5-7
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@ generator:
88
variant:
99
dogstatsd:
1010
contexts:
11-
inclusive:
12-
min: 1000
13-
max: 10000
11+
constant: 1000
1412
name_length:
1513
inclusive:
1614
min: 1
@@ -40,10 +38,10 @@ generator:
4038
count: 100
4139
gauge: 10
4240
timer: 0
43-
distribution: 0
41+
distribution: 50
4442
set: 0
45-
histogram: 0
46-
bytes_per_second: "32 MiB"
43+
histogram: 1
44+
bytes_per_second: "128 MiB"
4745
block_sizes: ["256b", "512b", "1Kb", "2Kb", "3Kb", "4Kb", "5Kb", "6Kb"]
4846
maximum_prebuild_cache_size_bytes: "500 Mb"
4947

@@ -55,4 +53,4 @@ blackhole:
5553

5654
target_metrics:
5755
- prometheus:
58-
uri: "http://127.0.0.1:5000/telemetry"
56+
uri: "http://127.0.0.1:9000"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
optimization_goal: ingress_throughput
2+
erratic: false
3+
4+
environment:
5+
DD_TELEMETRY_ENABLED: true
6+
7+
profiling_environment:
8+
DD_INTERNAL_PROFILING_BLOCK_PROFILE_RATE: 10000
9+
DD_INTERNAL_PROFILING_CPU_DURATION: 1m
10+
DD_INTERNAL_PROFILING_DELTA_PROFILES: true
11+
DD_INTERNAL_PROFILING_ENABLED: true
12+
DD_INTERNAL_PROFILING_ENABLE_GOROUTINE_STACKTRACES: true
13+
DD_INTERNAL_PROFILING_MUTEX_PROFILE_FRACTION: 10
14+
DD_INTERNAL_PROFILING_PERIOD: 1m
15+
DD_INTERNAL_PROFILING_UNIX_SOCKET: /var/run/datadog/apm.socket
16+
DD_PROFILING_EXECUTION_TRACE_ENABLED: true
17+
DD_PROFILING_EXECUTION_TRACE_PERIOD: 1m
18+
DD_PROFILING_WAIT_PROFILE: true
19+
20+
DD_INTERNAL_PROFILING_EXTRA_TAGS: experiment:dogstatsd_string_interner_64MiB_100

test/regression/cases/uds_dogstatsd_to_api_nodist_64MiB/lading/lading.yaml test/regression/cases/dogstatsd_string_interner_64MiB_100/lading/lading.yaml

+4-6
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@ generator:
88
variant:
99
dogstatsd:
1010
contexts:
11-
inclusive:
12-
min: 1000
13-
max: 10000
11+
constant: 100
1412
name_length:
1513
inclusive:
1614
min: 1
@@ -40,9 +38,9 @@ generator:
4038
count: 100
4139
gauge: 10
4240
timer: 0
43-
distribution: 0
41+
distribution: 50
4442
set: 0
45-
histogram: 0
43+
histogram: 1
4644
bytes_per_second: "64 MiB"
4745
block_sizes: ["256b", "512b", "1Kb", "2Kb", "3Kb", "4Kb", "5Kb", "6Kb"]
4846
maximum_prebuild_cache_size_bytes: "500 Mb"
@@ -55,4 +53,4 @@ blackhole:
5553

5654
target_metrics:
5755
- prometheus:
58-
uri: "http://127.0.0.1:5000/telemetry"
56+
uri: "http://127.0.0.1:9000"

test/regression/cases/uds_dogstatsd_to_api_nodist_100MiB/experiment.yaml test/regression/cases/dogstatsd_string_interner_64MiB_1k/experiment.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@ profiling_environment:
1717
DD_PROFILING_EXECUTION_TRACE_PERIOD: 1m
1818
DD_PROFILING_WAIT_PROFILE: true
1919

20-
DD_INTERNAL_PROFILING_EXTRA_TAGS: experiment:uds_dogstatsd_to_api_nodist_100MiB
20+
DD_INTERNAL_PROFILING_EXTRA_TAGS: experiment:dogstatsd_string_interner_64MiB_1k

test/regression/cases/uds_dogstatsd_to_api_nodist_16MiB/lading/lading.yaml test/regression/cases/dogstatsd_string_interner_64MiB_1k/lading/lading.yaml

+5-7
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@ generator:
88
variant:
99
dogstatsd:
1010
contexts:
11-
inclusive:
12-
min: 1000
13-
max: 10000
11+
constant: 1000
1412
name_length:
1513
inclusive:
1614
min: 1
@@ -40,10 +38,10 @@ generator:
4038
count: 100
4139
gauge: 10
4240
timer: 0
43-
distribution: 0
41+
distribution: 50
4442
set: 0
45-
histogram: 0
46-
bytes_per_second: "16 MiB"
43+
histogram: 1
44+
bytes_per_second: "64 MiB"
4745
block_sizes: ["256b", "512b", "1Kb", "2Kb", "3Kb", "4Kb", "5Kb", "6Kb"]
4846
maximum_prebuild_cache_size_bytes: "500 Mb"
4947

@@ -55,4 +53,4 @@ blackhole:
5553

5654
target_metrics:
5755
- prometheus:
58-
uri: "http://127.0.0.1:5000/telemetry"
56+
uri: "http://127.0.0.1:9000"

test/regression/cases/uds_dogstatsd_to_api_nodist_1MiB/experiment.yaml test/regression/cases/dogstatsd_string_interner_8MiB_100/experiment.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@ profiling_environment:
1717
DD_PROFILING_EXECUTION_TRACE_PERIOD: 1m
1818
DD_PROFILING_WAIT_PROFILE: true
1919

20-
DD_INTERNAL_PROFILING_EXTRA_TAGS: experiment:uds_dogstatsd_to_api_nodist_1MiB
20+
DD_INTERNAL_PROFILING_EXTRA_TAGS: experiment:dogstatsd_string_interner_8MiB_100
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# If you update this configuration please update `uds_dogstatsd_*` experiments
2+
# to match, where reasonable.
3+
generator:
4+
- unix_datagram:
5+
seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53,
6+
59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131]
7+
path: "/tmp/dsd.socket"
8+
variant:
9+
dogstatsd:
10+
contexts:
11+
constant: 100
12+
name_length:
13+
inclusive:
14+
min: 1
15+
max: 200
16+
tag_key_length:
17+
inclusive:
18+
min: 1
19+
max: 100
20+
tag_value_length:
21+
inclusive:
22+
min: 1
23+
max: 100
24+
tags_per_msg:
25+
inclusive:
26+
min: 2
27+
max: 50
28+
multivalue_count:
29+
inclusive:
30+
min: 2
31+
max: 32
32+
multivalue_pack_probability: 0.08
33+
kind_weights:
34+
metric: 90
35+
event: 5
36+
service_check: 5
37+
metric_weights:
38+
count: 100
39+
gauge: 10
40+
timer: 0
41+
distribution: 50
42+
set: 0
43+
histogram: 1
44+
bytes_per_second: "8 MiB"
45+
block_sizes: ["256b", "512b", "1Kb", "2Kb", "3Kb", "4Kb", "5Kb", "6Kb"]
46+
maximum_prebuild_cache_size_bytes: "500 Mb"
47+
48+
blackhole:
49+
- http:
50+
binding_addr: "127.0.0.1:9091"
51+
- http:
52+
binding_addr: "127.0.0.1:9092"
53+
54+
target_metrics:
55+
- prometheus:
56+
uri: "http://127.0.0.1:9000"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
optimization_goal: ingress_throughput
2+
erratic: false
3+
4+
environment:
5+
DD_TELEMETRY_ENABLED: true
6+
7+
profiling_environment:
8+
DD_INTERNAL_PROFILING_BLOCK_PROFILE_RATE: 10000
9+
DD_INTERNAL_PROFILING_CPU_DURATION: 1m
10+
DD_INTERNAL_PROFILING_DELTA_PROFILES: true
11+
DD_INTERNAL_PROFILING_ENABLED: true
12+
DD_INTERNAL_PROFILING_ENABLE_GOROUTINE_STACKTRACES: true
13+
DD_INTERNAL_PROFILING_MUTEX_PROFILE_FRACTION: 10
14+
DD_INTERNAL_PROFILING_PERIOD: 1m
15+
DD_INTERNAL_PROFILING_UNIX_SOCKET: /var/run/datadog/apm.socket
16+
DD_PROFILING_EXECUTION_TRACE_ENABLED: true
17+
DD_PROFILING_EXECUTION_TRACE_PERIOD: 1m
18+
DD_PROFILING_WAIT_PROFILE: true
19+
20+
DD_INTERNAL_PROFILING_EXTRA_TAGS: experiment:dogstatsd_string_interner_8MiB_100k
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# If you update this configuration please update `uds_dogstatsd_*` experiments
2+
# to match, where reasonable.
3+
generator:
4+
- unix_datagram:
5+
seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53,
6+
59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131]
7+
path: "/tmp/dsd.socket"
8+
variant:
9+
dogstatsd:
10+
contexts:
11+
constant: 100000
12+
name_length:
13+
inclusive:
14+
min: 1
15+
max: 200
16+
tag_key_length:
17+
inclusive:
18+
min: 1
19+
max: 100
20+
tag_value_length:
21+
inclusive:
22+
min: 1
23+
max: 100
24+
tags_per_msg:
25+
inclusive:
26+
min: 2
27+
max: 50
28+
multivalue_count:
29+
inclusive:
30+
min: 2
31+
max: 32
32+
multivalue_pack_probability: 0.08
33+
kind_weights:
34+
metric: 90
35+
event: 5
36+
service_check: 5
37+
metric_weights:
38+
count: 100
39+
gauge: 10
40+
timer: 0
41+
distribution: 50
42+
set: 0
43+
histogram: 1
44+
bytes_per_second: "8 MiB"
45+
block_sizes: ["256b", "512b", "1Kb", "2Kb", "3Kb", "4Kb", "5Kb", "6Kb"]
46+
maximum_prebuild_cache_size_bytes: "500 Mb"
47+
48+
blackhole:
49+
- http:
50+
binding_addr: "127.0.0.1:9091"
51+
- http:
52+
binding_addr: "127.0.0.1:9092"
53+
54+
target_metrics:
55+
- prometheus:
56+
uri: "http://127.0.0.1:9000"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
api_key: 00000000000000000000000000000000
2+
auth_token_file_path: /tmp/agent-auth-token
3+
hostname: smp-regression
4+
5+
dd_url: http://127.0.0.1:9092
6+
7+
confd_path: /etc/datadog-agent/conf.d
8+
9+
# Disable cloud detection. This stops the Agent from poking around the
10+
# execution environment & network. This is particularly important if the target
11+
# has network access.
12+
cloud_provider_metadata: []
13+
14+
dogstatsd_socket: '/tmp/dsd.socket'

test/regression/cases/uds_dogstatsd_to_api_nodist_16MiB/experiment.yaml test/regression/cases/dogstatsd_string_interner_8MiB_10k/experiment.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@ profiling_environment:
1717
DD_PROFILING_EXECUTION_TRACE_PERIOD: 1m
1818
DD_PROFILING_WAIT_PROFILE: true
1919

20-
DD_INTERNAL_PROFILING_EXTRA_TAGS: experiment:uds_dogstatsd_to_api_nodist_16MiB
20+
DD_INTERNAL_PROFILING_EXTRA_TAGS: experiment:dogstatsd_string_interner_8MiB_10k

0 commit comments

Comments
 (0)