diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-02-16 10:09:02 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-02-16 10:09:02 +0000 |
commit | 4081f22fbef9e16468b6d574cce8715e6d88af93 (patch) | |
tree | 8e1f1c861af7155b374d454e275ca2134ac39ad7 /searchlib/src | |
parent | 6f99bd502132cd378124a40060ac1d74d54f5e92 (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')
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); }; } |