From 1f947f982cee97f885cbdd72a2f9648be3161766 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Sun, 31 Jul 2022 02:46:05 -0700 Subject: [PATCH] ircd::gpt: Cache pipe::code instance in shared_ptr for task reuse. --- include/ircd/gpt/pipe/pipe.h | 1 + include/ircd/gpt/task.h | 2 +- ircd/gpt.cc | 3 ++- ircd/gpt_pipe.cc | 4 ++++ 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/include/ircd/gpt/pipe/pipe.h b/include/ircd/gpt/pipe/pipe.h index 9462dd4b4..2487b5b81 100644 --- a/include/ircd/gpt/pipe/pipe.h +++ b/include/ircd/gpt/pipe/pipe.h @@ -21,6 +21,7 @@ namespace ircd::gpt::pipe struct prof; extern conf::item queue_cycles; + extern std::shared_ptr default_code; }; #include "code.h" diff --git a/include/ircd/gpt/task.h b/include/ircd/gpt/task.h index 6926d26ff..096c02a6b 100644 --- a/include/ircd/gpt/task.h +++ b/include/ircd/gpt/task.h @@ -34,7 +34,7 @@ struct ircd::gpt::task gpt::ctrl *ctrl {nullptr}; /// Pipe code - std::unique_ptr code; + std::shared_ptr code; /// Pipe model std::unique_ptr model; diff --git a/ircd/gpt.cc b/ircd/gpt.cc index 22512b15c..cb1e6207b 100644 --- a/ircd/gpt.cc +++ b/ircd/gpt.cc @@ -251,7 +251,8 @@ try } ,code { - std::make_unique() + pipe::default_code?: + (pipe::default_code = std::make_shared()) } ,model { diff --git a/ircd/gpt_pipe.cc b/ircd/gpt_pipe.cc index efb841a8c..ffa179645 100644 --- a/ircd/gpt_pipe.cc +++ b/ircd/gpt_pipe.cc @@ -16,6 +16,9 @@ namespace ircd::gpt::pipe extern const ircd::run::changed quit_handler; } +decltype(ircd::gpt::pipe::default_code) +ircd::gpt::pipe::default_code; + decltype(ircd::gpt::pipe::queue_cycles) ircd::gpt::pipe::queue_cycles { @@ -51,6 +54,7 @@ noexcept cl::sync(); ctx::yield(); + pipe::default_code.reset(); } //