summaryrefslogtreecommitdiffstats
path: root/vbench
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-12-09 14:18:25 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2021-12-09 14:18:25 +0000
commitd30df2cdc5580affa56eb6ca5ab2ab4145aa112c (patch)
tree7249dd679fd9ef28505e37495dfb2bfc3c191b09 /vbench
parent800c53c580717f7f1d8bcc02d31235ac6d3673d2 (diff)
Add init_fun to vespalib::Thread too to figure out what the thread is used for.
Diffstat (limited to 'vbench')
-rw-r--r--vbench/src/apps/vbench/vbench.cpp7
-rw-r--r--vbench/src/tests/dispatcher/dispatcher_test.cpp7
-rw-r--r--vbench/src/tests/handler_thread/handler_thread_test.cpp4
-rw-r--r--vbench/src/vbench/core/handler_thread.h2
-rw-r--r--vbench/src/vbench/core/handler_thread.hpp4
-rw-r--r--vbench/src/vbench/vbench/request_scheduler.cpp8
-rw-r--r--vbench/src/vbench/vbench/vbench.cpp4
-rw-r--r--vbench/src/vbench/vbench/worker.cpp4
8 files changed, 26 insertions, 14 deletions
diff --git a/vbench/src/apps/vbench/vbench.cpp b/vbench/src/apps/vbench/vbench.cpp
index 00499519dcc..d37ed7688de 100644
--- a/vbench/src/apps/vbench/vbench.cpp
+++ b/vbench/src/apps/vbench/vbench.cpp
@@ -8,6 +8,8 @@
using namespace vbench;
+VESPA_THREAD_STACK_TAG(vbench_executor);
+
typedef vespalib::SignalHandler SIG;
struct NotifyDone : public vespalib::Runnable {
@@ -31,8 +33,7 @@ int run(const std::string &cfg_name) {
return 1;
}
vespalib::Slime cfg;
- vespalib::Memory mapped_cfg(cfg_file.get().data,
- cfg_file.get().size);
+ vespalib::Memory mapped_cfg(cfg_file.get().data, cfg_file.get().size);
if (!vespalib::slime::JsonFormat::decode(mapped_cfg, cfg)) {
fprintf(stderr, "unable to parse config file: %s\n",
cfg.toString().c_str());
@@ -43,7 +44,7 @@ int run(const std::string &cfg_name) {
VBench vbench(cfg);
NotifyDone notify(done);
vespalib::RunnablePair runBoth(vbench, notify);
- vespalib::Thread thread(runBoth);
+ vespalib::Thread thread(runBoth, vbench_executor);
thread.start();
while (!SIG::INT.check() && !SIG::TERM.check() && !done.await(1s)) {}
if (!done.await(vespalib::duration::zero())) {
diff --git a/vbench/src/tests/dispatcher/dispatcher_test.cpp b/vbench/src/tests/dispatcher/dispatcher_test.cpp
index b2c002e3e50..99b57669120 100644
--- a/vbench/src/tests/dispatcher/dispatcher_test.cpp
+++ b/vbench/src/tests/dispatcher/dispatcher_test.cpp
@@ -17,6 +17,9 @@ struct Fetcher : public vespalib::Runnable {
void run() override { handler.handle(provider.provide()); }
};
+VESPA_THREAD_STACK_TAG(fetcher1_executor);
+VESPA_THREAD_STACK_TAG(fetcher2_executor);
+
TEST("dispatcher") {
MyHandler dropped;
MyHandler handler1;
@@ -24,8 +27,8 @@ TEST("dispatcher") {
Dispatcher<int> dispatcher(dropped);
Fetcher fetcher1(dispatcher, handler1);
Fetcher fetcher2(dispatcher, handler2);
- vespalib::Thread thread1(fetcher1);
- vespalib::Thread thread2(fetcher2);
+ vespalib::Thread thread1(fetcher1, fetcher1_executor);
+ vespalib::Thread thread2(fetcher2, fetcher2_executor);
thread1.start();
EXPECT_TRUE(dispatcher.waitForThreads(1, 512));
thread2.start();
diff --git a/vbench/src/tests/handler_thread/handler_thread_test.cpp b/vbench/src/tests/handler_thread/handler_thread_test.cpp
index fd7d630f705..6b5dbedd0ac 100644
--- a/vbench/src/tests/handler_thread/handler_thread_test.cpp
+++ b/vbench/src/tests/handler_thread/handler_thread_test.cpp
@@ -15,9 +15,11 @@ struct MyHandler : Handler<int> {
MyHandler::~MyHandler() = default;
+VESPA_THREAD_STACK_TAG(test_executor);
+
TEST("handler thread") {
MyHandler handler;
- HandlerThread<int> th(handler);
+ HandlerThread<int> th(handler, test_executor);
th.handle(std::unique_ptr<int>(new int(1)));
th.handle(std::unique_ptr<int>(new int(2)));
th.handle(std::unique_ptr<int>(new int(3)));
diff --git a/vbench/src/vbench/core/handler_thread.h b/vbench/src/vbench/core/handler_thread.h
index b4aaf08eee8..402ecbeb0dc 100644
--- a/vbench/src/vbench/core/handler_thread.h
+++ b/vbench/src/vbench/core/handler_thread.h
@@ -33,7 +33,7 @@ private:
void run() override;
public:
- HandlerThread(Handler<T> &next);
+ HandlerThread(Handler<T> &next, init_fun_t init_fun);
~HandlerThread();
void handle(std::unique_ptr<T> obj) override;
void join() override;
diff --git a/vbench/src/vbench/core/handler_thread.hpp b/vbench/src/vbench/core/handler_thread.hpp
index 3d1dc423411..56cc0a7771d 100644
--- a/vbench/src/vbench/core/handler_thread.hpp
+++ b/vbench/src/vbench/core/handler_thread.hpp
@@ -23,12 +23,12 @@ HandlerThread<T>::run()
}
template <typename T>
-HandlerThread<T>::HandlerThread(Handler<T> &next)
+HandlerThread<T>::HandlerThread(Handler<T> &next, init_fun_t init_fun)
: _lock(),
_cond(),
_queue(),
_next(next),
- _thread(*this),
+ _thread(*this, init_fun),
_done(false)
{
_thread.start();
diff --git a/vbench/src/vbench/vbench/request_scheduler.cpp b/vbench/src/vbench/vbench/request_scheduler.cpp
index 80aec6c308e..320ecc91fc6 100644
--- a/vbench/src/vbench/vbench/request_scheduler.cpp
+++ b/vbench/src/vbench/vbench/request_scheduler.cpp
@@ -1,11 +1,13 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "request_scheduler.h"
-
#include <vbench/core/timer.h>
namespace vbench {
+VESPA_THREAD_STACK_TAG(vbench_request_scheduler_executor);
+VESPA_THREAD_STACK_TAG(vbench_handler_executor);
+
void
RequestScheduler::run()
{
@@ -24,11 +26,11 @@ RequestScheduler::run()
RequestScheduler::RequestScheduler(CryptoEngine::SP crypto, Handler<Request> &next, size_t numWorkers)
: _timer(),
- _proxy(next),
+ _proxy(next, vbench_handler_executor),
_queue(10.0, 0.020),
_droppedTagger(_proxy),
_dispatcher(_droppedTagger),
- _thread(*this),
+ _thread(*this, vbench_request_scheduler_executor),
_connectionPool(std::move(crypto), _timer),
_workers()
{
diff --git a/vbench/src/vbench/vbench/vbench.cpp b/vbench/src/vbench/vbench/vbench.cpp
index d636f7a1cd7..9a5adad262e 100644
--- a/vbench/src/vbench/vbench/vbench.cpp
+++ b/vbench/src/vbench/vbench/vbench.cpp
@@ -40,6 +40,8 @@ CryptoEngine::SP setup_crypto(const vespalib::slime::Inspector &tls) {
} // namespace vbench::<unnamed>
+VESPA_THREAD_STACK_TAG(vbench_inputchain_generator);
+
VBench::VBench(const vespalib::Slime &cfg)
: _factory(),
_analyzers(),
@@ -76,7 +78,7 @@ VBench::VBench(const vespalib::Slime &cfg)
}
inputChain->generator = _factory.createGenerator(generator, *inputChain->taggers.back());
if (inputChain->generator.get() != 0) {
- inputChain->thread.reset(new vespalib::Thread(*inputChain->generator));
+ inputChain->thread.reset(new vespalib::Thread(*inputChain->generator, vbench_inputchain_generator));
_inputs.push_back(std::move(inputChain));
}
}
diff --git a/vbench/src/vbench/vbench/worker.cpp b/vbench/src/vbench/vbench/worker.cpp
index a64956f710b..08f788ea3e9 100644
--- a/vbench/src/vbench/vbench/worker.cpp
+++ b/vbench/src/vbench/vbench/worker.cpp
@@ -5,6 +5,8 @@
namespace vbench {
+VESPA_THREAD_STACK_TAG(vbench_worker_executor);
+
void
Worker::run()
{
@@ -22,7 +24,7 @@ Worker::run()
Worker::Worker(Provider<Request> &provider, Handler<Request> &next,
HttpConnectionPool &pool, Timer &timer)
- : _thread(*this),
+ : _thread(*this, vbench_worker_executor),
_provider(provider),
_next(next),
_pool(pool),