/home/noah/src/realizar/src/scheduler/types.rs
Line | Count | Source |
1 | | //! Scheduler Core Types |
2 | | //! |
3 | | //! Common types for the continuous batching scheduler. |
4 | | //! Extracted from scheduler/mod.rs (PMAT-802). |
5 | | |
6 | | use serde::{Deserialize, Serialize}; |
7 | | |
8 | | /// Request priority level |
9 | | #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)] |
10 | | pub enum Priority { |
11 | | /// Low priority (background tasks) |
12 | | Low = 0, |
13 | | /// Normal priority (standard requests) |
14 | | Normal = 1, |
15 | | /// High priority (interactive requests) |
16 | | High = 2, |
17 | | /// Critical priority (system requests) |
18 | | Critical = 3, |
19 | | } |
20 | | |
21 | | impl Default for Priority { |
22 | 23 | fn default() -> Self { |
23 | 23 | Self::Normal |
24 | 23 | } |
25 | | } |
26 | | |
27 | | /// Sequence state in the scheduler |
28 | | #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] |
29 | | pub enum SequenceState { |
30 | | /// Waiting in queue |
31 | | Waiting, |
32 | | /// Currently running |
33 | | Running, |
34 | | /// Preempted (swapped out) |
35 | | Preempted, |
36 | | /// Completed (EOS or max_tokens) |
37 | | Completed, |
38 | | /// Failed (error during generation) |
39 | | Failed, |
40 | | } |
41 | | |
42 | | /// Scheduler statistics |
43 | | #[derive(Debug, Clone, Default, Serialize, Deserialize)] |
44 | | pub struct SchedulerStats { |
45 | | /// Total requests received |
46 | | pub total_requests: u64, |
47 | | /// Total requests completed |
48 | | pub completed_requests: u64, |
49 | | /// Total preemptions |
50 | | pub preemptions: u64, |
51 | | /// Average queue wait time (ms) |
52 | | pub avg_wait_time_ms: f64, |
53 | | /// Average time-to-first-token (ms) |
54 | | pub avg_ttft_ms: f64, |
55 | | /// Current queue depth |
56 | | pub queue_depth: usize, |
57 | | /// Current running count |
58 | | pub running_count: usize, |
59 | | } |