Expand description
§AIMD Adaptive Admission Control
Additive-Increase / Multiplicative-Decrease concurrency limiter with gradient-based overload detection and a rolling acceptance-rate window.
§Design
AdmissionController tracks an adaptive concurrency limit that starts
at min_limit and grows linearly on success (+additive_increase) and
shrinks geometrically on overload (* multiplicative_decrease).
Callers call AdmissionController::try_acquire which returns an
AcquireGuard RAII handle. Dropping the guard decrements in_flight.
The caller then signals success via AcquireGuard::success (or lets it
drop silently for a neutral outcome).
Latency gradient: every time a request completes the controller computes
the ratio of the current latency against an exponential moving average.
When the ratio exceeds gradient_threshold (default 2.0) it calls
on_overload.
§Example
use tokio_prompt_orchestrator::admission_control::{
AdmissionController, AdmissionConfig,
};
use std::time::Duration;
let ctrl = AdmissionController::new(AdmissionConfig::default());
if let Some(guard) = ctrl.try_acquire() {
guard.success(); // signal a successful, fast response
}Structs§
- Acquire
Guard - RAII guard returned by
AdmissionController::try_acquire. - Admission
Config - Configuration for
AdmissionController. - Admission
Controller - AIMD adaptive concurrency controller.
- Admission
Stats - Snapshot of admission controller metrics.