diff options
| -rw-r--r-- | mullvad-daemon/src/runtime.rs | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/mullvad-daemon/src/runtime.rs b/mullvad-daemon/src/runtime.rs index 86d251db4c..5f4521ed01 100644 --- a/mullvad-daemon/src/runtime.rs +++ b/mullvad-daemon/src/runtime.rs @@ -1,8 +1,21 @@ +use std::num::NonZero; use tokio::runtime; +const MIN_NUM_THREADS: NonZero<usize> = NonZero::new(4).unwrap(); + pub fn new_multi_thread() -> runtime::Builder { let mut builder = runtime::Builder::new_multi_thread(); - builder.worker_threads(4).enable_all(); + match std::thread::available_parallelism() { + Ok(num_cpus) if num_cpus < MIN_NUM_THREADS => { + builder.worker_threads(MIN_NUM_THREADS.into()); + } + // Use default number of workers + Ok(_) => (), + Err(error) => { + log::warn!("Failed to retrieve number of CPU cores: {error}"); + } + } + builder.enable_all(); builder } |
