aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahooinc.com>2022-04-20 12:38:36 +0000
committerGeir Storli <geirst@yahooinc.com>2022-04-20 12:38:36 +0000
commit1748ef49d5106980c7d1befcbf7b1e32d23d8faa (patch)
treec7d22d5c13ad71ea16c0cff35b3754511e0cd885
parent25272bca7b7811387289f1c76aff244befbbc182 (diff)
Make dynamic throttling and shared field writer default in config def files.
-rw-r--r--configdefinitions/src/vespa/stor-filestor.def4
-rw-r--r--searchcore/src/vespa/searchcore/config/proton.def8
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/mock_shared_threading_service.cpp4
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/mock_shared_threading_service.h3
-rw-r--r--storage/src/vespa/storage/config/stor-distributormanager.def2
5 files changed, 13 insertions, 8 deletions
diff --git a/configdefinitions/src/vespa/stor-filestor.def b/configdefinitions/src/vespa/stor-filestor.def
index 531805d3039..ef4094a02bf 100644
--- a/configdefinitions/src/vespa/stor-filestor.def
+++ b/configdefinitions/src/vespa/stor-filestor.def
@@ -80,7 +80,7 @@ resource_usage_reporter_noise_level double default=0.001
## - DYNAMIC uses DynamicThrottlePolicy under the hood and will block if the window
## is full (if a blocking throttler API call is invoked).
##
-async_operation_throttler.type enum { UNLIMITED, DYNAMIC } default=UNLIMITED
+async_operation_throttler.type enum { UNLIMITED, DYNAMIC } default=DYNAMIC
## Internal throttler tuning parameters that only apply when type == DYNAMIC:
async_operation_throttler.window_size_increment int default=20
async_operation_throttler.window_size_decrement_factor double default=1.2
@@ -104,7 +104,7 @@ async_operation_throttler.throttle_individual_merge_feed_ops bool default=true
## is full (if a blocking throttler API call is invoked).
##
## TODO deprecate in favor of the async_operation_throttler struct instead.
-async_operation_throttler_type enum { UNLIMITED, DYNAMIC } default=UNLIMITED
+async_operation_throttler_type enum { UNLIMITED, DYNAMIC } default=DYNAMIC
## Specifies the extent the throttling window is increased by when the async throttle
## policy has decided that more concurrent operations are desirable. Also affects the
diff --git a/searchcore/src/vespa/searchcore/config/proton.def b/searchcore/src/vespa/searchcore/config/proton.def
index 808535924f1..51536299d51 100644
--- a/searchcore/src/vespa/searchcore/config/proton.def
+++ b/searchcore/src/vespa/searchcore/config/proton.def
@@ -138,7 +138,7 @@ indexing.optimize enum {LATENCY, THROUGHPUT, ADAPTIVE} default=THROUGHPUT restar
## Maximum number of pending operations for each of the internal
## indexing threads. Only used when visibility delay is zero.
-indexing.tasklimit int default=1000
+indexing.tasklimit int default=-1000
## Deprecated and ignored, will soon go away
indexing.semiunboundtasklimit int default = 1000
@@ -514,14 +514,14 @@ feeding.concurrency double default = 0.2 restart
## DOCUMENT_DB: Use a shared executor for index field inverter, index field writer, and attribute field writer among all document dbs.
##
## TODO: Remove this when a shared executor is the default.
-feeding.shared_field_writer_executor enum {NONE, INDEX, INDEX_AND_ATTRIBUTE, DOCUMENT_DB} default = NONE restart
+feeding.shared_field_writer_executor enum {NONE, INDEX, INDEX_AND_ATTRIBUTE, DOCUMENT_DB} default = DOCUMENT_DB restart
## Maximum number of pending tasks for the master thread in each document db.
##
## This limit is only considered when executing tasks for handling external feed operations.
## In that case the calling thread (persistence thread) is blocked until the master thread has capacity to handle more tasks.
## When this limit is set to 0 it is ignored.
-feeding.master_task_limit int default = 1000
+feeding.master_task_limit int default = 0
## Adjustment to resource limit when determining if maintenance jobs can run.
##
@@ -550,7 +550,7 @@ forward_issues bool default = true
## Chooses the throttling policy used to control the window size
## of the SharedOperationThrottler component used by the transaction log replay feed state.
-replay_throttling_policy.type enum { UNLIMITED, DYNAMIC } default=UNLIMITED
+replay_throttling_policy.type enum { UNLIMITED, DYNAMIC } default=DYNAMIC
## Only used if replay_throttling_policy.type == DYNAMIC:
replay_throttling_policy.min_window_size int default=100
replay_throttling_policy.max_window_size int default=10000
diff --git a/searchcore/src/vespa/searchcore/proton/test/mock_shared_threading_service.cpp b/searchcore/src/vespa/searchcore/proton/test/mock_shared_threading_service.cpp
index e5d42b34370..e25c1459300 100644
--- a/searchcore/src/vespa/searchcore/proton/test/mock_shared_threading_service.cpp
+++ b/searchcore/src/vespa/searchcore/proton/test/mock_shared_threading_service.cpp
@@ -1,6 +1,9 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mock_shared_threading_service.h"
+#include <vespa/vespalib/util/sequencedtaskexecutor.h>
+
+VESPA_THREAD_STACK_TAG(mock_field_writer_executor)
namespace proton {
@@ -9,6 +12,7 @@ MockSharedThreadingService::MockSharedThreadingService(ThreadExecutor& warmup_in
size_t num_bucket_executors)
: _warmup(warmup_in),
_shared(shared_in),
+ _field_writer(vespalib::SequencedTaskExecutor::create(mock_field_writer_executor, 1)),
_invokeService(10ms),
_transport(),
_bucket_executor(num_bucket_executors),
diff --git a/searchcore/src/vespa/searchcore/proton/test/mock_shared_threading_service.h b/searchcore/src/vespa/searchcore/proton/test/mock_shared_threading_service.h
index 167d15d70eb..00ffdc92020 100644
--- a/searchcore/src/vespa/searchcore/proton/test/mock_shared_threading_service.h
+++ b/searchcore/src/vespa/searchcore/proton/test/mock_shared_threading_service.h
@@ -14,6 +14,7 @@ private:
using ThreadExecutor = vespalib::ThreadExecutor;
ThreadExecutor & _warmup;
ThreadExecutor & _shared;
+ std::unique_ptr<vespalib::ISequencedTaskExecutor> _field_writer;
vespalib::InvokeServiceImpl _invokeService;
Transport _transport;
storage::spi::dummy::DummyBucketExecutor _bucket_executor;
@@ -25,7 +26,7 @@ public:
~MockSharedThreadingService() override;
ThreadExecutor& warmup() override { return _warmup; }
ThreadExecutor& shared() override { return _shared; }
- vespalib::ISequencedTaskExecutor* field_writer() override { return nullptr; }
+ vespalib::ISequencedTaskExecutor* field_writer() override { return _field_writer.get(); }
vespalib::InvokeService & invokeService() override { return _invokeService; }
FNET_Transport & transport() override { return _transport.transport(); }
storage::spi::BucketExecutor& bucket_executor() override { return _bucket_executor; }
diff --git a/storage/src/vespa/storage/config/stor-distributormanager.def b/storage/src/vespa/storage/config/stor-distributormanager.def
index 1d2d4babf74..0a858ba37c3 100644
--- a/storage/src/vespa/storage/config/stor-distributormanager.def
+++ b/storage/src/vespa/storage/config/stor-distributormanager.def
@@ -298,4 +298,4 @@ use_unordered_merge_chaining bool default=true
## cluster state bundle indicates that global merges are pending in the cluster, i.e.
## one or more nodes is in maintenance mode in the default bucket space but marked up in
## the global bucket space.
-inhibit_default_merges_when_global_merges_pending bool default=false
+inhibit_default_merges_when_global_merges_pending bool default=true