From bcfed7088863746e096c0d17f5c6b19b6d57ffb8 Mon Sep 17 00:00:00 2001 From: Kerollmops Date: Mon, 9 Dec 2024 10:08:02 +0100 Subject: [PATCH 1/2] Revert "Merge #5125" This reverts commit 9a9383643f9a6b5ee9ab2ace3e9d63b920d94a53, reversing changes made to cac355bfa7e72ca3c5c02cacb4f2fcd3f2dd336e. --- crates/meilisearch/src/option.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/crates/meilisearch/src/option.rs b/crates/meilisearch/src/option.rs index 7c59f0607..7e87a5a2c 100644 --- a/crates/meilisearch/src/option.rs +++ b/crates/meilisearch/src/option.rs @@ -654,9 +654,8 @@ impl Opt { #[derive(Debug, Default, Clone, Parser, Deserialize)] pub struct IndexerOpts { - /// Specifies the maximum resident memory that Meilisearch can use for indexing. - /// By default, Meilisearch limits the RAM usage to 5% of the total available memory. - /// Note that the underlying store utilizes memory-mapping and makes use of the rest. + /// Sets the maximum amount of RAM Meilisearch can use when indexing. By default, Meilisearch + /// uses no more than two thirds of available memory. #[clap(long, env = MEILI_MAX_INDEXING_MEMORY, default_value_t)] #[serde(default)] pub max_indexing_memory: MaxMemory, @@ -715,7 +714,7 @@ impl TryFrom<&IndexerOpts> for IndexerConfig { } } -/// A type used to detect the max resident memory available and use 5% of it. +/// A type used to detect the max memory available and use 2/3 of it. #[derive(Debug, Clone, Copy, Deserialize, Serialize)] pub struct MaxMemory(Option); @@ -729,7 +728,7 @@ impl FromStr for MaxMemory { impl Default for MaxMemory { fn default() -> MaxMemory { - MaxMemory(total_memory_bytes().map(|bytes| bytes * 5 / 100).map(Byte::from_u64)) + MaxMemory(total_memory_bytes().map(|bytes| bytes * 2 / 3).map(Byte::from_u64)) } } From f5dd8dfc3e57cfa36fc3ccbefe73de0706a156fd Mon Sep 17 00:00:00 2001 From: Kerollmops Date: Mon, 9 Dec 2024 10:26:30 +0100 Subject: [PATCH 2/2] Rollback max memory usage changes --- crates/milli/src/update/new/indexer/mod.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/crates/milli/src/update/new/indexer/mod.rs b/crates/milli/src/update/new/indexer/mod.rs index 9ee7577a5..59088bd47 100644 --- a/crates/milli/src/update/new/indexer/mod.rs +++ b/crates/milli/src/update/new/indexer/mod.rs @@ -80,6 +80,15 @@ where let mut bbbuffers = Vec::new(); let finished_extraction = AtomicBool::new(false); + // We reduce the actual memory used to 5%. The reason we do this here and not in Meilisearch + // is because we still use the old indexer for the settings and it is highly impacted by the + // max memory. So we keep the changes here and will remove these changes once we use the new + // indexer to also index settings. Related to #5125 and #5141. + let grenad_parameters = GrenadParameters { + max_memory: grenad_parameters.max_memory.map(|mm| mm * 5 / 100), + ..grenad_parameters + }; + // We compute and remove the allocated BBQueues buffers capacity from the indexing memory. let minimum_capacity = 50 * 1024 * 1024 * pool.current_num_threads(); // 50 MiB let (grenad_parameters, total_bbbuffer_capacity) = grenad_parameters.max_memory.map_or(