diff options
Diffstat (limited to 'runtime/tokio_util.rs')
-rw-r--r-- | runtime/tokio_util.rs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/runtime/tokio_util.rs b/runtime/tokio_util.rs index d723006bd..1245a5b8e 100644 --- a/runtime/tokio_util.rs +++ b/runtime/tokio_util.rs @@ -1,11 +1,41 @@ // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. +use std::fmt::Debug; +use std::str::FromStr; use deno_core::task::MaskFutureAsSend; +/// Default configuration for tokio. In the future, this method may have different defaults +/// depending on the platform and/or CPU layout. +const fn tokio_configuration() -> (u32, u32, usize) { + (61, 31, 1024) +} + +fn tokio_env<T: FromStr>(name: &'static str, default: T) -> T +where + <T as FromStr>::Err: Debug, +{ + match std::env::var(name) { + Ok(value) => value.parse().unwrap(), + Err(_) => default, + } +} + pub fn create_basic_runtime() -> tokio::runtime::Runtime { + let (event_interval, global_queue_interval, max_io_events_per_tick) = + tokio_configuration(); + tokio::runtime::Builder::new_current_thread() .enable_io() .enable_time() + .event_interval(tokio_env("DENO_TOKIO_EVENT_INTERVAL", event_interval)) + .global_queue_interval(tokio_env( + "DENO_TOKIO_GLOBAL_QUEUE_INTERVAL", + global_queue_interval, + )) + .max_io_events_per_tick(tokio_env( + "DENO_TOKIO_MAX_IO_EVENTS_PER_TICK", + max_io_events_per_tick, + )) // This limits the number of threads for blocking operations (like for // synchronous fs ops) or CPU bound tasks like when we run dprint in // parallel for deno fmt. |