Skip to content

tag aggregation smp tests#1252

Draft
rayz wants to merge 1 commit intoraymond/tag-agg-correctnessfrom
raymond/tag-agg-smp
Draft

tag aggregation smp tests#1252
rayz wants to merge 1 commit intoraymond/tag-agg-correctnessfrom
raymond/tag-agg-smp

Conversation

@rayz
Copy link
Contributor

@rayz rayz commented Mar 20, 2026

Summary

Change Type

  • Bug fix
  • New feature
  • Non-functional (chore, refactoring, docs)
  • Performance

How did you test this PR?

References

Copilot AI review requested due to automatic review settings March 20, 2026 15:10
@dd-octo-sts dd-octo-sts bot added area/components Sources, transforms, and destinations. area/test All things testing: unit/integration, correctness, SMP regression, etc. labels Mar 20, 2026
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR adds new SMP regression experiments for ADP to exercise tag-filterlist/tag-aggregation scenarios at scale, and adds transform-level telemetry for tag filtering outcomes.

Changes:

  • Add tagfilter_* SMP experiments (0 tags, 100 metrics, 500 metrics, and a 500-metrics no-traffic variant) and supporting shared filterlist fixtures.
  • Update experiment generation merge behavior to allow explicitly overriding lading generators with an empty list.
  • Add telemetry counters to the tag_filterlist transform and a unit test validating counter behavior.

Reviewed changes

Copilot reviewed 23 out of 23 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
test/smp/regression/adp/shared/tagfilter_500metrics.yaml Adds a large shared metric_tag_filterlist fixture for 500-metric scenarios.
test/smp/regression/adp/shared/tagfilter_100metrics.yaml Adds a shared metric_tag_filterlist fixture for 100-metric scenarios.
test/smp/regression/adp/generate_experiments.py Allows an explicit empty overlay generator list to replace generators (no-traffic experiments).
test/smp/regression/adp/experiments.yaml Introduces tagfilter_base template and new tagfilter_* experiments wiring shared fixtures.
test/smp/regression/adp/config.yaml Updates lading version pin.
test/smp/regression/adp/cases/tagfilter_*/** Adds generated case directories for the new tagfilter experiments.
lib/saluki-components/src/transforms/tag_filterlist/telemetry.rs Adds a telemetry helper to record hit/miss/noop/modified outcomes and removed-tag counts.
lib/saluki-components/src/transforms/tag_filterlist/mod.rs Wires telemetry into the transform, returns filter outcomes, and adds a unit test for telemetry.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +43 to +47
- metricname_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{{0-499}}
tag_names:
- tagname_aaaaaaaaaaaaaaaaaaaaaa_{{0-54}}
tag_values:
- value{{0-9}}
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

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

The metric_names, tag_names, and tag_values list items are not indented under their keys (the - ... lines are aligned with the key), which makes this YAML invalid and will fail when loading the lading config. Indent the list items so they are children of their respective keys (as done in experiments.yaml’s tagfilter_base template).

Suggested change
- metricname_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{{0-499}}
tag_names:
- tagname_aaaaaaaaaaaaaaaaaaaaaa_{{0-54}}
tag_values:
- value{{0-9}}
- metricname_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{{0-499}}
tag_names:
- tagname_aaaaaaaaaaaaaaaaaaaaaa_{{0-54}}
tag_values:
- value{{0-9}}

Copilot uses AI. Check for mistakes.
Comment on lines +43 to +47
- metricname_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{{0-99}}
tag_names:
- tagname_aaaaaaaaaaaaaaaaaaaaaa_{{0-54}}
tag_values:
- value{{0-9}}
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

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

The metric_names, tag_names, and tag_values list items are not indented under their keys (the - ... lines are aligned with the key), which makes this YAML invalid and will fail when loading the lading config. Indent the list items so they are children of their respective keys (as done in experiments.yaml’s tagfilter_base template).

Suggested change
- metricname_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{{0-99}}
tag_names:
- tagname_aaaaaaaaaaaaaaaaaaaaaa_{{0-54}}
tag_values:
- value{{0-9}}
- metricname_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{{0-99}}
tag_names:
- tagname_aaaaaaaaaaaaaaaaaaaaaa_{{0-54}}
tag_values:
- value{{0-9}}

Copilot uses AI. Check for mistakes.
Comment on lines +2 to +47
- http:
binding_addr: 127.0.0.1:9091
- http:
binding_addr: 127.0.0.1:9092
target_metrics:
- prometheus:
uri: http://127.0.0.1:5102/scrape
generator:
- unix_datagram:
seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107,
109, 113, 127, 131]
path: /tmp/dsd.socket
bytes_per_second: 250 MiB
maximum_prebuild_cache_size_bytes: 500 MiB
variant:
dogstatsd:
contexts:
inclusive:
min: 78000
max: 78000
tags_per_msg:
inclusive:
min: 54
max: 54
multivalue_count:
inclusive:
min: 2
max: 32
multivalue_pack_probability: 0.08
kind_weights:
metric: 90
event: 0
service_check: 0
metric_weights:
count: 0
gauge: 0
timer: 0
distribution: 5
set: 0
histogram: 0
metric_names:
- metricname_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{{0-499}}
tag_names:
- tagname_aaaaaaaaaaaaaaaaaaaaaa_{{0-54}}
tag_values:
- value{{0-9}}
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

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

The metric_names, tag_names, and tag_values list items are not indented under their keys (the - ... lines are aligned with the key), which makes this YAML invalid and will fail when loading the lading config. Indent the list items so they are children of their respective keys (as done in experiments.yaml’s tagfilter_base template).

Suggested change
- http:
binding_addr: 127.0.0.1:9091
- http:
binding_addr: 127.0.0.1:9092
target_metrics:
- prometheus:
uri: http://127.0.0.1:5102/scrape
generator:
- unix_datagram:
seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107,
109, 113, 127, 131]
path: /tmp/dsd.socket
bytes_per_second: 250 MiB
maximum_prebuild_cache_size_bytes: 500 MiB
variant:
dogstatsd:
contexts:
inclusive:
min: 78000
max: 78000
tags_per_msg:
inclusive:
min: 54
max: 54
multivalue_count:
inclusive:
min: 2
max: 32
multivalue_pack_probability: 0.08
kind_weights:
metric: 90
event: 0
service_check: 0
metric_weights:
count: 0
gauge: 0
timer: 0
distribution: 5
set: 0
histogram: 0
metric_names:
- metricname_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{{0-499}}
tag_names:
- tagname_aaaaaaaaaaaaaaaaaaaaaa_{{0-54}}
tag_values:
- value{{0-9}}
- http:
binding_addr: 127.0.0.1:9091
- http:
binding_addr: 127.0.0.1:9092
target_metrics:
- prometheus:
uri: http://127.0.0.1:5102/scrape
generator:
- unix_datagram:
seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107,
109, 113, 127, 131]
path: /tmp/dsd.socket
bytes_per_second: 250 MiB
maximum_prebuild_cache_size_bytes: 500 MiB
variant:
dogstatsd:
contexts:
inclusive:
min: 78000
max: 78000
tags_per_msg:
inclusive:
min: 54
max: 54
multivalue_count:
inclusive:
min: 2
max: 32
multivalue_pack_probability: 0.08
kind_weights:
metric: 90
event: 0
service_check: 0
metric_weights:
count: 0
gauge: 0
timer: 0
distribution: 5
set: 0
histogram: 0
metric_names:
- metricname_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{{0-499}}
tag_names:
- tagname_aaaaaaaaaaaaaaaaaaaaaa_{{0-54}}
tag_values:
- value{{0-9}}

Copilot uses AI. Check for mistakes.
ComponentContext,
},
data_model::event::{metric::Metric, EventType},
observability::ComponentMetricsExt,
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

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

saluki-components has #![deny(warnings)], and ComponentMetricsExt is imported here but not used anywhere in the module. This will fail the build due to an unused import warning. Remove the import, or use the extension trait explicitly if it’s required for metrics wiring.

Suggested change
observability::ComponentMetricsExt,

Copilot uses AI. Check for mistakes.
@pr-commenter
Copy link

pr-commenter bot commented Mar 20, 2026

Binary Size Analysis (Agent Data Plane)

Target: 1d50af4 (baseline) vs ea2a594 (comparison) diff
Analysis Type: Stripped binaries (debug symbols excluded)
Baseline Size: 26.19 MiB
Comparison Size: 26.28 MiB
Size Change: +90.61 KiB (+0.34%)
Pass/Fail Threshold: +5%
Result: PASSED ✅

Changes by Module

Module File Size Symbols
core +29.55 KiB 72
saluki_components::transforms::tag_filterlist +27.56 KiB 18
serde_core +8.78 KiB 8
agent_data_plane::cli::run +6.86 KiB 2
[sections] +6.08 KiB 6
hashbrown +5.59 KiB 9
saluki_config::dynamic::watcher -2.34 KiB 1
saluki_context::hash::hash_context +2.15 KiB 1
tokio +1.81 KiB 2
[Unmapped] +1.52 KiB 1
saluki_core::topology::blueprint +1.19 KiB 1
saluki_context::context::Context +887 B 1
smallvec +753 B 1
saluki_context::resolver::TagsResolver -574 B 1
saluki_components::encoders::datadog +379 B 2
serde_json +281 B 1
unicode_segmentation +104 B 1
saluki_config::secrets::resolver -88 B 1
figment +76 B 17
saluki_components::destinations::prometheus +59 B 1

Detailed Symbol Changes

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +2.8% +43.7Ki  +2.9% +32.5Ki    [523 Others]
  [NEW] +12.8Ki  [NEW] +12.6Ki    _<saluki_components::transforms::tag_filterlist::TagFilterlist as saluki_core::components::transforms::Transform>::run::_{{closure}}::h963c4e73613d8740
  [NEW] +12.6Ki  [NEW] +12.4Ki    _<core::marker::PhantomData<T> as serde_core::de::DeserializeSeed>::deserialize::h823409a611a5cfb1
  [NEW] +10.7Ki  [NEW] +10.6Ki    <saluki_core::data_model::event::Event as core::clone::Clone>::clone.10049
  +6.0% +6.86Ki  +6.0% +6.86Ki    agent_data_plane::cli::run::create_topology::_{{closure}}::h4a1b0b37b7e2d03e
  [NEW] +5.66Ki  [NEW] +5.49Ki    serde_core::de::impls::_<impl serde_core::de::Deserialize for alloc::vec::Vec<T>>::deserialize::h34dcebfa9500250f
  [NEW] +5.52Ki  [NEW] +5.38Ki    <hickory_proto::rr::record_data::RData as core::clone::Clone>::clone.8502
  [NEW] +5.13Ki  [NEW] +5.00Ki    <hickory_proto::rr::record_data::RData as core::clone::Clone>::clone.11186
  [NEW] +4.76Ki  [NEW] +4.61Ki    _<core::marker::PhantomData<T> as serde_core::de::DeserializeSeed>::deserialize::h4e9adec8ddd65cfa
  [NEW] +4.71Ki  [NEW] +4.59Ki    <rustls::error::Error as core::clone::Clone>::clone.10025
  [NEW] +4.71Ki  [NEW] +4.59Ki    <rustls::error::Error as core::clone::Clone>::clone.11201
  [NEW] +4.26Ki  [NEW] +4.15Ki    saluki_components::transforms::tag_filterlist::compile_filters::hd808d986c0d7a078
  [NEW] +3.83Ki  [NEW] +3.71Ki    <webpki::error::Error as core::fmt::Debug>::fmt.11379
  [NEW] +3.66Ki  [NEW] +3.54Ki    <rustls::error::Error as core::fmt::Debug>::fmt.9647
  [DEL] -3.66Ki  [DEL] -3.54Ki    <rustls::error::Error as core::fmt::Debug>::fmt.9641
  [DEL] -3.83Ki  [DEL] -3.71Ki    <webpki::error::Error as core::fmt::Debug>::fmt.11359
  [DEL] -4.71Ki  [DEL] -4.59Ki    <rustls::error::Error as core::clone::Clone>::clone.11181
  [DEL] -4.71Ki  [DEL] -4.59Ki    <rustls::error::Error as core::clone::Clone>::clone.10017
  [DEL] -5.13Ki  [DEL] -5.00Ki    <hickory_proto::rr::record_data::RData as core::clone::Clone>::clone.11166
  [DEL] -5.52Ki  [DEL] -5.38Ki    <hickory_proto::rr::record_data::RData as core::clone::Clone>::clone.8496
  [DEL] -10.7Ki  [DEL] -10.6Ki    <saluki_core::data_model::event::Event as core::clone::Clone>::clone.10041
  +0.3% +90.6Ki  +0.3% +78.6Ki    TOTAL

@pr-commenter
Copy link

pr-commenter bot commented Mar 20, 2026

Regression Detector (Agent Data Plane)

Regression Detector Results

Run ID: b00db409-3e6b-486d-b103-80cd51be5d13

Baseline: 1d50af4
Comparison: ea2a594
Diff

❌ Experiments with missing analysis due to target crashes

This is a critical error. One or more replicates failed with a non-zero exit code. No optimization goal or bounds check analysis will be present for these experiment(s). Ping #single-machine-performance and we can help out. See Replicate Execution Details for more information.

  • otlp_ingest_traces_ottl_filtering_5mb_memory
  • otlp_ingest_traces_5mb_throughput
  • otlp_ingest_traces_ottl_transform_5mb_throughput
  • otlp_ingest_traces_ottl_filtering_5mb_throughput
  • otlp_ingest_traces_5mb_cpu
  • otlp_ingest_traces_5mb_memory
  • tagfilter_0tags
  • tagfilter_500metrics_notraffic
  • otlp_ingest_traces_ottl_filtering_5mb_cpu
  • otlp_ingest_traces_ottl_transform_5mb_cpu
  • tagfilter_100metrics
  • otlp_ingest_traces_ottl_transform_5mb_memory
  • tagfilter_500metrics

❌ Experiments with retried target crashes

This is a critical error. One or more replicates failed with a non-zero exit code. These replicates may have been retried. See Replicate Execution Details for more information.

  • otlp_ingest_traces_5mb_cpu
  • otlp_ingest_traces_5mb_throughput
  • tagfilter_500metrics
  • otlp_ingest_traces_5mb_memory
  • otlp_ingest_traces_ottl_filtering_5mb_memory
  • otlp_ingest_traces_ottl_filtering_5mb_throughput
  • tagfilter_0tags
  • otlp_ingest_traces_ottl_transform_5mb_memory
  • quality_gates_rss_dsd_ultraheavy
  • tagfilter_500metrics_notraffic
  • tagfilter_100metrics
  • dsd_uds_10mb_3k_contexts_memory
  • otlp_ingest_traces_ottl_transform_5mb_cpu
  • otlp_ingest_traces_ottl_filtering_5mb_cpu
  • otlp_ingest_traces_ottl_transform_5mb_throughput

Optimization Goals: ✅ No significant changes detected

Experiments ignored for regressions

Regressions in experiments with settings containing erratic: true are ignored.

perf experiment goal Δ mean % Δ mean % CI trials links
otlp_ingest_logs_5mb_memory memory utilization +5.15 [+4.71, +5.59] 1 (metrics) (profiles) (logs)
otlp_ingest_logs_5mb_throughput ingress throughput -0.02 [-0.15, +0.11] 1 (metrics) (profiles) (logs)
otlp_ingest_logs_5mb_cpu % cpu utilization -4.30 [-9.03, +0.44] 1 (metrics) (profiles) (logs)

Fine details of change detection per experiment

perf experiment goal Δ mean % Δ mean % CI trials links
otlp_ingest_logs_5mb_memory memory utilization +5.15 [+4.71, +5.59] 1 (metrics) (profiles) (logs)
dsd_uds_512kb_3k_contexts_cpu % cpu utilization +2.45 [-51.88, +56.79] 1 (metrics) (profiles) (logs)
dsd_uds_100mb_3k_contexts_cpu % cpu utilization +1.94 [-4.53, +8.41] 1 (metrics) (profiles) (logs)
dsd_uds_1mb_3k_contexts_memory memory utilization +0.60 [+0.43, +0.77] 1 (metrics) (profiles) (logs)
quality_gates_rss_dsd_low memory utilization +0.51 [+0.31, +0.70] 1 (metrics) (profiles) (logs)
dsd_uds_10mb_3k_contexts_memory memory utilization +0.49 [+0.30, +0.67] 1 (metrics) (profiles) (logs)
quality_gates_rss_idle memory utilization +0.31 [+0.28, +0.35] 1 (metrics) (profiles) (logs)
dsd_uds_512kb_3k_contexts_memory memory utilization +0.25 [+0.07, +0.43] 1 (metrics) (profiles) (logs)
dsd_uds_100mb_3k_contexts_memory memory utilization +0.02 [-0.16, +0.21] 1 (metrics) (profiles) (logs)
dsd_uds_10mb_3k_contexts_throughput ingress throughput +0.01 [-0.15, +0.17] 1 (metrics) (profiles) (logs)
otlp_ingest_metrics_5mb_throughput ingress throughput +0.01 [-0.13, +0.14] 1 (metrics) (profiles) (logs)
dsd_uds_1mb_3k_contexts_throughput ingress throughput +0.00 [-0.05, +0.06] 1 (metrics) (profiles) (logs)
dsd_uds_512kb_3k_contexts_throughput ingress throughput +0.00 [-0.05, +0.05] 1 (metrics) (profiles) (logs)
otlp_ingest_logs_5mb_throughput ingress throughput -0.02 [-0.15, +0.11] 1 (metrics) (profiles) (logs)
dsd_uds_100mb_3k_contexts_throughput ingress throughput -0.04 [-0.08, +0.01] 1 (metrics) (profiles) (logs)
dsd_uds_500mb_3k_contexts_cpu % cpu utilization -0.07 [-1.51, +1.37] 1 (metrics) (profiles) (logs)
quality_gates_rss_dsd_medium memory utilization -0.11 [-0.30, +0.08] 1 (metrics) (profiles) (logs)
quality_gates_rss_dsd_ultraheavy memory utilization -0.28 [-0.40, -0.15] 1 (metrics) (profiles) (logs)
dsd_uds_500mb_3k_contexts_memory memory utilization -0.34 [-0.51, -0.17] 1 (metrics) (profiles) (logs)
otlp_ingest_metrics_5mb_cpu % cpu utilization -0.43 [-7.70, +6.84] 1 (metrics) (profiles) (logs)
quality_gates_rss_dsd_heavy memory utilization -0.67 [-0.81, -0.54] 1 (metrics) (profiles) (logs)
dsd_uds_500mb_3k_contexts_throughput ingress throughput -1.04 [-1.16, -0.92] 1 (metrics) (profiles) (logs)
otlp_ingest_metrics_5mb_memory memory utilization -1.81 [-1.96, -1.65] 1 (metrics) (profiles) (logs)
dsd_uds_1mb_3k_contexts_cpu % cpu utilization -4.03 [-54.99, +46.93] 1 (metrics) (profiles) (logs)
otlp_ingest_logs_5mb_cpu % cpu utilization -4.30 [-9.03, +0.44] 1 (metrics) (profiles) (logs)
dsd_uds_10mb_3k_contexts_cpu % cpu utilization -6.08 [-35.27, +23.11] 1 (metrics) (profiles) (logs)

Bounds Checks: ✅ Passed

perf experiment bounds_check_name replicates_passed observed_value links
quality_gates_rss_dsd_heavy memory_usage 10/10 112.70MiB ≤ 140MiB (metrics) (profiles) (logs)
quality_gates_rss_dsd_low memory_usage 10/10 33.61MiB ≤ 50MiB (metrics) (profiles) (logs)
quality_gates_rss_dsd_medium memory_usage 10/10 53.23MiB ≤ 75MiB (metrics) (profiles) (logs)
quality_gates_rss_dsd_ultraheavy memory_usage 10/10 167.21MiB ≤ 200MiB (metrics) (profiles) (logs)
quality_gates_rss_idle memory_usage 10/10 21.30MiB ≤ 40MiB (metrics) (profiles) (logs)

Explanation

Confidence level: 90.00%
Effect size tolerance: |Δ mean %| ≥ 5.00%

Performance changes are noted in the perf column of each table:

  • ✅ = significantly better comparison variant performance
  • ❌ = significantly worse comparison variant performance
  • ➖ = no significant change in performance

A regression test is an A/B test of target performance in a repeatable rig, where "performance" is measured as "comparison variant minus baseline variant" for an optimization goal (e.g., ingress throughput). Due to intrinsic variability in measuring that goal, we can only estimate its mean value for each experiment; we report uncertainty in that value as a 90.00% confidence interval denoted "Δ mean % CI".

For each experiment, we decide whether a change in performance is a "regression" -- a change worth investigating further -- if all of the following criteria are true:

  1. Its estimated |Δ mean %| ≥ 5.00%, indicating the change is big enough to merit a closer look.

  2. Its 90.00% confidence interval "Δ mean % CI" does not contain zero, indicating that if our statistical model is accurate, there is at least a 90.00% chance there is a difference in performance between baseline and comparison variants.

  3. Its configuration does not mark it "erratic".

Replicate Execution Details

We run multiple replicates for each experiment/variant. However, we allow replicates to be automatically retried if there are any failures, up to 8 times, at which point the replicate is marked dead and we are unable to run analysis for the entire experiment. We call each of these attempts at running replicates a replicate execution. This section lists all replicate executions that failed due to the target crashing or being oom killed.

Note: In the below tables we bucket failures by experiment, variant, and failure type. For each of these buckets we list out the replicate indexes that failed with an annotation signifying how many times said replicate failed with the given failure mode. In the below example the baseline variant of the experiment named experiment_with_failures had two replicates that failed by oom kills. Replicate 0, which failed 8 executions, and replicate 1 which failed 6 executions, all with the same failure mode.

Experiment Variant Replicates Failure Logs Debug Dashboard
experiment_with_failures baseline 0 (x8) 1 (x6) Oom killed Debug Dashboard

The debug dashboard links will take you to a debugging dashboard specifically designed to investigate replicate execution failures.

❌ Retried Normal Replicate Execution Failures (non-profiling)

Experiment Variant Replicates Failure Debug Dashboard
dsd_uds_10mb_3k_contexts_memory baseline 0 Failed to shutdown when requested Debug Dashboard
otlp_ingest_traces_5mb_cpu baseline 1 (x8), 9 (x7), 4 (x8), 6 (x8), 0 (x8), 2 (x7), 3 (x8), 5 (x7), 7 (x8), 8 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_5mb_cpu comparison 9 (x8), 4 (x7), 1 (x8), 7 (x7), 0 (x8), 8 (x7), 6 (x7), 5 (x7), 2 (x7), 3 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_5mb_memory baseline 9 (x8), 1 (x8), 7 (x8), 4 (x8), 5 (x7), 6 (x8), 3 (x7), 2 (x8), 0 (x8), 8 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_5mb_memory comparison 2 (x8), 9 (x7), 1 (x7), 7 (x8), 3 (x7), 5 (x8), 0 (x7), 4 (x7), 6 (x8), 8 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_5mb_throughput baseline 2 (x7), 9 (x8), 3 (x7), 1 (x8), 4 (x7), 5 (x8), 0 (x8), 7 (x8), 6 (x7), 8 (x7) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_5mb_throughput comparison 2 (x7), 9 (x7), 3 (x7), 1 (x7), 8 (x8), 5 (x8), 6 (x8), 0 (x7), 7 (x8), 4 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_filtering_5mb_cpu baseline 9 (x8), 2 (x7), 5 (x8), 1 (x8), 6 (x8), 7 (x8), 3 (x8), 4 (x8), 0 (x8), 8 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_filtering_5mb_cpu comparison 6 (x8), 0 (x8), 7 (x8), 5 (x8), 9 (x8), 1 (x8), 3 (x8), 2 (x8), 4 (x8), 8 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_filtering_5mb_memory baseline 6 (x8), 9 (x8), 1 (x8), 3 (x7), 5 (x7), 2 (x8), 4 (x8), 7 (x8), 0 (x8), 8 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_filtering_5mb_memory comparison 4 (x8), 2 (x8), 9 (x8), 1 (x8), 5 (x7), 7 (x8), 3 (x7), 8 (x7), 6 (x7), 0 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_filtering_5mb_throughput baseline 5 (x7), 0 (x7), 3 (x7), 1 (x7), 9 (x7), 2 (x7), 7 (x7), 6 (x7), 4 (x7), 8 (x7) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_filtering_5mb_throughput comparison 4 (x6), 1 (x6), 2 (x8), 3 (x8), 0 (x7), 6 (x7), 8 (x8), 5 (x8), 7 (x5), 9 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_transform_5mb_cpu baseline 3 (x8), 2 (x8), 5 (x8), 0 (x7), 7 (x8), 9 (x8), 6 (x8), 8 (x8), 1 (x8), 4 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_transform_5mb_cpu comparison 4 (x8), 5 (x7), 9 (x8), 2 (x8), 6 (x8), 8 (x8), 3 (x8), 7 (x7), 0 (x8), 1 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_transform_5mb_memory baseline 3 (x7), 4 (x7), 7 (x8), 1 (x8), 8 (x8), 6 (x7), 5 (x7), 0 (x8), 9 (x8), 2 (x7) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_transform_5mb_memory comparison 3 (x7), 2 (x8), 7 (x8), 5 (x7), 1 (x8), 0 (x8), 8 (x7), 9 (x8), 4 (x7), 6 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_transform_5mb_throughput baseline 5 (x8), 4 (x8), 0 (x7), 6 (x7), 9 (x6), 3 (x8), 2 (x7), 8 (x7), 7 (x8), 1 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_transform_5mb_throughput comparison 1 (x8), 8 (x7), 7 (x8), 3 (x7), 2 (x8), 5 (x8), 6 (x7), 0 (x7), 4 (x6), 9 (x7) Crashed (exit code: 1) Debug Dashboard
quality_gates_rss_dsd_ultraheavy comparison 5 Failed to shutdown when requested Debug Dashboard
tagfilter_0tags baseline 3 (x8), 1 (x7), 5 (x8), 6 (x8), 9 (x8), 4 (x8), 7 (x8), 2 (x8), 0 (x8), 8 (x8) Crashed (exit code: 1) Debug Dashboard
tagfilter_0tags comparison 9 (x8), 6 (x8), 0 (x8), 1 (x8), 8 (x8), 3 (x8), 4 (x8), 2 (x8), 5 (x7), 7 (x8) Crashed (exit code: 1) Debug Dashboard
tagfilter_100metrics baseline 8 (x8), 0 (x8), 2 (x8), 6 (x8), 4 (x8), 9 (x8), 5 (x8), 7 (x8), 1 (x8), 3 (x8) Crashed (exit code: 1) Debug Dashboard
tagfilter_100metrics comparison 8 (x8), 9 (x8), 0 (x8), 7 (x8), 4 (x8), 3 (x8), 6 (x8), 2 (x8), 5 (x8), 1 (x8) Crashed (exit code: 1) Debug Dashboard
tagfilter_500metrics baseline 0 (x8), 4 (x8), 8 (x8), 7 (x8), 6 (x8), 9 (x8), 3 (x8), 1 (x8), 5 (x8), 2 (x8) Crashed (exit code: 1) Debug Dashboard
tagfilter_500metrics comparison 7 (x8), 2 (x8), 6 (x8), 1 (x8), 4 (x8), 0 (x8), 5 (x8), 3 (x8), 9 (x8), 8 (x8) Crashed (exit code: 1) Debug Dashboard
tagfilter_500metrics_notraffic baseline 1 (x8), 5 (x8), 9 (x8), 6 (x8), 8 (x8), 2 (x8), 0 (x8), 4 (x8), 7 (x8), 3 (x8) Crashed (exit code: 1) Debug Dashboard
tagfilter_500metrics_notraffic comparison 2 (x8), 9 (x8), 3 (x8), 8 (x8), 5 (x8), 4 (x8), 0 (x8), 7 (x8), 1 (x8), 6 (x8) Crashed (exit code: 1) Debug Dashboard

❌ Retried Profiling Replicate Execution Failures (target internal profiling)

Note: Profiling replicas may still be executing. See the debug dashboard for up to date status.

Experiment Variant Replicates Failure Debug Dashboard
otlp_ingest_traces_5mb_cpu baseline 11 (x8), 10 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_5mb_cpu comparison 11 (x8), 10 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_5mb_memory baseline 10 (x8), 11 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_5mb_memory comparison 11 (x8), 10 (x7) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_5mb_throughput baseline 11 (x8), 10 (x7) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_5mb_throughput comparison 11 (x8), 10 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_filtering_5mb_cpu baseline 11 (x8), 10 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_filtering_5mb_cpu comparison 11 (x8), 10 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_filtering_5mb_memory baseline 11 (x8), 10 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_filtering_5mb_memory comparison 11 (x8), 10 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_filtering_5mb_throughput baseline 10 (x8), 11 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_filtering_5mb_throughput comparison 10 (x8), 11 (x7) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_transform_5mb_cpu baseline 10 (x8), 11 (x7) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_transform_5mb_cpu comparison 10 (x8), 11 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_transform_5mb_memory baseline 10 (x8), 11 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_transform_5mb_memory comparison 11 (x8), 10 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_transform_5mb_throughput baseline 10 (x8), 11 (x8) Crashed (exit code: 1) Debug Dashboard
otlp_ingest_traces_ottl_transform_5mb_throughput comparison 10 (x8), 11 (x8) Crashed (exit code: 1) Debug Dashboard
tagfilter_0tags baseline 10 (x8), 11 (x8) Crashed (exit code: 1) Debug Dashboard
tagfilter_0tags comparison 10 (x8), 11 (x8) Crashed (exit code: 1) Debug Dashboard
tagfilter_100metrics baseline 11 (x8), 10 (x8) Crashed (exit code: 1) Debug Dashboard
tagfilter_100metrics comparison 10 (x8), 11 (x8) Crashed (exit code: 1) Debug Dashboard
tagfilter_500metrics baseline 10 (x8), 11 (x8) Crashed (exit code: 1) Debug Dashboard
tagfilter_500metrics comparison 10 (x8), 11 (x8) Crashed (exit code: 1) Debug Dashboard
tagfilter_500metrics_notraffic baseline 11 (x8), 10 (x8) Crashed (exit code: 1) Debug Dashboard
tagfilter_500metrics_notraffic comparison 10 (x8), 11 (x8) Crashed (exit code: 1) Debug Dashboard

Copy link
Contributor

@webern webern left a comment

Choose a reason for hiding this comment

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

Caveat: I'm new here!

Mostly questions due to lack of exposure to the codebase. I ran out of time to try to run anything, so this was just a visual review.


use super::FilterMetricTagsOutcome;

#[derive(Clone)]
Copy link
Contributor

Choose a reason for hiding this comment

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

I know binary size is a big thing for us. Do we not derive Debug by default for that reason?

use super::FilterMetricTagsOutcome;

#[derive(Clone)]
pub struct Telemetry {
Copy link
Contributor

Choose a reason for hiding this comment

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

I think structures like this should have doc comments, especially when pub. Or... to kind of say something similar but differently, Telemetry is a fairly overloaded name in a repository like this. Is there a pattern of having many Telemetry structs in the codebase for different purposes?

Perhaps TagFilterTelemetry?

Edit: ok I answered the question with Claude. Yes there is a pattern of telemetry.rs files and structs named telemetry.

My next question is whether it needs to be pub...

DD_PROFILING_INLINED_FUNCTIONS: "true"
checks:
- name: memory_usage
description: Memory usage quality gate. This puts a bound on the total ADP memory usage.
Copy link
Contributor

Choose a reason for hiding this comment

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

Is this intended to describe the entire experiment, or just the check? Without looking at other experiment.yaml files (yet), it feels like what is missing is a story about why the experiment was added. For example we have these large metric names that are the same until the Nth character position and these are being added to verify the performance of a new tag filtering mechanism. Do we want some of that context and thinking to be added to either the lading.yaml or experiment.yaml files?

@@ -1,5 +1,5 @@
lading:
version: 0.31.2
Copy link
Contributor

Choose a reason for hiding this comment

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

Suspicious, but I don't know what this is doing as of yet.

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

Labels

area/components Sources, transforms, and destinations. area/test All things testing: unit/integration, correctness, SMP regression, etc.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants