use super::scaling::ResourceScalingConfig;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ThroughputOptimizationConfig {
pub target_throughput: f64,
pub techniques: Vec<ThroughputOptimizationTechnique>,
pub parallelization: ParallelizationConfig,
pub scaling: ResourceScalingConfig,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ThroughputOptimizationTechnique {
ParallelProcessing,
LoadBalancing,
ResourceScaling,
Caching,
Pipelining,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ParallelizationConfig {
pub max_parallel_jobs: usize,
pub worker_pool_size: usize,
pub distribution_strategy: WorkDistributionStrategy,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum WorkDistributionStrategy {
RoundRobin,
LeastLoaded,
WorkStealing,
Random,
Custom(String),
}