scribe_scaling/
parallel.rs

1//! Parallel processing configuration for scaling operations.
2
3use serde::{Deserialize, Serialize};
4use std::time::Duration;
5
6/// Configuration for parallel processing
7#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct ParallelConfig {
9    /// Maximum number of concurrent tasks
10    pub max_concurrent_tasks: usize,
11
12    /// Number of async workers
13    pub async_worker_count: usize,
14
15    /// Number of CPU-bound workers
16    pub cpu_worker_count: usize,
17
18    /// Timeout for individual tasks
19    pub task_timeout: Duration,
20
21    /// Enable work-stealing between workers
22    pub enable_work_stealing: bool,
23}
24
25impl Default for ParallelConfig {
26    fn default() -> Self {
27        Self {
28            max_concurrent_tasks: num_cpus::get() * 2,
29            async_worker_count: num_cpus::get(),
30            cpu_worker_count: num_cpus::get(),
31            task_timeout: Duration::from_secs(30),
32            enable_work_stealing: true,
33        }
34    }
35}