pub struct MetricAggregator { /* private fields */ }Expand description
Aggregates per-actor metric counters and produces smoothed snapshots.
The aggregator is the CPU-side single source of truth for streaming
metrics. Backends (CPU dispatcher, CUDA K2H processor) feed it raw
counters via record_inbound, record_outbound, and
record_latency; subscribers consume smoothed snapshots via
snapshot / snapshot_all.
The aggregator is Send + Sync. Internal state is guarded by
parking_lot::RwLock.
Implementations§
Source§impl MetricAggregator
impl MetricAggregator
Sourcepub fn new() -> Self
pub fn new() -> Self
Create an aggregator with the default EWMA alpha (DEFAULT_EWMA_ALPHA).
Sourcepub fn with_alpha(alpha: f64) -> Self
pub fn with_alpha(alpha: f64) -> Self
Create an aggregator with a custom EWMA smoothing factor.
alpha is clamped to (0.0, 1.0].
Sourcepub fn with_hlc_node_id(self, node_id: u64) -> Self
pub fn with_hlc_node_id(self, node_id: u64) -> Self
Configure the HLC node identifier used when stamping snapshots.
Sourcepub fn ewma_alpha(&self) -> f64
pub fn ewma_alpha(&self) -> f64
Current EWMA smoothing factor.
Sourcepub fn record_inbound(&self, actor_id: ActorId, count: u64)
pub fn record_inbound(&self, actor_id: ActorId, count: u64)
Record count inbound messages for actor_id.
Sourcepub fn record_outbound(&self, actor_id: ActorId, count: u64)
pub fn record_outbound(&self, actor_id: ActorId, count: u64)
Record count outbound messages for actor_id.
Sourcepub fn record_latency(&self, actor_id: ActorId, d: Duration)
pub fn record_latency(&self, actor_id: ActorId, d: Duration)
Record an observed processing latency sample for actor_id.
Sourcepub fn set_queue_depth(&self, actor_id: ActorId, depth: usize)
pub fn set_queue_depth(&self, actor_id: ActorId, depth: usize)
Set the current queue depth for actor_id.
Sourcepub fn set_state_size(&self, actor_id: ActorId, bytes: u64)
pub fn set_state_size(&self, actor_id: ActorId, bytes: u64)
Set the current resident state size for actor_id.
Sourcepub fn set_gpu_utilization(&self, actor_id: ActorId, util: f32)
pub fn set_gpu_utilization(&self, actor_id: ActorId, util: f32)
Set the current GPU utilization for actor_id. Values outside [0.0, 1.0] are clamped.
Sourcepub fn set_tenant(&self, actor_id: ActorId, tenant_id: u64)
pub fn set_tenant(&self, actor_id: ActorId, tenant_id: u64)
Associate a tenant with actor_id.
Sourcepub fn remove_actor(&self, actor_id: &ActorId) -> bool
pub fn remove_actor(&self, actor_id: &ActorId) -> bool
Remove an actor’s state. Returns true if the actor was tracked.
Sourcepub fn tracked_actors(&self) -> usize
pub fn tracked_actors(&self) -> usize
Number of actors currently tracked.
Sourcepub fn snapshot(&self, actor_id: &ActorId) -> Option<LiveMetrics>
pub fn snapshot(&self, actor_id: &ActorId) -> Option<LiveMetrics>
Produce a smoothed snapshot for actor_id, updating EWMA rates.
Returns None if the actor is unknown.
Sourcepub fn snapshot_all(&self) -> Vec<LiveMetrics>
pub fn snapshot_all(&self) -> Vec<LiveMetrics>
Produce smoothed snapshots for all tracked actors.