From c013d06e7bc63e1833c9abaf1259520212433ac9 Mon Sep 17 00:00:00 2001 From: Jacob Taylor Date: Fri, 13 Jun 2025 22:25:18 -0700 Subject: [PATCH 1/4] add more parallelism_scaled and make them public --- src/core/config/mod.rs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/core/config/mod.rs b/src/core/config/mod.rs index afb4167d..4ff87a74 100644 --- a/src/core/config/mod.rs +++ b/src/core/config/mod.rs @@ -2286,14 +2286,13 @@ fn default_admin_log_capture() -> String { fn default_admin_room_tag() -> String { "m.server_notice".to_owned() } #[allow(clippy::as_conversions, clippy::cast_precision_loss)] -fn parallelism_scaled_f64(val: f64) -> f64 { val * (sys::available_parallelism() as f64) } +pub fn parallelism_scaled_f64(val: f64) -> f64 { val * (sys::available_parallelism() as f64) } -fn parallelism_scaled_u32(val: u32) -> u32 { - let val = val.try_into().expect("failed to cast u32 to usize"); - parallelism_scaled(val).try_into().unwrap_or(u32::MAX) -} +pub fn parallelism_scaled_u32(val: u32) -> u32 { val.saturating_mul(sys::available_parallelism() as u32) } -fn parallelism_scaled(val: usize) -> usize { val.saturating_mul(sys::available_parallelism()) } +pub fn parallelism_scaled_i32(val: i32) -> i32 { val.saturating_mul(sys::available_parallelism() as i32) } + +pub fn parallelism_scaled(val: usize) -> usize { val.saturating_mul(sys::available_parallelism()) } fn default_trusted_server_batch_size() -> usize { 256 } From 88d68d148f081466c03562b05d59abb45827bc1c Mon Sep 17 00:00:00 2001 From: Jacob Taylor Date: Fri, 13 Jun 2025 22:26:07 -0700 Subject: [PATCH 2/4] change rocksdb stats level to 3 --- src/core/config/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/config/mod.rs b/src/core/config/mod.rs index 4ff87a74..5afb3f1f 100644 --- a/src/core/config/mod.rs +++ b/src/core/config/mod.rs @@ -1155,7 +1155,7 @@ pub struct Config { /// 3 to 5 = Statistics with possible performance impact. /// 6 = All statistics. /// - /// default: 1 + /// default: 3 #[serde(default = "default_rocksdb_stats_level")] pub rocksdb_stats_level: u8, @@ -2231,7 +2231,7 @@ fn default_rocksdb_compression_level() -> i32 { 32767 } #[allow(clippy::doc_markdown)] fn default_rocksdb_bottommost_compression_level() -> i32 { 32767 } -fn default_rocksdb_stats_level() -> u8 { 1 } +fn default_rocksdb_stats_level() -> u8 { 3 } // I know, it's a great name #[must_use] From 8b5cdb147137b88b57a593824950eb8c046c4ba0 Mon Sep 17 00:00:00 2001 From: Jacob Taylor Date: Fri, 13 Jun 2025 22:33:58 -0700 Subject: [PATCH 3/4] scale rocksdb background jobs and subcompactions --- src/database/engine/db_opts.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/database/engine/db_opts.rs b/src/database/engine/db_opts.rs index 18cec742..4a717b4d 100644 --- a/src/database/engine/db_opts.rs +++ b/src/database/engine/db_opts.rs @@ -2,7 +2,7 @@ use std::{cmp, convert::TryFrom}; use conduwuit::{Config, Result, utils}; use rocksdb::{Cache, DBRecoveryMode, Env, LogLevel, Options, statistics::StatsLevel}; - +use conduwuit::config::{parallelism_scaled_i32, parallelism_scaled_u32}; use super::{cf_opts::cache_size_f64, logger::handle as handle_log}; /// Create database-wide options suitable for opening the database. This also @@ -23,8 +23,8 @@ pub(crate) fn db_options(config: &Config, env: &Env, row_cache: &Cache) -> Resul set_logging_defaults(&mut opts, config); // Processing - opts.set_max_background_jobs(num_threads::(config)?); - opts.set_max_subcompactions(num_threads::(config)?); + opts.set_max_background_jobs(parallelism_scaled_i32(1)); + opts.set_max_subcompactions(parallelism_scaled_u32(1)); opts.set_avoid_unnecessary_blocking_io(true); opts.set_max_file_opening_threads(0); @@ -128,7 +128,7 @@ fn set_logging_defaults(opts: &mut Options, config: &Config) { } fn num_threads>(config: &Config) -> Result { - const MIN_PARALLELISM: usize = 2; + const MIN_PARALLELISM: usize = 4; let requested = if config.rocksdb_parallelism_threads != 0 { config.rocksdb_parallelism_threads From f5655ea0d5646205c0b2961c2b367a7bba9dc7f0 Mon Sep 17 00:00:00 2001 From: Jacob Taylor Date: Fri, 13 Jun 2025 22:35:15 -0700 Subject: [PATCH 4/4] change rocksdb default error level to info from error --- src/core/config/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/config/mod.rs b/src/core/config/mod.rs index 5afb3f1f..14e8fa29 100644 --- a/src/core/config/mod.rs +++ b/src/core/config/mod.rs @@ -2199,7 +2199,7 @@ fn default_typing_client_timeout_max_s() -> u64 { 45 } fn default_rocksdb_recovery_mode() -> u8 { 1 } -fn default_rocksdb_log_level() -> String { "error".to_owned() } +fn default_rocksdb_log_level() -> String { "info".to_owned() } fn default_rocksdb_log_time_to_roll() -> usize { 0 }