aboutsummaryrefslogtreecommitdiffstats
path: root/storageserver
diff options
context:
space:
mode:
Diffstat (limited to 'storageserver')
-rw-r--r--storageserver/src/vespa/storageserver/app/distributorprocess.cpp20
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);