pub struct BudgetMonitor { /* private fields */ }Expand description
Tracks budget violations over time windows for alerting.
The monitor aggregates violations per task and checks against configurable thresholds. When a task exceeds its threshold, an alert is generated.
§Example
ⓘ
use laminar_core::budget::BudgetMonitor;
use std::time::Duration;
let mut monitor = BudgetMonitor::new(
Duration::from_secs(60), // 1 minute window
10.0, // Alert if > 10 violations/sec
);
// Record violations
monitor.record_violation("ring0_event", 0, 100);
// Check for alerts
let alerts = monitor.check_alerts();
for alert in alerts {
eprintln!("ALERT: {} has {} violations/sec", alert.task, alert.violation_rate);
}Implementations§
Source§impl BudgetMonitor
impl BudgetMonitor
Sourcepub fn new(window: Duration, threshold: f64) -> Self
pub fn new(window: Duration, threshold: f64) -> Self
Create a new budget monitor.
§Arguments
window- Time window for rate calculation (e.g., 60 seconds)threshold- Alert threshold in violations per second
Sourcepub fn record_violation(&mut self, task: &str, ring: u8, exceeded_by_ns: u64)
pub fn record_violation(&mut self, task: &str, ring: u8, exceeded_by_ns: u64)
Record a budget violation.
§Arguments
task- Task name that violated budgetring- Ring number (0, 1, or 2)exceeded_by_ns- How much the budget was exceeded in nanoseconds
Sourcepub fn check_alerts(&mut self) -> Vec<BudgetAlert>
pub fn check_alerts(&mut self) -> Vec<BudgetAlert>
Check for alerts based on configured threshold.
Returns a list of alerts for tasks exceeding the threshold. Call this periodically (e.g., every second).
Sourcepub fn violation_count(&self, task: &str) -> u64
pub fn violation_count(&self, task: &str) -> u64
Get current violation count for a task.
Sourcepub fn set_threshold(&mut self, threshold: f64)
pub fn set_threshold(&mut self, threshold: f64)
Update the alert threshold.
Sourcepub fn violations(&self) -> &HashMap<String, ViolationWindow>
pub fn violations(&self) -> &HashMap<String, ViolationWindow>
Get all current violation windows.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for BudgetMonitor
impl RefUnwindSafe for BudgetMonitor
impl Send for BudgetMonitor
impl Sync for BudgetMonitor
impl Unpin for BudgetMonitor
impl UnwindSafe for BudgetMonitor
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.