Struct MetricAggregator
pub struct MetricAggregator {
per_actor: RwLock<RawRwLock, HashMap<ActorId, ActorMetricState>>,
ewma_alpha: f64,
hlc_node_id: u64,
}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.
Fields§
§per_actor: RwLock<RawRwLock, HashMap<ActorId, ActorMetricState>>§ewma_alpha: f64§hlc_node_id: u64Implementations§
§impl MetricAggregator
impl MetricAggregator
pub fn new() -> MetricAggregator
pub fn new() -> MetricAggregator
Create an aggregator with the default EWMA alpha (DEFAULT_EWMA_ALPHA).
pub fn with_alpha(alpha: f64) -> MetricAggregator
pub fn with_alpha(alpha: f64) -> MetricAggregator
Create an aggregator with a custom EWMA smoothing factor.
alpha is clamped to (0.0, 1.0].
pub fn with_hlc_node_id(self, node_id: u64) -> MetricAggregator
pub fn with_hlc_node_id(self, node_id: u64) -> MetricAggregator
Configure the HLC node identifier used when stamping snapshots.
pub fn ewma_alpha(&self) -> f64
pub fn ewma_alpha(&self) -> f64
Current EWMA smoothing factor.
pub 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.
pub 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.
pub 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.
pub 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.
pub 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.
pub 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.
pub 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.
pub 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.
pub fn tracked_actors(&self) -> usize
pub fn tracked_actors(&self) -> usize
Number of actors currently tracked.
pub 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.
pub fn snapshot_all(&self) -> Vec<LiveMetrics>
pub fn snapshot_all(&self) -> Vec<LiveMetrics>
Produce smoothed snapshots for all tracked actors.
Trait Implementations§
§impl Debug for MetricAggregator
impl Debug for MetricAggregator
§impl Default for MetricAggregator
impl Default for MetricAggregator
§fn default() -> MetricAggregator
fn default() -> MetricAggregator
Auto Trait Implementations§
impl !Freeze for MetricAggregator
impl !RefUnwindSafe for MetricAggregator
impl Send for MetricAggregator
impl Sync for MetricAggregator
impl Unpin for MetricAggregator
impl UnwindSafe for MetricAggregator
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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
§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
§fn deserialize(
&self,
deserializer: &mut D,
) -> Result<With<T, W>, <D as Fallible>::Error>
fn deserialize( &self, deserializer: &mut D, ) -> Result<With<T, W>, <D as Fallible>::Error>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more