summaryrefslogtreecommitdiffstats
path: root/searchlib/src
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-02-16 10:09:02 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2022-02-16 10:09:02 +0000
commit4081f22fbef9e16468b6d574cce8715e6d88af93 (patch)
tree8e1f1c861af7155b374d454e275ca2134ac39ad7 /searchlib/src
parent6f99bd502132cd378124a40060ac1d74d54f5e92 (diff)
If threads are configured explicit to a positive number, obey it.
If not scale it with num_cores/8 capped i the range [1, 4]. Let default configured value be 0 (unset) instead of 4.
Diffstat (limited to 'searchlib/src')
-rw-r--r--searchlib/src/vespa/searchlib/config/translogserver.def2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/translogserverapp.cpp11
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/translogserverapp.h2
3 files changed, 11 insertions, 4 deletions
diff --git a/searchlib/src/vespa/searchlib/config/translogserver.def b/searchlib/src/vespa/searchlib/config/translogserver.def
index 6a8a1201d36..c5e271a047b 100644
--- a/searchlib/src/vespa/searchlib/config/translogserver.def
+++ b/searchlib/src/vespa/searchlib/config/translogserver.def
@@ -18,7 +18,7 @@ basedir string default="tmp" restart
usefsync bool default=true
##Number of threads available for visiting/subscription.
-maxthreads int default=4 restart
+maxthreads int default=0 restart
##Default crc method used
crcmethod enum {ccitt_crc32, xxh64} default=xxh64
diff --git a/searchlib/src/vespa/searchlib/transactionlog/translogserverapp.cpp b/searchlib/src/vespa/searchlib/transactionlog/translogserverapp.cpp
index a9b0f96c4db..927047cecaa 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/translogserverapp.cpp
+++ b/searchlib/src/vespa/searchlib/transactionlog/translogserverapp.cpp
@@ -79,17 +79,24 @@ logReconfig(const searchlib::TranslogserverConfig & cfg, const DomainConfig & dc
dcfg.getPartSizeLimit(), dcfg.getChunkSizeLimit());
}
+size_t
+derive_num_threads(uint32_t configured_cores, uint32_t actual_cores) {
+ return (configured_cores > 0)
+ ? configured_cores
+ : std::max(1u, std::min(4u, actual_cores/8));
+}
+
}
void
-TransLogServerApp::start()
+TransLogServerApp::start(uint32_t num_cores)
{
std::lock_guard<std::mutex> guard(_lock);
auto c = _tlsConfig.get();
DomainConfig domainConfig = getDomainConfig(*c);
logReconfig(*c, domainConfig);
_tls = std::make_shared<TransLogServer>(c->servername, c->listenport, c->basedir, _fileHeaderContext,
- domainConfig, c->maxthreads);
+ domainConfig, derive_num_threads(c->maxthreads, num_cores));
}
TransLogServerApp::~TransLogServerApp()
diff --git a/searchlib/src/vespa/searchlib/transactionlog/translogserverapp.h b/searchlib/src/vespa/searchlib/transactionlog/translogserverapp.h
index c5854958b9e..ccd207ed6d1 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/translogserverapp.h
+++ b/searchlib/src/vespa/searchlib/transactionlog/translogserverapp.h
@@ -32,7 +32,7 @@ public:
TransLogServer::SP getTransLogServer() const;
- void start();
+ void start(uint32_t num_cores);
};
}