From 7452a329109abbfe8be02e22c4649ec897936bcd Mon Sep 17 00:00:00 2001 From: Roman Romanchenko Date: Thu, 29 Dec 2022 10:13:00 +0100 Subject: [PATCH] MT#55831 sems-* constant 10% CPU usage in idle Virtual environment vagrant/vmware sems-* constant 10% CPU usage in idle Virtual environment vagrant/vmware DBRegagent loop sleep replaced with waitForEvent() call (real ticket number: TT#52455) Change-Id: Id2e280a18b33ae3e11daef72711af325ad3b8364 --- apps/db_reg_agent/DBRegAgent.cpp | 3 +-- core/AmEventQueue.cpp | 5 +++++ core/AmEventQueue.h | 1 + 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/apps/db_reg_agent/DBRegAgent.cpp b/apps/db_reg_agent/DBRegAgent.cpp index 168f89aa..e6a09cd3 100644 --- a/apps/db_reg_agent/DBRegAgent.cpp +++ b/apps/db_reg_agent/DBRegAgent.cpp @@ -897,9 +897,8 @@ void DBRegAgent::run() { DBG("running DBRegAgent thread...\n"); shutdown_finished = false; while (running) { + waitForEventTimed(500); // 500 milliseconds processEvents(); - - usleep(1000); // 1ms } DBG("DBRegAgent done, removing all registrations from Event Dispatcher...\n"); diff --git a/core/AmEventQueue.cpp b/core/AmEventQueue.cpp index 4fff79cf..0cbf5fb7 100644 --- a/core/AmEventQueue.cpp +++ b/core/AmEventQueue.cpp @@ -100,6 +100,11 @@ void AmEventQueue::waitForEvent() ev_pending.wait_for(); } +void AmEventQueue::waitForEventTimed(unsigned long msec) +{ + ev_pending.wait_for_to(msec); +} + void AmEventQueue::processSingleEvent() { m_queue.lock(); diff --git a/core/AmEventQueue.h b/core/AmEventQueue.h index 4ac4a92d..f1a3bcff 100644 --- a/core/AmEventQueue.h +++ b/core/AmEventQueue.h @@ -80,6 +80,7 @@ public: void postEvent(AmEvent*); void processEvents(); void waitForEvent(); + void waitForEventTimed(unsigned long msec); void processSingleEvent(); bool eventPending();