From 9a026ec1cf1e1f6beb44a5226680a3aaf3b5a340 Mon Sep 17 00:00:00 2001 From: DaniPopes <57450786+DaniPopes@users.noreply.github.com> Date: Wed, 4 Feb 2026 21:09:04 +0100 Subject: [PATCH] perf: use num_threads for prewarm concurrency (#21826) --- crates/engine/primitives/src/config.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/crates/engine/primitives/src/config.rs b/crates/engine/primitives/src/config.rs index 7529e15cda..700b8852d0 100644 --- a/crates/engine/primitives/src/config.rs +++ b/crates/engine/primitives/src/config.rs @@ -44,8 +44,17 @@ pub const DEFAULT_MULTIPROOF_TASK_CHUNK_SIZE_V2: usize = DEFAULT_MULTIPROOF_TASK /// This will be deducted from the thread count of main reth global threadpool. pub const DEFAULT_RESERVED_CPU_CORES: usize = 1; -/// Default maximum concurrency for prewarm task. -pub const DEFAULT_PREWARM_MAX_CONCURRENCY: usize = 16; +/// Returns the default maximum concurrency for prewarm task based on available parallelism. +fn default_prewarm_max_concurrency() -> usize { + #[cfg(feature = "std")] + { + std::thread::available_parallelism().map_or(16, |n| n.get()) + } + #[cfg(not(feature = "std"))] + { + 16 + } +} /// Default depth for sparse trie pruning. /// @@ -192,7 +201,7 @@ impl Default for TreeConfig { precompile_cache_disabled: false, state_root_fallback: false, always_process_payload_attributes_on_canonical_head: false, - prewarm_max_concurrency: DEFAULT_PREWARM_MAX_CONCURRENCY, + prewarm_max_concurrency: default_prewarm_max_concurrency(), allow_unwind_canonical_header: false, storage_worker_count: default_storage_worker_count(), account_worker_count: default_account_worker_count(),