diff --git a/0001-plugin_mgr-logger-apppend-to-logfile-rather-than-tru.patch b/0001-plugin_mgr-logger-apppend-to-logfile-rather-than-tru.patch deleted file mode 100644 index 9e1408e..0000000 --- a/0001-plugin_mgr-logger-apppend-to-logfile-rather-than-tru.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 54c5b50eb19467d32d83a85478f468dff52b69e6 Mon Sep 17 00:00:00 2001 -From: Zhao Mengmeng -Date: Thu, 27 Jun 2024 13:45:00 +0800 -Subject: [PATCH 1/4] plugin_mgr: logger: apppend to logfile rather than - truncate - -In log4cplus, the default openmode for Class FileAppender is -std::ios_base::trunc, which cause the log file be cleared after -each `systemctl restart oeaware.service`. Fix this by setting -openmode to std::ios_base::app. ---- - src/plugin_mgr/logger.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/plugin_mgr/logger.cpp b/src/plugin_mgr/logger.cpp -index af39583..378075c 100644 ---- a/src/plugin_mgr/logger.cpp -+++ b/src/plugin_mgr/logger.cpp -@@ -27,7 +27,7 @@ Logger::Logger() { - } - - void Logger::init(std::shared_ptr config) { -- log4cplus::SharedAppenderPtr appender(new log4cplus::FileAppender(config->get_log_path() + "/server.log")); -+ log4cplus::SharedAppenderPtr appender(new log4cplus::FileAppender(config->get_log_path() + "/server.log", std::ios_base::app)); - appender->setName("file"); - log4cplus::tstring pattern = LOG4CPLUS_TEXT("%D{%m/%d/%y %H:%M:%S} [%t] %-5p %c - %m" - #ifdef OEAWARE_DEBUG --- -2.33.0 - diff --git a/0002-fix-threads-are-still-bound-after-systemctl-stop-oea.patch b/0002-fix-threads-are-still-bound-after-systemctl-stop-oea.patch deleted file mode 100644 index d77ca3e..0000000 --- a/0002-fix-threads-are-still-bound-after-systemctl-stop-oea.patch +++ /dev/null @@ -1,26 +0,0 @@ -From ed8c8d44f05f7fd2160252cbe1b2d10cbd6000cf Mon Sep 17 00:00:00 2001 -From: zhoukaiqi -Date: Sat, 6 Jul 2024 14:34:24 +0800 -Subject: [PATCH 3/4] fix threads are still bound after systemctl stop oeaware - ---- - src/plugin_mgr/main.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/plugin_mgr/main.cpp b/src/plugin_mgr/main.cpp -index 5cfb020..9add8ac 100644 ---- a/src/plugin_mgr/main.cpp -+++ b/src/plugin_mgr/main.cpp -@@ -39,7 +39,8 @@ void signal_handler(int signum) { - } - - int main(int argc, char **argv) { -- signal(SIGINT, signal_handler); -+ signal(SIGINT, signal_handler); // ctrl + c -+ signal(SIGTERM, signal_handler); // systemctl stop - std::shared_ptr config = std::make_shared(); - if (argc < 2) { - ERROR("System need a argument!"); --- -2.33.0 - diff --git a/0003-fix-coredump-when-process-exits.patch b/0003-fix-coredump-when-process-exits.patch deleted file mode 100644 index acba35e..0000000 --- a/0003-fix-coredump-when-process-exits.patch +++ /dev/null @@ -1,175 +0,0 @@ -From d6d5fe30da78917f3d32e670b79a8603ace76af4 Mon Sep 17 00:00:00 2001 -From: fly_1997 -Date: Mon, 8 Jul 2024 16:53:18 +0800 -Subject: [PATCH 4/4] fix coredump when process exits - ---- - src/plugin_mgr/instance_run_handler.cpp | 18 +++++++++++++++--- - src/plugin_mgr/instance_run_handler.h | 3 ++- - src/plugin_mgr/main.cpp | 18 +++++------------- - src/plugin_mgr/plugin_manager.cpp | 18 ++++++++++++++++++ - src/plugin_mgr/plugin_manager.h | 7 +++++++ - 5 files changed, 47 insertions(+), 17 deletions(-) - -diff --git a/src/plugin_mgr/instance_run_handler.cpp b/src/plugin_mgr/instance_run_handler.cpp -index 7f03f8f..70e3c33 100644 ---- a/src/plugin_mgr/instance_run_handler.cpp -+++ b/src/plugin_mgr/instance_run_handler.cpp -@@ -107,8 +107,9 @@ void InstanceRunHandler::disable_instance(const std::string &name, bool force) { - } - } - --void InstanceRunHandler::handle_instance() { -+bool InstanceRunHandler::handle_message() { - std::shared_ptr msg; -+ bool shutdown = false; - while(this->recv_queue_try_pop(msg)){ - std::shared_ptr instance = msg->get_instance(); - switch (msg->get_type()){ -@@ -120,9 +121,17 @@ void InstanceRunHandler::handle_instance() { - disable_instance(instance->get_name(), true); - break; - } -+ case RunType::SHUTDOWN: { -+ shutdown = true; -+ break; -+ } - } - msg->notify_one(); -+ if (shutdown) { -+ return false; -+ } - } -+ return true; - } - - void InstanceRunHandler::change_instance_state(const std::string &name, std::vector &deps, -@@ -183,9 +192,12 @@ void InstanceRunHandler::schedule() { - } - - void start(InstanceRunHandler *instance_run_handler) { -- INFO("[PluginManager] instance schedule started!"); -+ INFO("[InstanceRunHandler] instance schedule started!"); - while(true) { -- instance_run_handler->handle_instance(); -+ if (!instance_run_handler->handle_message()) { -+ INFO("[InstanceRunHandler] instance schedule shutdown!"); -+ break; -+ } - instance_run_handler->schedule(); - usleep(instance_run_handler->get_cycle() * 1000); - instance_run_handler->add_time(instance_run_handler->get_cycle()); -diff --git a/src/plugin_mgr/instance_run_handler.h b/src/plugin_mgr/instance_run_handler.h -index 64ddfa5..90cc60e 100644 ---- a/src/plugin_mgr/instance_run_handler.h -+++ b/src/plugin_mgr/instance_run_handler.h -@@ -22,6 +22,7 @@ enum class RunType { - /* Message from PluginManager. */ - ENABLED, - DISABLED, -+ SHUTDOWN, - }; - - /* Message for communication between plugin manager and instance scheduling */ -@@ -70,7 +71,7 @@ public: - explicit InstanceRunHandler(MemoryStore &memory_store) : memory_store(memory_store), time(0), cycle(DEFAULT_CYCLE_SIZE) { } - void run(); - void schedule(); -- void handle_instance(); -+ bool handle_message(); - void set_cycle(int cycle) { - this->cycle = cycle; - } -diff --git a/src/plugin_mgr/main.cpp b/src/plugin_mgr/main.cpp -index 9add8ac..626aea9 100644 ---- a/src/plugin_mgr/main.cpp -+++ b/src/plugin_mgr/main.cpp -@@ -22,20 +22,12 @@ void print_help() { - } - - void signal_handler(int signum) { -- auto &plugin_manager = PluginManager::get_instance(); -- auto memory_store = plugin_manager.get_memory_store(); -- auto all_plugins = memory_store.get_all_plugins(); -- for (auto plugin : all_plugins) { -- for (size_t i = 0; i < plugin->get_instance_len(); ++i) { -- auto instance = plugin->get_instance(i); -- if (!instance->get_enabled()) { -- continue; -- } -- instance->get_interface()->disable(); -- INFO("[PluginManager] " << instance->get_name() << " instance disabled."); -- } -+ if (signum != SIGINT && signum != SIGTERM) { -+ ERROR("Unknown signal: " << signum); -+ exit(signum); - } -- exit(signum); -+ auto &plugin_manager = PluginManager::get_instance(); -+ plugin_manager.send_msg(Message(Opt::SHUTDOWN, MessageType::INTERNAL)); - } - - int main(int argc, char **argv) { -diff --git a/src/plugin_mgr/plugin_manager.cpp b/src/plugin_mgr/plugin_manager.cpp -index c3ff8bf..b979859 100644 ---- a/src/plugin_mgr/plugin_manager.cpp -+++ b/src/plugin_mgr/plugin_manager.cpp -@@ -336,6 +336,23 @@ void PluginManager::pre_load() { - pre_enable(); - } - -+void PluginManager::exit() { -+ auto all_plugins = memory_store.get_all_plugins(); -+ auto msg = std::make_shared(RunType::SHUTDOWN, nullptr); -+ send_msg_to_instance_run_handler(msg); -+ msg->wait(); -+ for (auto plugin : all_plugins) { -+ for (size_t i = 0; i < plugin->get_instance_len(); ++i) { -+ auto instance = plugin->get_instance(i); -+ if (!instance->get_enabled()) { -+ continue; -+ } -+ instance->get_interface()->disable(); -+ INFO("[PluginManager] " << instance->get_name() << " instance disabled."); -+ } -+ } -+} -+ - const void* PluginManager::get_data_buffer(const std::string &name) { - std::shared_ptr instance = memory_store.get_instance(name); - return instance->get_interface()->get_ring_buf(); -@@ -553,5 +570,6 @@ int PluginManager::run() { - if (msg.get_type() == MessageType::EXTERNAL) - res_msg->push(res); - } -+ exit(); - return 0; - } -diff --git a/src/plugin_mgr/plugin_manager.h b/src/plugin_mgr/plugin_manager.h -index b7c04fe..c3f6f69 100644 ---- a/src/plugin_mgr/plugin_manager.h -+++ b/src/plugin_mgr/plugin_manager.h -@@ -32,6 +32,10 @@ public: - const MemoryStore& get_memory_store() { - return this->memory_store; - } -+ void exit(); -+ void send_msg(const Message &msg) { -+ handler_msg->push(msg); -+ } - const void* get_data_buffer(const std::string &name); - private: - PluginManager() { } -@@ -57,6 +61,9 @@ private: - void update_instance_state(); - bool end_with(const std::string &s, const std::string &ending); - std::string get_plugin_in_dir(const std::string &path); -+ void send_msg_to_instance_run_handler(std::shared_ptr msg) { -+ instance_run_handler->recv_queue_push(msg); -+ } - private: - std::unique_ptr instance_run_handler; - std::shared_ptr config; --- -2.33.0 - diff --git a/oeAware-manager-v1.0.2.tar.gz b/oeAware-manager-v1.0.2.tar.gz deleted file mode 100644 index 43ff4a4..0000000 Binary files a/oeAware-manager-v1.0.2.tar.gz and /dev/null differ diff --git a/oeAware-manager-v2.0.0.tar.gz b/oeAware-manager-v2.0.0.tar.gz new file mode 100644 index 0000000..b091366 Binary files /dev/null and b/oeAware-manager-v2.0.0.tar.gz differ diff --git a/oeAware-manager.spec b/oeAware-manager.spec index 8724fe9..7407522 100644 --- a/oeAware-manager.spec +++ b/oeAware-manager.spec @@ -1,13 +1,10 @@ Name: oeAware-manager -Version: v1.0.2 -Release: 3 -Summary: OeAware server and client +Version: v2.0.0 +Release: 1 +Summary: OeAware is a framework for implementing low-load collection, sensing, and tuning on openEuler. License: MulanPSL2 URL: https://gitee.com/openeuler/%{name} Source0: %{name}-%{version}.tar.gz -Patch1: 0001-plugin_mgr-logger-apppend-to-logfile-rather-than-tru.patch -Patch2: 0002-fix-threads-are-still-bound-after-systemctl-stop-oea.patch -Patch3: 0003-fix-coredump-when-process-exits.patch BuildRequires: cmake make gcc-c++ BuildRequires: boost-devel @@ -15,35 +12,63 @@ BuildRequires: curl-devel BuildRequires: log4cplus-devel BuildRequires: yaml-cpp-devel BuildRequires: gtest-devel gmock-devel +BuildRequires: libboundscheck +%ifarch aarch64 +BuildRequires: libkperf libkperf-devel +%endif +BuildRequires: libnl3 libnl3-devel +BuildRequires: numactl-devel +BuildRequires: kernel-devel +Requires: graphviz yaml-cpp curl log4cplus boost systemd libboundscheck +Requires: libnl3 -Requires: oeAware-collector >= v1.0.2 -Requires: oeAware-scenario >= v1.0.2 -Requires: oeAware-tune >= v1.0.0 -Requires: graphviz yaml-cpp curl log4cplus boost systemd +Obsoletes: oeAware-collector < v2.0.0 +Obsoletes: oeAware-scenario < v2.0.0 +Obsoletes: oeAware-tune < v2.0.0 %description -%{name} provides server and client to manager plugins. +%{name} provides server and client components to manage plugins, which include collectors, scenarios, and tunes. + +%package devel +Summary: Development files for plugin of oeaware +Requires: %{name} = %{version}-%{release} + +%description devel +Development files for plugin of oeaware %prep %autosetup -n %{name}-%{version} -p1 %build -mkdir build -cd build -cmake .. -make %{?_smp_mflags} +sh build.sh -k %install -install -D -m 0750 build/src/plugin_mgr/oeaware %{buildroot}%{_bindir}/oeaware -install -D -m 0750 build/src/client/oeawarectl %{buildroot}%{_bindir}/oeawarectl -install -D -m 0640 config.yaml %{buildroot}%{_sysconfdir}/oeAware/config.yaml -install -D -p -m 0644 oeaware.service %{buildroot}%{_unitdir}/oeaware.service +#install server +install -D -m 0750 build/output/bin/oeaware %{buildroot}%{_bindir}/oeaware +install -D -m 0750 build/output/bin/oeawarectl %{buildroot}%{_bindir}/oeawarectl +install -D -m 0640 config.yaml %{buildroot}%{_sysconfdir}/oeAware/config.yaml +install -D -p -m 0644 oeaware.service %{buildroot}%{_unitdir}/oeaware.service + +#install plugin +mkdir -p %{buildroot}%{_libdir}/oeAware-plugin/ +mkdir -p %{buildroot}%{_includedir}/oeaware/interface +install -dm 0755 %{buildroot}%{_prefix}/lib/smc + +install -b -m740 ./build/output/plugin/lib/*.so %{buildroot}%{_libdir}/oeAware-plugin/ +install -b -m740 ./build/output/include/*.h %{buildroot}%{_includedir}/oeaware +install -b -m740 ./build/output/include/interface/*.h %{buildroot}%{_includedir}/oeaware/interface +install -b -m740 ./build/output/sdk/liboeaware-sdk.so %{buildroot}%{_libdir} +install -D -m 0640 ./build/output/plugin/lib/thread_scenario.conf %{buildroot}%{_libdir}/oeAware-plugin/ +install -D -m 0640 ./build/output/plugin/lib/ub_tune.conf %{buildroot}%{_libdir}/oeAware-plugin/ +install -D -m 0400 ./build/output/plugin/ko/smc_acc.ko %{buildroot}%{_prefix}/lib/smc %preun %systemd_preun oeaware.service %post systemctl start oeaware.service +chcon -t modules_object_t %{_prefix}/lib/smc/smc_acc.ko >/dev/null 2>&1 +exit 0 %posttrans . /etc/os-release || : @@ -56,8 +81,26 @@ fi %attr(0750, root, root) %{_bindir}/oeawarectl %attr(0640, root, root) %{_sysconfdir}/oeAware/config.yaml %attr(0644, root, root) %{_unitdir}/oeaware.service +%attr(0640, root, root) %{_libdir}/oeAware-plugin/ub_tune.conf +%attr(0640, root, root) %{_libdir}/oeAware-plugin/thread_scenario.conf +%attr(0400, root, root) %{_prefix}/lib/smc/smc_acc.ko +%attr(0440, root, root) %{_libdir}/oeAware-plugin/*.so +%attr(0440, root, root) %{_libdir}/liboeaware-sdk.so + +%files devel +%attr(0440, root, root) %{_includedir}/oeaware/*.h +%attr(0440, root, root) %{_includedir}/oeaware/interface/*.h %changelog +* Wed Nov 20 2024 LHesperus -v2.0.0-1 +- merge the plugin repository into this repository +- add oeaware sdk library +- new interface of plugin : replace the ringbuf data with subscribe +- add new plugin : system info, command collector, xcall + +* Thu Sep 5 2024 fly_1997 -v1.0.2-4 +- update numafast version + * Mon Jul 8 2024 fly_1997 -v1.0.2-3 - add automatic startup based on the version - fix coredump when process exits