From e92678b98942f7d959ac47cedd0a3d656b09c33e Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EC=B5=9C=EC=B0=BD=EA=B7=9C/Tizen=20Platform=20Lab=28SR=29/?= =?utf8?q?Engineer/=EC=82=BC=EC=84=B1=EC=A0=84=EC=9E=90?= Date: Mon, 15 Mar 2021 16:08:29 +0900 Subject: [PATCH] Change to set thread number (#153) * Change to set thread number This patch is set thread number provided at hardware. Signed-off-by: Changgyu Choi * Add to trim memory Signed-off-by: Changgyu Choi * Change trim interval Signed-off-by: Changgyu Choi --- src/server/runner.cc | 7 ++++++- src/server/worker_thread.cc | 8 ++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/server/runner.cc b/src/server/runner.cc index 604d1f2..6516997 100644 --- a/src/server/runner.cc +++ b/src/server/runner.cc @@ -33,7 +33,12 @@ namespace pkgmgr_server { static const std::string SOCK_PATH = "/run/pkgmgr-info-server"; -Runner::Runner(int thread_num) : sid_(-1), thread_num_(thread_num) { +Runner::Runner(int thread_num) : sid_(-1) { + if (thread_num > std::thread::hardware_concurrency()) + thread_num_ = std::thread::hardware_concurrency(); + else + thread_num_ = thread_num; + server_ = std::make_unique(SOCK_PATH); thread_pool_ = std::make_unique(thread_num_); sid_ = g_unix_fd_add(server_->GetFd(), G_IO_IN, OnReceiveRequest, this); diff --git a/src/server/worker_thread.cc b/src/server/worker_thread.cc index 54c9401..d7f40e1 100644 --- a/src/server/worker_thread.cc +++ b/src/server/worker_thread.cc @@ -15,6 +15,8 @@ */ #include "worker_thread.hh" +#include +#include #include "pkgmgrinfo_debug.h" #include "get_appinfo_request_handler.hh" @@ -136,6 +138,12 @@ void WorkerThread::Run() { } std::shared_ptr WorkerThread::PopQueue() { + static int cnt = 0; + if (++cnt % 50 == 0) { /* trim memory */ + sqlite3_release_memory(-1); + malloc_trim(0); + } + auto req = queue_.front(); queue_.pop(); return req; -- 2.7.4