summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-04-06 11:44:30 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2022-04-06 11:44:30 +0000
commit46627aa30c76bbbdb1433cbb6554dd25795d2008 (patch)
tree4ed94bc0d578b18406225d1ddd3ed6dbfdd4608b /searchcore
parent3c4cddd0b08666e497996e7f5b499e5a86fc68eb (diff)
Use a Q with limited capacity for warmup executor to avoid unlimited buildup with swamped disk.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/shared_threading_service.cpp9
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/shared_threading_service.h6
2 files changed, 9 insertions, 6 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/server/shared_threading_service.cpp b/searchcore/src/vespa/searchcore/proton/server/shared_threading_service.cpp
index c6f8ca923e0..79827ce81c0 100644
--- a/searchcore/src/vespa/searchcore/proton/server/shared_threading_service.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/shared_threading_service.cpp
@@ -2,6 +2,7 @@
#include "shared_threading_service.h"
#include <vespa/vespalib/util/blockingthreadstackexecutor.h>
+#include <vespa/vespalib/util/threadstackexecutor.h>
#include <vespa/vespalib/util/cpu_usage.h>
#include <vespa/vespalib/util/sequencedtaskexecutor.h>
#include <vespa/vespalib/util/size_literals.h>
@@ -21,9 +22,11 @@ SharedThreadingService::SharedThreadingService(const SharedThreadingServiceConfi
FNET_Transport& transport,
storage::spi::BucketExecutor& bucket_executor)
: _transport(transport),
- _warmup(cfg.warmup_threads(), 128_Ki, CpuUsage::wrap(proton_warmup_executor, CpuUsage::Category::COMPACT)),
+ _warmup(std::make_unique<vespalib::ThreadStackExecutor>(cfg.warmup_threads(), 128_Ki,
+ CpuUsage::wrap(proton_warmup_executor, CpuUsage::Category::COMPACT),
+ cfg.shared_task_limit())),
_shared(std::make_shared<vespalib::BlockingThreadStackExecutor>(cfg.shared_threads(), 128_Ki,
- cfg.shared_task_limit(), proton_shared_executor)),
+ cfg.shared_task_limit(), proton_shared_executor)),
_field_writer(),
_invokeService(std::max(vespalib::adjustTimeoutByDetectedHz(1ms),
cfg.field_writer_config().reactionTime())),
@@ -51,7 +54,7 @@ SharedThreadingService::~SharedThreadingService() = default;
void
SharedThreadingService::sync_all_executors() {
- _warmup.sync();
+ _warmup->sync();
_shared->sync();
if (_field_writer) {
_field_writer->sync_all();
diff --git a/searchcore/src/vespa/searchcore/proton/server/shared_threading_service.h b/searchcore/src/vespa/searchcore/proton/server/shared_threading_service.h
index 04e30b0f9b3..ead16441da0 100644
--- a/searchcore/src/vespa/searchcore/proton/server/shared_threading_service.h
+++ b/searchcore/src/vespa/searchcore/proton/server/shared_threading_service.h
@@ -3,7 +3,7 @@
#include "i_shared_threading_service.h"
#include "shared_threading_service_config.h"
-#include <vespa/vespalib/util/threadstackexecutor.h>
+#include <vespa/vespalib/util/threadexecutor.h>
#include <vespa/vespalib/util/syncable.h>
#include <vespa/vespalib/util/clock.h>
#include <vespa/vespalib/util/invokeserviceimpl.h>
@@ -18,7 +18,7 @@ class SharedThreadingService : public ISharedThreadingService {
private:
using Registration = std::unique_ptr<vespalib::IDestructorCallback>;
FNET_Transport & _transport;
- vespalib::ThreadStackExecutor _warmup;
+ std::unique_ptr<vespalib::SyncableThreadExecutor> _warmup;
std::shared_ptr<vespalib::SyncableThreadExecutor> _shared;
std::unique_ptr<vespalib::ISequencedTaskExecutor> _field_writer;
vespalib::InvokeServiceImpl _invokeService;
@@ -34,7 +34,7 @@ public:
std::shared_ptr<vespalib::Executor> shared_raw() { return _shared; }
void sync_all_executors();
- vespalib::ThreadExecutor& warmup() override { return _warmup; }
+ vespalib::ThreadExecutor& warmup() override { return *_warmup; }
vespalib::ThreadExecutor& shared() override { return *_shared; }
vespalib::ISequencedTaskExecutor* field_writer() override { return _field_writer.get(); }
vespalib::InvokeService & invokeService() override { return _invokeService; }