Skip to main content

Module budget

Module budget 

Source
Expand description

§Task Budget Enforcement

Implements task budget enforcement to ensure Ring 0 latency guarantees are met. Each operation has a time budget, and exceeding it triggers metrics/alerts. Ring 1 background tasks cooperatively yield when Ring 0 has pending work or when their budget is exhausted.

§Budget Constants

RingOperationBudgetNotes
0Single event500nsp99 latency target
0Event batch5μsUp to 10 events
0State lookup200nsFast path
0Window trigger10μsAggregation emission
1Background chunk1msCooperative yielding
1Checkpoint prep10msAsync operation
1WAL flush100μsGroup commit

§Usage

use laminar_core::budget::TaskBudget;

// Ring 0: Track single event processing
fn process_event(event: &Event) {
    let _budget = TaskBudget::ring0_event();
    // Process event - metrics recorded automatically on drop
    process(event);
}

// Ring 1: Cooperative yielding
fn process_background_work(&mut self) -> YieldReason {
    let budget = TaskBudget::ring1_chunk();

    while !budget.exceeded() {
        if self.ring0_has_pending() {
            return YieldReason::Ring0Priority;
        }
        // Process work...
    }

    YieldReason::BudgetExceeded
}

§Metrics

The module tracks:

  • Task duration histograms (per task type, per ring)
  • Budget violation counts
  • Amount exceeded (for capacity planning)

Access budget status via TaskBudget methods.

Structs§

TaskBudget
Tracks execution time budget for a task.

Enums§

YieldReason
Reason Ring 1 yielded control.