Brand version banners around oc-rsync#2093
Merged
Merged
Conversation
This was referenced May 7, 2026
oferchen
added a commit
that referenced
this pull request
May 7, 2026
Proposes an AIMD (Additive-Increase / Multiplicative-Decrease) controller that replaces the static CAPACITY_MULTIPLIER and PARALLEL_THRESHOLD knobs with a feedback-driven concurrency limiter. Covers placement, state machine, overload detection, integration points in the engine, transfer, and CLI crates, trade-offs vs Vegas/BBR/Gradient2, implementation phases mapped to tasks #2091-#2093, and open questions on per-pipeline scope, --bwlimit interaction, and local-only feedback signal quality.
14 tasks
oferchen
added a commit
that referenced
this pull request
May 7, 2026
Adds the standalone limiter type defined by the design RFC at docs/design/aimd-concurrency-limiter.md. The implementation lives in crates/engine/src/concurrent_delta/work_queue/limiter.rs and exposes: - LimiterConfig builder with min_limit / max_limit / alpha / beta_num / beta_den / build(). - AimdLimiter with try_acquire, target, in_flight, rtt_ema_nanos, and a pub is_rtt_spike predicate. - RAII Ticket guard (#[must_use]) with record_success / record_overload / record_error and Drop fallback for panic paths. - OverloadReason variants for RttSpike / QueueSaturated / DiskCommitPressure / ErrorRate. Internals follow the RFC: integer-only RTT EMA (alpha_ema = 1/8 per RFC 6298), variance smoothed with beta = 1/4, RTT-spike threshold of ema + 2*sqrt(var) via Newton-method isqrt, slow-start doubling until the first decrease, debounce window of 2*rtt_ema after each multiplicative decrease, and AcqRel/Acquire atomic ordering on every target/in_flight transition. Twelve unit tests cover the algorithm: target saturation (single threaded and under thread contention), additive increase, multiplicative decrease, min/max clamps, debounce suppression, RTT EMA convergence, ticket Drop on panic, transient-vs-deterministic error classification, slow-start doubling, RTT-spike predicate, builder clamps, and the isqrt helper. Not yet integrated. Callers (WorkQueueSender, disk-commit, CLI) are wired in the follow-on tickets: - #2092: convergence tests under injected error. - #2093: --adaptive-concurrency / --no-adaptive-concurrency CLI flag.
oferchen
added a commit
that referenced
this pull request
May 7, 2026
* feat(engine): AIMD concurrency limiter type (#2091) Adds the standalone limiter type defined by the design RFC at docs/design/aimd-concurrency-limiter.md. The implementation lives in crates/engine/src/concurrent_delta/work_queue/limiter.rs and exposes: - LimiterConfig builder with min_limit / max_limit / alpha / beta_num / beta_den / build(). - AimdLimiter with try_acquire, target, in_flight, rtt_ema_nanos, and a pub is_rtt_spike predicate. - RAII Ticket guard (#[must_use]) with record_success / record_overload / record_error and Drop fallback for panic paths. - OverloadReason variants for RttSpike / QueueSaturated / DiskCommitPressure / ErrorRate. Internals follow the RFC: integer-only RTT EMA (alpha_ema = 1/8 per RFC 6298), variance smoothed with beta = 1/4, RTT-spike threshold of ema + 2*sqrt(var) via Newton-method isqrt, slow-start doubling until the first decrease, debounce window of 2*rtt_ema after each multiplicative decrease, and AcqRel/Acquire atomic ordering on every target/in_flight transition. Twelve unit tests cover the algorithm: target saturation (single threaded and under thread contention), additive increase, multiplicative decrease, min/max clamps, debounce suppression, RTT EMA convergence, ticket Drop on panic, transient-vs-deterministic error classification, slow-start doubling, RTT-spike predicate, builder clamps, and the isqrt helper. Not yet integrated. Callers (WorkQueueSender, disk-commit, CLI) are wired in the follow-on tickets: - #2092: convergence tests under injected error. - #2093: --adaptive-concurrency / --no-adaptive-concurrency CLI flag. * style: cargo fmt --all * fix(engine): clippy lints on AIMD limiter (abs_diff, div_ceil, format args)
5 tasks
oferchen
added a commit
that referenced
this pull request
May 13, 2026
…2093) Add convergence tests for the AIMD adaptive-concurrency limiter: - Alternating success/overload stabilizes target within bounded range - Sustained successes grow target monotonically - Debounce window expires after 2 * rtt_ema - Slow-start doubles over multiple windows - Overload during slow-start transitions to additive growth Add --adaptive-concurrency / --no-adaptive-concurrency CLI flag pair, wired through ParsedArgs -> ConfigInputs -> ClientConfigBuilder -> ClientConfig -> WriteConfig. Default is disabled (opt-in).
oferchen
added a commit
that referenced
this pull request
May 13, 2026
…2093) Add convergence tests for the AIMD adaptive-concurrency limiter: - Alternating success/overload stabilizes target within bounded range - Sustained successes grow target monotonically - Debounce window expires after 2 * rtt_ema - Slow-start doubles over multiple windows - Overload during slow-start transitions to additive growth Add --adaptive-concurrency / --no-adaptive-concurrency CLI flag pair, wired through ParsedArgs -> ConfigInputs -> ClientConfigBuilder -> ClientConfig -> WriteConfig. Default is disabled (opt-in).
oferchen
added a commit
that referenced
this pull request
May 13, 2026
…2093) (#3961) Add convergence tests for the AIMD adaptive-concurrency limiter: - Alternating success/overload stabilizes target within bounded range - Sustained successes grow target monotonically - Debounce window expires after 2 * rtt_ema - Slow-start doubles over multiple windows - Overload during slow-start transitions to additive growth Add --adaptive-concurrency / --no-adaptive-concurrency CLI flag pair, wired through ParsedArgs -> ConfigInputs -> ClientConfigBuilder -> ClientConfig -> WriteConfig. Default is disabled (opt-in).
oferchen
added a commit
that referenced
this pull request
May 18, 2026
Proposes an AIMD (Additive-Increase / Multiplicative-Decrease) controller that replaces the static CAPACITY_MULTIPLIER and PARALLEL_THRESHOLD knobs with a feedback-driven concurrency limiter. Covers placement, state machine, overload detection, integration points in the engine, transfer, and CLI crates, trade-offs vs Vegas/BBR/Gradient2, implementation phases mapped to tasks #2091-#2093, and open questions on per-pipeline scope, --bwlimit interaction, and local-only feedback signal quality.
oferchen
added a commit
that referenced
this pull request
May 18, 2026
* feat(engine): AIMD concurrency limiter type (#2091) Adds the standalone limiter type defined by the design RFC at docs/design/aimd-concurrency-limiter.md. The implementation lives in crates/engine/src/concurrent_delta/work_queue/limiter.rs and exposes: - LimiterConfig builder with min_limit / max_limit / alpha / beta_num / beta_den / build(). - AimdLimiter with try_acquire, target, in_flight, rtt_ema_nanos, and a pub is_rtt_spike predicate. - RAII Ticket guard (#[must_use]) with record_success / record_overload / record_error and Drop fallback for panic paths. - OverloadReason variants for RttSpike / QueueSaturated / DiskCommitPressure / ErrorRate. Internals follow the RFC: integer-only RTT EMA (alpha_ema = 1/8 per RFC 6298), variance smoothed with beta = 1/4, RTT-spike threshold of ema + 2*sqrt(var) via Newton-method isqrt, slow-start doubling until the first decrease, debounce window of 2*rtt_ema after each multiplicative decrease, and AcqRel/Acquire atomic ordering on every target/in_flight transition. Twelve unit tests cover the algorithm: target saturation (single threaded and under thread contention), additive increase, multiplicative decrease, min/max clamps, debounce suppression, RTT EMA convergence, ticket Drop on panic, transient-vs-deterministic error classification, slow-start doubling, RTT-spike predicate, builder clamps, and the isqrt helper. Not yet integrated. Callers (WorkQueueSender, disk-commit, CLI) are wired in the follow-on tickets: - #2092: convergence tests under injected error. - #2093: --adaptive-concurrency / --no-adaptive-concurrency CLI flag. * style: cargo fmt --all * fix(engine): clippy lints on AIMD limiter (abs_diff, div_ceil, format args)
oferchen
added a commit
that referenced
this pull request
May 18, 2026
…2093) (#3961) Add convergence tests for the AIMD adaptive-concurrency limiter: - Alternating success/overload stabilizes target within bounded range - Sustained successes grow target monotonically - Debounce window expires after 2 * rtt_ema - Slow-start doubles over multiple windows - Overload during slow-start transitions to additive growth Add --adaptive-concurrency / --no-adaptive-concurrency CLI flag pair, wired through ParsedArgs -> ConfigInputs -> ClientConfigBuilder -> ClientConfig -> WriteConfig. Default is disabled (opt-in).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Testing
Codex Task