mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
Measure CPU utilization in ServiceQueue
This commit is contained in:
@@ -57,6 +57,8 @@ ServiceQueueBase::~ServiceQueueBase()
|
||||
|
||||
std::size_t ServiceQueueBase::poll ()
|
||||
{
|
||||
CPUMeter::ScopedActiveTime interval (m_cpuMeter);
|
||||
|
||||
std::size_t total (0);
|
||||
ScopedServiceThread thread (this);
|
||||
for (;;)
|
||||
@@ -71,6 +73,8 @@ std::size_t ServiceQueueBase::poll ()
|
||||
|
||||
std::size_t ServiceQueueBase::poll_one ()
|
||||
{
|
||||
CPUMeter::ScopedActiveTime interval (m_cpuMeter);
|
||||
|
||||
ScopedServiceThread thread (this);
|
||||
return dequeue();
|
||||
}
|
||||
@@ -81,8 +85,15 @@ std::size_t ServiceQueueBase::run ()
|
||||
ScopedServiceThread thread (this);
|
||||
while (! stopped())
|
||||
{
|
||||
total += poll ();
|
||||
wait ();
|
||||
{
|
||||
CPUMeter::ScopedActiveTime interval (m_cpuMeter);
|
||||
total += poll ();
|
||||
}
|
||||
|
||||
{
|
||||
CPUMeter::ScopedIdleTime interval (m_cpuMeter);
|
||||
wait ();
|
||||
}
|
||||
}
|
||||
return total;
|
||||
}
|
||||
@@ -93,10 +104,17 @@ std::size_t ServiceQueueBase::run_one ()
|
||||
ScopedServiceThread (this);
|
||||
for (;;)
|
||||
{
|
||||
n = poll_one();
|
||||
if (n != 0)
|
||||
break;
|
||||
wait();
|
||||
{
|
||||
CPUMeter::ScopedActiveTime interval (m_cpuMeter);
|
||||
n = poll_one();
|
||||
if (n != 0)
|
||||
break;
|
||||
}
|
||||
|
||||
{
|
||||
CPUMeter::ScopedIdleTime interval (m_cpuMeter);
|
||||
wait();
|
||||
}
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user