quantrs2_device/cloud/orchestration/performance/
mod.rs1use serde::{Deserialize, Serialize};
8use std::collections::{BTreeMap, HashMap};
9use std::time::Duration;
10
11pub mod latency;
12pub mod network;
13pub mod prediction;
14pub mod scaling;
15pub mod throughput;
16
17pub use latency::*;
18pub use network::*;
19pub use prediction::*;
20pub use scaling::*;
21pub use throughput::*;
22
23#[derive(Debug, Clone, Serialize, Deserialize)]
25pub struct CloudPerformanceConfig {
26 pub optimization_strategies: Vec<PerformanceOptimizationStrategy>,
28 pub latency_optimization: LatencyOptimizationConfig,
30 pub throughput_optimization: ThroughputOptimizationConfig,
32 pub qos_requirements: QoSRequirements,
34 pub performance_prediction: PerformancePredictionConfig,
36}
37
38#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
40pub enum PerformanceOptimizationStrategy {
41 LatencyMinimization,
42 ThroughputMaximization,
43 ResourceUtilizationOptimization,
44 EnergyEfficiencyOptimization,
45 CostPerformanceOptimization,
46 QoSOptimization,
47 CustomStrategy(String),
48}
49
50#[derive(Debug, Clone, Serialize, Deserialize)]
52pub struct QoSRequirements {
53 pub latency: LatencyRequirements,
55 pub throughput: ThroughputRequirements,
57 pub availability: AvailabilityRequirements,
59 pub reliability: ReliabilityRequirements,
61}
62
63#[derive(Debug, Clone, Serialize, Deserialize)]
65pub struct LatencyRequirements {
66 pub max_latency: Duration,
68 pub target_latency: Duration,
70 pub percentiles: BTreeMap<String, Duration>,
72}
73
74#[derive(Debug, Clone, Serialize, Deserialize)]
76pub struct ThroughputRequirements {
77 pub min_throughput: f64,
79 pub target_throughput: f64,
81 pub peak_throughput: f64,
83}
84
85#[derive(Debug, Clone, Serialize, Deserialize)]
87pub struct AvailabilityRequirements {
88 pub target_availability: f64,
90 pub max_downtime: Duration,
92 pub rto: Duration,
94 pub rpo: Duration,
96}
97
98#[derive(Debug, Clone, Serialize, Deserialize)]
100pub struct ReliabilityRequirements {
101 pub mtbf: Duration,
103 pub mttr: Duration,
105 pub error_rate_threshold: f64,
107}