diff options
Diffstat (limited to 'storageserver')
-rw-r--r-- | storageserver/src/vespa/storageserver/app/distributorprocess.cpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/storageserver/src/vespa/storageserver/app/distributorprocess.cpp b/storageserver/src/vespa/storageserver/app/distributorprocess.cpp index 9b66500cef4..d1403c279d9 100644 --- a/storageserver/src/vespa/storageserver/app/distributorprocess.cpp +++ b/storageserver/src/vespa/storageserver/app/distributorprocess.cpp @@ -5,6 +5,7 @@ #include <vespa/storage/common/bucket_stripe_utils.h> #include <vespa/storage/common/i_storage_chain_builder.h> #include <vespa/storage/common/storagelink.h> +#include <thread> #include <vespa/log/log.h> LOG_SETUP(".process.distributor"); @@ -36,14 +37,19 @@ DistributorProcess::shutdown() namespace { uint32_t -adjusted_num_distributor_stripes(uint32_t cfg_n_stripes) +adjusted_num_distributor_stripes(int32_t cfg_n_stripes) { - uint32_t adjusted_n_stripes = storage::adjusted_num_stripes(cfg_n_stripes); - if (adjusted_n_stripes != cfg_n_stripes) { - LOG(warning, "Configured number of distributor stripes (%u) is not valid. Adjusting to a valid value (%u)", - cfg_n_stripes, adjusted_n_stripes); + if (cfg_n_stripes <= 0) { + uint32_t cpu_cores = std::thread::hardware_concurrency(); + return storage::tune_num_stripes_based_on_cpu_cores(cpu_cores); + } else { + uint32_t adjusted_n_stripes = storage::adjusted_num_stripes(cfg_n_stripes); + if (adjusted_n_stripes != static_cast<uint32_t>(cfg_n_stripes)) { + LOG(warning, "Configured number of distributor stripes (%d) is not valid. Adjusting to a valid value (%u)", + cfg_n_stripes, adjusted_n_stripes); + } + return adjusted_n_stripes; } - return adjusted_n_stripes; } } @@ -56,7 +62,7 @@ DistributorProcess::setupConfig(milliseconds subscribeTimeout) auto distr_cfg = config::ConfigGetter<StorDistributormanagerConfig>::getConfig( _configUri.getConfigId(), _configUri.getContext(), subscribeTimeout); - _num_distributor_stripes = adjusted_num_distributor_stripes(std::max(distr_cfg->numDistributorStripes, 0)); + _num_distributor_stripes = adjusted_num_distributor_stripes(distr_cfg->numDistributorStripes); _distributorConfigHandler = _configSubscriber.subscribe<StorDistributormanagerConfig>(_configUri.getConfigId(), subscribeTimeout); _visitDispatcherConfigHandler = _configSubscriber.subscribe<StorVisitordispatcherConfig>(_configUri.getConfigId(), subscribeTimeout); Process::setupConfig(subscribeTimeout); |