summaryrefslogtreecommitdiffstats
path: root/storage
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@yahoo-inc.com>2017-08-16 11:07:27 +0200
committerGitHub <noreply@github.com>2017-08-16 11:07:27 +0200
commitb7434b7f6877a76671186539f8e96cac4e86de11 (patch)
treea0176a48d42b42efbd3088c74ff8bcf220ecef14 /storage
parentb1b3a34aa4224e90f8bd4fa195055b1d11a8bbe9 (diff)
parent09f36c729e06327e440e4a5635ce350008ca55cd (diff)
Merge pull request #3098 from vespa-engine/balder/optimize-fan-out-for-more-backend-threads
Set defaults more optimized for low latency and modern multi-core ser…
Diffstat (limited to 'storage')
-rw-r--r--storage/src/tests/distributor/visitoroperationtest.cpp32
-rw-r--r--storage/src/vespa/storage/config/distributorconfiguration.cpp2
-rw-r--r--storage/src/vespa/storage/config/distributorconfiguration.h8
-rw-r--r--storage/src/vespa/storage/config/stor-visitordispatcher.def28
-rw-r--r--storage/src/vespa/storage/distributor/externaloperationhandler.cpp19
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/visitoroperation.h7
6 files changed, 18 insertions, 78 deletions
diff --git a/storage/src/tests/distributor/visitoroperationtest.cpp b/storage/src/tests/distributor/visitoroperationtest.cpp
index 0ba587cb1ce..c8f339f6626 100644
--- a/storage/src/tests/distributor/visitoroperationtest.cpp
+++ b/storage/src/tests/distributor/visitoroperationtest.cpp
@@ -115,9 +115,7 @@ protected:
void statistical_metrics_not_updated_on_wrong_distribution();
public:
VisitorOperationTest()
- : defaultConfig(framework::MilliSecTime(0),
- 100,
- 100)
+ : defaultConfig(100, 100)
{}
void setUp() override {
@@ -870,7 +868,7 @@ VisitorOperationTest::testParallelVisitorsToOneStorageNode()
auto op = createOpWithConfig(
createVisitorCommand("multiplebuckets", id, nullId, 31),
- VisitorOperation::Config(framework::MilliSecTime(0), 1, 4));
+ VisitorOperation::Config(1, 4));
op->start(_sender, framework::MilliSecTime(0));
@@ -921,14 +919,8 @@ VisitorOperationTest::testParallelVisitorsToOneStorageNode()
uint32_t minBucketsPerVisitor = 1;
uint32_t maxVisitorsPerNode = 4;
auto op2 = createOpWithConfig(
- createVisitorCommand("multiplebuckets",
- id,
- document::BucketId(0x54000000000f0001),
- 31),
- VisitorOperation::Config(
- framework::MilliSecTime(0),
- minBucketsPerVisitor,
- maxVisitorsPerNode));
+ createVisitorCommand("multiplebuckets", id, document::BucketId(0x54000000000f0001), 31),
+ VisitorOperation::Config(minBucketsPerVisitor, maxVisitorsPerNode));
op2->start(_sender, framework::MilliSecTime(0));
@@ -960,10 +952,7 @@ VisitorOperationTest::testParallelVisitorsResendOnlyFailing()
uint32_t maxVisitorsPerNode = 4;
auto op = createOpWithConfig(
createVisitorCommand("multiplebuckets", id, nullId, 31),
- VisitorOperation::Config(
- framework::MilliSecTime(0),
- minBucketsPerVisitor,
- maxVisitorsPerNode));
+ VisitorOperation::Config(minBucketsPerVisitor, maxVisitorsPerNode));
op->start(_sender, framework::MilliSecTime(0));
@@ -1005,7 +994,7 @@ VisitorOperationTest::testParallelVisitorsToOneStorageNodeOneSuperBucket()
auto op = createOpWithConfig(
createVisitorCommand("multiplebucketsonesuper", id, nullId),
- VisitorOperation::Config(framework::MilliSecTime(0), 5, 4));
+ VisitorOperation::Config(5, 4));
op->start(_sender, framework::MilliSecTime(0));
@@ -1080,13 +1069,8 @@ VisitorOperationTest::testInconsistencyHandling()
_sender.clear();
auto op = createOpWithConfig(
- createVisitorCommand("multiplebucketsonesuper",
- id,
- nullId,
- 8,
- 500,
- true),
- VisitorOperation::Config(framework::MilliSecTime(0), 5, 4));
+ createVisitorCommand("multiplebucketsonesuper", id, nullId, 8, 500, true),
+ VisitorOperation::Config(5, 4));
op->start(_sender, framework::MilliSecTime(0));
diff --git a/storage/src/vespa/storage/config/distributorconfiguration.cpp b/storage/src/vespa/storage/config/distributorconfiguration.cpp
index c7461f17d5f..3007eff3d92 100644
--- a/storage/src/vespa/storage/config/distributorconfiguration.cpp
+++ b/storage/src/vespa/storage/config/distributorconfiguration.cpp
@@ -26,7 +26,6 @@ DistributorConfiguration::DistributorConfiguration(StorageComponent& component)
_maxPendingMaintenanceOps(1000),
_maxVisitorsPerNodePerClientVisitor(4),
_minBucketsPerVisitor(5),
- _minTimeLeftToResend(20),
_maxClusterClockSkew(0),
_doInlineSplit(true),
_enableJoinForSiblingLessBuckets(false),
@@ -172,7 +171,6 @@ DistributorConfiguration::configure(const vespa::config::content::core::StorDist
void
DistributorConfiguration::configure(const vespa::config::content::core::StorVisitordispatcherConfig& config)
{
- _minTimeLeftToResend = config.storagenetworklatency;
_minBucketsPerVisitor = config.minbucketspervisitor;
_maxVisitorsPerNodePerClientVisitor = config.maxvisitorspernodeperclientvisitor;
}
diff --git a/storage/src/vespa/storage/config/distributorconfiguration.h b/storage/src/vespa/storage/config/distributorconfiguration.h
index 59336135cd3..d33f46befac 100644
--- a/storage/src/vespa/storage/config/distributorconfiguration.h
+++ b/storage/src/vespa/storage/config/distributorconfiguration.h
@@ -190,9 +190,6 @@ public:
uint32_t getMinBucketsPerVisitor() const {
return _minBucketsPerVisitor;
}
- int64_t getMinTimeLeftToResend() const {
- return _minTimeLeftToResend;
- }
void setMaxVisitorsPerNodePerClientVisitor(uint32_t n) {
_maxVisitorsPerNodePerClientVisitor = n;
@@ -200,9 +197,7 @@ public:
void setMinBucketsPerVisitor(uint32_t n) {
_minBucketsPerVisitor = n;
}
- void setMinTimeLeftToResend(int64_t minTime) {
- _minTimeLeftToResend = minTime;
- }
+
uint32_t getMaxNodesPerMerge() const {
return _maxNodesPerMerge;
}
@@ -265,7 +260,6 @@ private:
uint32_t _maxVisitorsPerNodePerClientVisitor;
uint32_t _minBucketsPerVisitor;
- int64_t _minTimeLeftToResend;
MaintenancePriorities _maintenancePriorities;
std::chrono::seconds _maxClusterClockSkew;
diff --git a/storage/src/vespa/storage/config/stor-visitordispatcher.def b/storage/src/vespa/storage/config/stor-visitordispatcher.def
index 1288f4579be..2e418c97989 100644
--- a/storage/src/vespa/storage/config/stor-visitordispatcher.def
+++ b/storage/src/vespa/storage/config/stor-visitordispatcher.def
@@ -7,7 +7,7 @@ namespace=vespa.config.content.core
# Having several visitor operations running concurrently increases the
# potential data processing parallelism on the content nodes at the expense
# of using additional resources.
-maxvisitorspernodeperclientvisitor int default=4
+maxvisitorspernodeperclientvisitor int default=16
# Minimum number of buckets that have to be present on a given content node
# before more than one visitor operation may be sent in parallel towards it.
@@ -16,28 +16,4 @@ maxvisitorspernodeperclientvisitor int default=4
# a content node, a total of 4 visitors of 10 buckets each will be sent to the
# node. If min buckets were 20, only 2 visitors of 20 buckets each would be
# sent.
-minbucketspervisitor int default=5
-
-# Deprecated - not in use
-storagenetworklatency int default=2
-
-# Deprecated - not in use
-maxbucketspervisitor int default=100
-
-# Deprecated - not in use
-minpendingperstoragevisitor int default=2
-
-# Deprecated - not in use
-minsuperbucketsactive int default=50
-
-# Deprecated - not in use
-minsubbucketsactive int default=10000
-
-# Deprecated - not in use
-progresstimeout int default=180000
-
-# Deprecated - not in use
-highprioritylimit int default=600000
-
-# Deprecated - not in use
-veryhighprioritylimit int default=60000
+minbucketspervisitor int default=1
diff --git a/storage/src/vespa/storage/distributor/externaloperationhandler.cpp b/storage/src/vespa/storage/distributor/externaloperationhandler.cpp
index 87f93eacf39..e67e889ff7e 100644
--- a/storage/src/vespa/storage/distributor/externaloperationhandler.cpp
+++ b/storage/src/vespa/storage/distributor/externaloperationhandler.cpp
@@ -23,8 +23,7 @@
#include <vespa/log/log.h>
LOG_SETUP(".distributor.manager");
-namespace storage {
-namespace distributor {
+namespace storage::distributor {
ExternalOperationHandler::ExternalOperationHandler(
Distributor& owner,
@@ -276,18 +275,10 @@ IMPL_MSG_COMMAND_H(ExternalOperationHandler, GetBucketList)
IMPL_MSG_COMMAND_H(ExternalOperationHandler, CreateVisitor)
{
const DistributorConfiguration& config(getDistributor().getConfig());
- VisitorOperation::Config visitorConfig(
- framework::MilliSecTime(config.getMinTimeLeftToResend()),
- config.getMinBucketsPerVisitor(),
- config.getMaxVisitorsPerNodePerClientVisitor());
- _op = Operation::SP(new VisitorOperation(
- *this,
- cmd,
- visitorConfig,
- getMetrics().visits[cmd->getLoadType()]));
+ VisitorOperation::Config visitorConfig(config.getMinBucketsPerVisitor(),
+ config.getMaxVisitorsPerNodePerClientVisitor());
+ _op = Operation::SP(new VisitorOperation(*this, cmd, visitorConfig, getMetrics().visits[cmd->getLoadType()]));
return true;
}
-} // distributor
-} // storage
-
+}
diff --git a/storage/src/vespa/storage/distributor/operations/external/visitoroperation.h b/storage/src/vespa/storage/distributor/operations/external/visitoroperation.h
index 10b2b5757ab..006e2916335 100644
--- a/storage/src/vespa/storage/distributor/operations/external/visitoroperation.h
+++ b/storage/src/vespa/storage/distributor/operations/external/visitoroperation.h
@@ -23,14 +23,11 @@ class VisitorOperation : public Operation
{
public:
struct Config {
- Config(const framework::MilliSecTime& storageNetworkLatency_,
- uint32_t minBucketsPerVisitor_,
+ Config(uint32_t minBucketsPerVisitor_,
uint32_t maxVisitorsPerNodePerVisitor_)
- : storageNetworkLatency(storageNetworkLatency_),
- minBucketsPerVisitor(minBucketsPerVisitor_),
+ : minBucketsPerVisitor(minBucketsPerVisitor_),
maxVisitorsPerNodePerVisitor(maxVisitorsPerNodePerVisitor_) {}
- framework::MilliSecTime storageNetworkLatency;
uint32_t minBucketsPerVisitor;
uint32_t maxVisitorsPerNodePerVisitor;
};