From: Ronen Friedman Date: Sun, 3 May 2026 07:10:34 +0000 (+0000) Subject: crimson/osd: add crimson_memory config option X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=4ff4fb50b6a734870f0558ad27cb1a9dadee3c4f;p=ceph.git crimson/osd: add crimson_memory config option Add a crimson_memory configuration option that maps to seastar's --memory flag, allowing control over the per-OSD seastar memory allocation. Default is 0, meaning seastar uses its default behavior. This reduces core dump sizes in test environments (from ~117GB to ~32GB with crimson_memory=32G) by limiting the pre-allocated seastar memory pool. Signed-off-by: Ronen Friedman --- diff --git a/src/common/options/crimson.yaml.in b/src/common/options/crimson.yaml.in index 88ccaac0760a..c543b96b5de6 100644 --- a/src/common/options/crimson.yaml.in +++ b/src/common/options/crimson.yaml.in @@ -27,6 +27,16 @@ options: - startup min: 0 max: 32 +- name: crimson_memory + type: size + level: advanced + default: 0 + desc: Total memory to use for the seastar allocator per OSD. + long_desc: Total memory to use for the seastar allocator per OSD. + Maps to seastar's --memory flag. 0 means use seastar's default + (all available memory minus a reserve). + flags: + - startup # Reactor options: diff --git a/src/crimson/osd/main_config_bootstrap_helpers.cc b/src/crimson/osd/main_config_bootstrap_helpers.cc index 158e33d26130..7087b3b79931 100644 --- a/src/crimson/osd/main_config_bootstrap_helpers.cc +++ b/src/crimson/osd/main_config_bootstrap_helpers.cc @@ -96,7 +96,8 @@ const std::vector seastar_options = { {"--io-latency-goal-ms", "crimson_reactor_io_latency_goal_ms", Option::TYPE_FLOAT}, {"--idle-poll-time-us", "crimson_reactor_idle_poll_time_us", Option::TYPE_UINT}, {"--poll-mode", "crimson_poll_mode", Option::TYPE_BOOL}, - {"--reactor-backend", "crimson_reactor_backend", Option::TYPE_STR} + {"--reactor-backend", "crimson_reactor_backend", Option::TYPE_STR}, + {"--memory", "crimson_memory", Option::TYPE_SIZE} }; std::optional get_option_value(const SeastarOption& option) { @@ -113,6 +114,12 @@ std::optional get_option_value(const SeastarOption& option) { } break; } + case Option::TYPE_SIZE: { + if (auto value = crimson::common::get_conf(option.config_key)) { + return std::to_string(value); + } + break; + } case Option::TYPE_BOOL: { if (crimson::common::get_conf(option.config_key)) { return "true";