mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-09-07 08:02:40 +00:00
Two new ignored simulations to characterise the algorithm's behavior
under conditions where the cap is not stable:
1. `fairness_oscillation_long_run` — 25 s sustained load with the
production-default 10 s window. Records per-second victim p95
latency and per-second noisy completion count to expose the
cap/uncap cycle. Asserts the oscillation peaks are bounded.
2. `fairness_burst_then_stop` — addresses the specific concern that
when noisy enqueues a large burst at t=0 (lowest scheduled_for in
the queue), workers fully switch to noisy on every uncap. Pushes
10 000 noisy jobs in one shot, no sustained noisy push, then runs
3 victim workspaces at 20 jobs/s each for 30 s. Records per-second
metrics for both workspaces.
Empirical findings (10 s window, ACTIVE_REFRESH_SECS=2 s,
refresh_loop driven every 250 ms):
- cap holds the bulk of the time; uncap windows are bounded by
refresh interval, not the duration window
- in the burst scenario the cycle is ~3 s (not 10 s) because
victim activity in the window dilutes noisy's stale completions
well before they age out
- victim p95 stays at ~85 ms baseline, with periodic blips to
~250-300 ms during uncap bursts — worst-second p95 285 ms
- victim completion rate remains 100 % throughout
- noisy is throttled, not excluded: drains ~22 % of its burst over
the 30 s simulation while victims see negligible degradation
Also: parameterised `run_scenario` on the fairness window so the
oscillation test can use the production-default 10 s instead of the
3 s short-window used by the other tests.
Windmill Backend
This folder holds all backend components, the src/ folder only contains files used to build the "root" binary.
Components
| name | description |
|---|---|
| windmill-api | The API server, exposing functionality to other components and the frontend |
| windmill-audit | Contains audit functionality, allowing different components to record important actions |
| windmill-common | Common code shared by all crates |
| windmill-queue | Contains job & flow queuing functionality, commonly written to by the API server and read from by workers |
| windmill-worker | The worker. Used to process and execute flows & jobs. |
| parsers | Contains code to parse signatures in different langauges. |
Compile sqlx for offline ci
cargo sqlx prepare --workspace -- --bin windmill --features enterprise