Skip to main content

cherenkov/server/
stats.rs

1//! Generation work, shared by active-request and committed-session snapshots.
2
3use serde::Serialize;
4
5#[derive(Debug, Default, Clone, Copy, Serialize)]
6pub struct UsageStats {
7    pub prompt_tokens: u64,
8    pub cached_tokens: u64,
9    pub generated_tokens: u64,
10    pub prefill_seconds: f64,
11    pub decode_seconds: f64,
12}
13
14impl UsageStats {
15    pub(super) fn add(&mut self, other: Self) {
16        self.prompt_tokens = self.prompt_tokens.saturating_add(other.prompt_tokens);
17        self.cached_tokens = self.cached_tokens.saturating_add(other.cached_tokens);
18        self.generated_tokens = self.generated_tokens.saturating_add(other.generated_tokens);
19        self.prefill_seconds += other.prefill_seconds;
20        self.decode_seconds += other.decode_seconds;
21    }
22}