Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CWS-1348] Persist profile when a workload stops #23914

Merged
merged 7 commits into from
Mar 22, 2024

Conversation

YoannGh
Copy link
Contributor

@YoannGh YoannGh commented Mar 20, 2024

What does this PR do?

This PR makes it so that the profile associated to a workload is persisted to the filesystem when the corresponding workload stops.
Upon loading profiles from the filesystem, persisted profiles are prioritized over profiles originating from activity dumps using a newly introduced selector field.

Motivation

Additional Notes

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

@pr-commenter
Copy link

pr-commenter bot commented Mar 20, 2024

Test changes on VM

Use this command from test-infra-definitions to manually test this PR changes on a VM:

inv create-vm --pipeline-id=30622587 --os-family=ubuntu

@pr-commenter
Copy link

pr-commenter bot commented Mar 20, 2024

Regression Detector

Regression Detector Results

Run ID: e6396edf-80f8-4024-a1cd-835e328177a3
Baseline: 925d8d0
Comparison: 568e16b

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

No significant changes in experiment optimization goals

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

There were no significant changes in experiment optimization goals at this confidence level and effect size tolerance.

Experiments ignored for regressions

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

perf experiment goal Δ mean % Δ mean % CI
file_to_blackhole % cpu utilization -0.69 [-6.94, +5.55]

Fine details of change detection per experiment

perf experiment goal Δ mean % Δ mean % CI
basic_py_check % cpu utilization +1.11 [-1.49, +3.71]
pycheck_1000_100byte_tags % cpu utilization +0.81 [-4.11, +5.73]
otel_to_otel_logs ingress throughput +0.41 [+0.01, +0.82]
idle memory utilization +0.40 [+0.35, +0.44]
tcp_syslog_to_blackhole ingress throughput +0.28 [+0.20, +0.36]
trace_agent_msgpack ingress throughput +0.01 [+0.00, +0.01]
uds_dogstatsd_to_api ingress throughput +0.00 [-0.20, +0.20]
process_agent_real_time_mode memory utilization -0.02 [-0.08, +0.03]
trace_agent_json ingress throughput -0.03 [-0.07, +0.01]
tcp_dd_logs_filter_exclude ingress throughput -0.03 [-0.05, -0.01]
process_agent_standard_check_with_stats memory utilization -0.04 [-0.08, +0.01]
file_tree memory utilization -0.05 [-0.18, +0.08]
process_agent_standard_check memory utilization -0.19 [-0.25, -0.13]
uds_dogstatsd_to_api_cpu % cpu utilization -0.65 [-3.37, +2.08]
file_to_blackhole % cpu utilization -0.69 [-6.94, +5.55]

Explanation

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".

@YoannGh YoannGh force-pushed the yoanngh/persist-profiles branch 2 times, most recently from aa60982 to 88c304f Compare March 20, 2024 15:23
@YoannGh YoannGh requested review from a team as code owners March 20, 2024 15:23
@YoannGh YoannGh removed request for a team March 20, 2024 15:25
@spikat spikat force-pushed the jrs/add-profile-sliding-window branch from f0faff6 to 6273b21 Compare March 21, 2024 08:41
Copy link
Contributor

@spikat spikat left a comment

Choose a reason for hiding this comment

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

LGTM

@spikat spikat force-pushed the jrs/add-profile-sliding-window branch from 6e1c4f2 to c560a92 Compare March 22, 2024 09:09
Base automatically changed from jrs/add-profile-sliding-window to main March 22, 2024 11:12
@YoannGh
Copy link
Contributor Author

YoannGh commented Mar 22, 2024

/merge

@dd-devflow
Copy link

dd-devflow bot commented Mar 22, 2024

🚂 MergeQueue

Pull request added to the queue.

This build is next! (estimated merge in less than 29m)

Use /merge -c to cancel this operation!

@dd-mergequeue dd-mergequeue bot merged commit cd2c0b3 into main Mar 22, 2024
205 checks passed
@dd-mergequeue dd-mergequeue bot deleted the yoanngh/persist-profiles branch March 22, 2024 13:28
alexgallotta pushed a commit that referenced this pull request May 9, 2024
Co-authored-by: spikat <jonathan.ribas@datadoghq.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants