diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-04-06 11:44:30 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-04-06 11:44:30 +0000 |
commit | 46627aa30c76bbbdb1433cbb6554dd25795d2008 (patch) | |
tree | 4ed94bc0d578b18406225d1ddd3ed6dbfdd4608b /searchcore | |
parent | 3c4cddd0b08666e497996e7f5b499e5a86fc68eb (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.cpp | 9 | ||||
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/server/shared_threading_service.h | 6 |
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; } |