upgrade some settings to enable 5g in continuwuity

enable converged 6g at the edge in continuwuity

better stateinfo_cache_capacity default

better roomid_spacehierarchy_cache_capacity

make sender workers default better and clamp value to core count

update sender workers documentation

add more parallelism_scaled and make them public

update 1 document
This commit is contained in:
Jacob Taylor 2025-06-21 08:02:05 -07:00
parent 45ddec699a
commit 6ef00341ea
3 changed files with 43 additions and 50 deletions

View file

@ -1590,11 +1590,9 @@
#stream_amplification = 1024 #stream_amplification = 1024
# Number of sender task workers; determines sender parallelism. Default is # Number of sender task workers; determines sender parallelism. Default is
# '0' which means the value is determined internally, likely matching the # number of CPU cores. Override by setting a different value.
# number of tokio worker-threads or number of cores, etc. Override by
# setting a non-zero value.
# #
#sender_workers = 0 #sender_workers = 4
# Enables listener sockets; can be set to false to disable listening. This # Enables listener sockets; can be set to false to disable listening. This
# option is intended for developer/diagnostic purposes only. # option is intended for developer/diagnostic purposes only.

View file

@ -1823,12 +1823,10 @@ pub struct Config {
pub stream_amplification: usize, pub stream_amplification: usize,
/// Number of sender task workers; determines sender parallelism. Default is /// Number of sender task workers; determines sender parallelism. Default is
/// '0' which means the value is determined internally, likely matching the /// '4'. Override by setting a different value. Values clamped 1 to core count.
/// number of tokio worker-threads or number of cores, etc. Override by
/// setting a non-zero value.
/// ///
/// default: 0 /// default: 4
#[serde(default)] #[serde(default = "default_sender_workers")]
pub sender_workers: usize, pub sender_workers: usize,
/// Enables listener sockets; can be set to false to disable listening. This /// Enables listener sockets; can be set to false to disable listening. This
@ -2059,45 +2057,47 @@ fn default_database_backups_to_keep() -> i16 { 1 }
fn default_db_write_buffer_capacity_mb() -> f64 { 48.0 + parallelism_scaled_f64(4.0) } fn default_db_write_buffer_capacity_mb() -> f64 { 48.0 + parallelism_scaled_f64(4.0) }
fn default_db_cache_capacity_mb() -> f64 { 128.0 + parallelism_scaled_f64(64.0) } fn default_db_cache_capacity_mb() -> f64 { 512.0 + parallelism_scaled_f64(512.0) }
fn default_pdu_cache_capacity() -> u32 { parallelism_scaled_u32(10_000).saturating_add(100_000) } fn default_pdu_cache_capacity() -> u32 { parallelism_scaled_u32(50_000).saturating_add(500_000) }
fn default_cache_capacity_modifier() -> f64 { 1.0 } fn default_cache_capacity_modifier() -> f64 { 1.0 }
fn default_auth_chain_cache_capacity() -> u32 { fn default_auth_chain_cache_capacity() -> u32 {
parallelism_scaled_u32(10_000).saturating_add(100_000) parallelism_scaled_u32(50_000).saturating_add(500_000)
} }
fn default_shorteventid_cache_capacity() -> u32 { fn default_shorteventid_cache_capacity() -> u32 {
parallelism_scaled_u32(50_000).saturating_add(100_000)
}
fn default_eventidshort_cache_capacity() -> u32 {
parallelism_scaled_u32(25_000).saturating_add(100_000)
}
fn default_eventid_pdu_cache_capacity() -> u32 {
parallelism_scaled_u32(25_000).saturating_add(100_000)
}
fn default_shortstatekey_cache_capacity() -> u32 {
parallelism_scaled_u32(10_000).saturating_add(100_000)
}
fn default_statekeyshort_cache_capacity() -> u32 {
parallelism_scaled_u32(10_000).saturating_add(100_000)
}
fn default_servernameevent_data_cache_capacity() -> u32 {
parallelism_scaled_u32(100_000).saturating_add(500_000) parallelism_scaled_u32(100_000).saturating_add(500_000)
} }
fn default_stateinfo_cache_capacity() -> u32 { parallelism_scaled_u32(100) } fn default_eventidshort_cache_capacity() -> u32 {
parallelism_scaled_u32(100_000).saturating_add(500_000)
}
fn default_roomid_spacehierarchy_cache_capacity() -> u32 { parallelism_scaled_u32(1000) } fn default_eventid_pdu_cache_capacity() -> u32 {
parallelism_scaled_u32(50_000).saturating_add(500_000)
}
fn default_dns_cache_entries() -> u32 { 32768 } fn default_shortstatekey_cache_capacity() -> u32 {
parallelism_scaled_u32(50_000).saturating_add(500_000)
}
fn default_statekeyshort_cache_capacity() -> u32 {
parallelism_scaled_u32(50_000).saturating_add(500_000)
}
fn default_servernameevent_data_cache_capacity() -> u32 {
parallelism_scaled_u32(200_000).saturating_add(500_000)
}
fn default_stateinfo_cache_capacity() -> u32 {
parallelism_scaled_u32(500).clamp(100, 12000) }
fn default_roomid_spacehierarchy_cache_capacity() -> u32 {
parallelism_scaled_u32(500).clamp(100, 12000) }
fn default_dns_cache_entries() -> u32 { 327680 }
fn default_dns_min_ttl() -> u64 { 60 * 180 } fn default_dns_min_ttl() -> u64 { 60 * 180 }
@ -2286,14 +2286,13 @@ fn default_admin_log_capture() -> String {
fn default_admin_room_tag() -> String { "m.server_notice".to_owned() } fn default_admin_room_tag() -> String { "m.server_notice".to_owned() }
#[allow(clippy::as_conversions, clippy::cast_precision_loss)] #[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 { pub fn parallelism_scaled_u32(val: u32) -> u32 { val.saturating_mul(sys::available_parallelism() as u32) }
let val = val.try_into().expect("failed to cast u32 to usize");
parallelism_scaled(val).try_into().unwrap_or(u32::MAX)
}
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 } fn default_trusted_server_batch_size() -> usize { 256 }
@ -2313,6 +2312,8 @@ fn default_stream_width_scale() -> f32 { 1.0 }
fn default_stream_amplification() -> usize { 1024 } fn default_stream_amplification() -> usize { 1024 }
fn default_sender_workers() -> usize { 4 }
fn default_client_receive_timeout() -> u64 { 75 } fn default_client_receive_timeout() -> u64 { 75 }
fn default_client_request_timeout() -> u64 { 180 } fn default_client_request_timeout() -> u64 { 180 }

View file

@ -401,16 +401,10 @@ impl Service {
fn num_senders(args: &crate::Args<'_>) -> usize { fn num_senders(args: &crate::Args<'_>) -> usize {
const MIN_SENDERS: usize = 1; const MIN_SENDERS: usize = 1;
// Limit the number of senders to the number of workers threads or number of // Limit the maximum number of senders to the number of cores.
// cores, conservatively. let max_senders = available_parallelism();
let max_senders = args
.server
.metrics
.num_workers()
.min(available_parallelism());
// If the user doesn't override the default 0, this is intended to then default // default is 4 senders. clamp between 1 and core count.
// to 1 for now as multiple senders is experimental.
args.server args.server
.config .config
.sender_workers .sender_workers