Skip to content

Nightly stress test: skip the warm-up when checking the Master RSS slope - #70682

Closed
charzl wants to merge 5 commits into
saltstack:3006.xfrom
charzl:ci/stress-test-skip-warmup-3006
Closed

charzl wants to merge 5 commits into
saltstack:3006.xfrom
charzl:ci/stress-test-skip-warmup-3006

Conversation

@charzl

@charzl charzl commented Nov 4, 2026

Copy link
Copy Markdown
Collaborator

What does this PR do?

The nightly stress test failed on the Master RSS slope (244 KB/sec, limit 10 KB/sec). analyze_stats.py fitted the last 30m, which is the whole default run, so the start-up ramp-up of RSS was counted as a leak.

  • The slope window now starts 10 minutes after the stress starts, and is at least the last 10 minutes. The workflow records the start time in STRESS_START_EPOCH. The warm-up can be changed with STRESS_WARMUP_SECONDS.
  • The shortest duration option is now 20m (10m warm-up + 10m of data); it was 10m.
  • The Master RSS slope limit is 15 KB/sec (was 10 KB/sec). Master RSS is not flat: it moves by a few hundred MB about every 6 minutes, so the fitted slope keeps some noise. Two 30m runs on master measured about 13 and 7 KB/sec.

What issues does this PR fix or reference?

Fixes #70677

Notes

  • The 15 KB/sec limit comes from runs of the same change on master. A 30m run on this branch is queued on my fork and has not finished yet.
  • A 20m run is judged on 10 minutes of data. Use 30m or longer for a reliable leak check.
  • master has a different analyze_stats.py (it also has check_salt_prometheus_metrics), so merging forward may need a manual resolve.

Merge requirements satisfied?

CI only: no docs or tests.

  • Docs
  • Changelog
  • Tests written/updated

Commits signed with GPG?

No

The slope was computed over the last 30m, which is the whole default run,
so the start-up ramp-up of RSS looked like a leak.

- analyze_stats.py: use the data after the 10m warm-up (at least the last
  5m), based on the real run length from STRESS_START_EPOCH.  Master RSS
  limit is 15 KB/sec (was 10): RSS oscillates by a few hundred MB every
  ~6 minutes, so the fit keeps some noise.
- workflow: record STRESS_START_EPOCH; shortest duration is now 15m
  (10m warm-up + 5m of data)
15m leaves only 5m of data after the warm-up, too little for a
meaningful RSS slope.  Keep at least the last 10m.
The window is the time after the warm-up, at most the last 30m (the old
default), also when the start time of the run is unknown.  Long runs are
judged on their last 30m so a late leak is not averaged away.
@charzl

charzl commented Nov 4, 2026

Copy link
Copy Markdown
Collaborator Author

Closing: the leak check is not needed on 3006.x (it does not start fd_exporter, so there is no data). The fix goes to 3008.x in #70683.

This branch was previously deployed

1 inactive deployment
ci — 178ff66c Deployed Nov 4, 2026 by charzl via Build Onedir Packages / macOS (arm64) #28439
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

test:full Run the full test suite

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant