summaryrefslogtreecommitdiffstats
path: root/storage
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-07-06 13:31:01 +0200
committerGitHub <noreply@github.com>2020-07-06 13:31:01 +0200
commit50212269c2a455ab603531da113800b82196c988 (patch)
treefcc75449469979812bdfa749ca012738912065ad /storage
parent9d986b0573f8f21ccf00c2296de92c7e8cf99be7 (diff)
parentcc69b14a2ca08aca560cd4599e7ef8b57cb2013c (diff)
Merge pull request #13804 from vespa-engine/balder/let-sequencer-type-be-configurable
Let sequencer type be configurable
Diffstat (limited to 'storage')
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp b/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp
index b2a06dc5633..65ee78f7642 100644
--- a/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp
+++ b/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp
@@ -95,6 +95,19 @@ uint32_t computeNumResponseThreads(int configured) {
return (configured < 0) ? std::max(1u, std::thread::hardware_concurrency()/4) : configured;
}
+vespalib::Executor::OptimizeFor
+selectSequencer(vespa::config::content::StorFilestorConfig::ResponseSequencerType sequencerType) {
+ switch (sequencerType) {
+ case vespa::config::content::StorFilestorConfig::ResponseSequencerType::THROUGHPUT:
+ return vespalib::Executor::OptimizeFor::THROUGHPUT;
+ case vespa::config::content::StorFilestorConfig::ResponseSequencerType::LATENCY:
+ return vespalib::Executor::OptimizeFor::LATENCY;
+ case vespa::config::content::StorFilestorConfig::ResponseSequencerType::ADAPTIVE:
+ default:
+ return vespalib::Executor::OptimizeFor::ADAPTIVE;
+ }
+}
+
}
/**
* If live configuration, assuming storageserver makes sure no messages are
@@ -119,7 +132,7 @@ FileStorManager::configure(std::unique_ptr<vespa::config::content::StorFilestorC
_filestorHandler = std::make_unique<FileStorHandler>(numThreads, numStripes, *this, *_metrics, _partitions, _compReg);
uint32_t numResposeThreads = computeNumResponseThreads(_config->numResponseThreads);
if (numResposeThreads > 0) {
- _sequencedExecutor = vespalib::SequencedTaskExecutor::create(numResposeThreads, 10000, vespalib::Executor::OptimizeFor::ADAPTIVE);
+ _sequencedExecutor = vespalib::SequencedTaskExecutor::create(numResposeThreads, 10000, selectSequencer(_config->responseSequencerType));
}
for (uint32_t i=0; i<_component.getDiskCount(); ++i) {
if (_partitions[i].isUp()) {