From 074c379487c492521611d84a62ec4cc073703033 Mon Sep 17 00:00:00 2001 From: kruall Date: Wed, 7 Feb 2024 12:17:28 +0300 Subject: [PATCH] Add force io pool threads (#1523) * add force io pool threads * add force_io_pool_threads to cfg --- ydb/core/driver_lib/run/auto_config_initializer.cpp | 6 +++++- ydb/core/protos/config.proto | 1 + ydb/tools/cfg/base.py | 1 + ydb/tools/cfg/dynamic.py | 1 + ydb/tools/cfg/validation.py | 1 + 5 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ydb/core/driver_lib/run/auto_config_initializer.cpp b/ydb/core/driver_lib/run/auto_config_initializer.cpp index d74c37609602..e1aa18daf479 100644 --- a/ydb/core/driver_lib/run/auto_config_initializer.cpp +++ b/ydb/core/driver_lib/run/auto_config_initializer.cpp @@ -279,7 +279,11 @@ namespace NKikimr::NAutoConfigInitializer { auto *executor = executors[poolIdx]; if (names[poolIdx] == TASPools::IOPoolName) { executor->SetType(NKikimrConfig::TActorSystemConfig::TExecutor::IO); - executor->SetThreads(GetIOThreadCount(cpuCount)); + ui32 ioThreadCount = GetIOThreadCount(cpuCount); + if (config->HasForceIOPoolThreads()) { + ioThreadCount = config->GetForceIOPoolThreads(); + } + executor->SetThreads(ioThreadCount); executor->SetName(names[poolIdx]); continue; } diff --git a/ydb/core/protos/config.proto b/ydb/core/protos/config.proto index ddbdc8df394a..06751791a5a9 100644 --- a/ydb/core/protos/config.proto +++ b/ydb/core/protos/config.proto @@ -111,6 +111,7 @@ message TActorSystemConfig { // Used only with UseAutoConfig; optional uint32 CpuCount = 13; optional ENodeType NodeType = 14 [default = COMPUTE]; + optional uint32 ForceIOPoolThreads = 17; optional bool MonitorStuckActors = 15; optional EActorSystemProfile ActorSystemProfile = 16; diff --git a/ydb/tools/cfg/base.py b/ydb/tools/cfg/base.py index c3e1188f8c97..6f23a4f0217c 100644 --- a/ydb/tools/cfg/base.py +++ b/ydb/tools/cfg/base.py @@ -292,6 +292,7 @@ def __init__(self, template, walle_provider, validator=None, database=None): self.use_auto_config = self.__cluster_description.get("use_auto_config", False) self.static_cpu_count = self.__cluster_description.get("static_cpu_count", 20) self.dynamic_cpu_count = self.__cluster_description.get("dynamic_cpu_count", 8) + self.force_io_pool_threads = self.__cluster_description.get("force_io_pool_threads", None) self.blob_storage_config = self.__cluster_description.get("blob_storage_config") self.pdisk_key_config = self.__cluster_description.get("pdisk_key_config", {}) if not self.need_txt_files and not self.use_new_style_kikimr_cfg: diff --git a/ydb/tools/cfg/dynamic.py b/ydb/tools/cfg/dynamic.py index 557a9cf70ed9..aa74b5cbb27f 100644 --- a/ydb/tools/cfg/dynamic.py +++ b/ydb/tools/cfg/dynamic.py @@ -274,6 +274,7 @@ def make_configure_request(self, domain): if self._cluster_details.use_auto_config: app_config.ActorSystemConfig.CpuCount = self._cluster_details.dynamic_cpu_count app_config.ActorSystemConfig.NodeType = app_config.ActorSystemConfig.ENodeType.Value('COMPUTE') + app_config.ActorSystemConfig.ForceIOPoolThreads = self._cluster_details.force_io_pool_threads action.AddConfigItem.ConfigItem.Config.CopyFrom(app_config) action.AddConfigItem.EnableAutoSplit = True diff --git a/ydb/tools/cfg/validation.py b/ydb/tools/cfg/validation.py index 6fa3a13b1917..4a5a425b8fd3 100644 --- a/ydb/tools/cfg/validation.py +++ b/ydb/tools/cfg/validation.py @@ -122,6 +122,7 @@ "type": "string", "enum": NodeType.all_node_type_names(), }, + "force_io_pool_threads": {"type": "integer"}, }, "additionalProperties": False, }