diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-07-06 13:31:01 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-06 13:31:01 +0200 |
commit | 50212269c2a455ab603531da113800b82196c988 (patch) | |
tree | fcc75449469979812bdfa749ca012738912065ad /storage | |
parent | 9d986b0573f8f21ccf00c2296de92c7e8cf99be7 (diff) | |
parent | cc69b14a2ca08aca560cd4599e7ef8b57cb2013c (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.cpp | 15 |
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()) { |