1
0
mirror of https://github.com/wolfpld/tracy.git synced 2025-03-20 07:40:02 +08:00

Process power usage messages.

This commit is contained in:
Bartosz Taudul
2023-03-10 01:02:41 +01:00
parent 2971db21e3
commit 69855c671f
2 changed files with 41 additions and 0 deletions
+32
View File
@@ -4744,6 +4744,9 @@ bool Worker::Process( const QueueItem& ev )
case QueueType::SysTimeReport:
ProcessSysTime( ev.sysTime );
break;
case QueueType::SysPowerReport:
ProcessSysPower( ev.sysPower );
break;
case QueueType::ContextSwitch:
ProcessContextSwitch( ev.contextSwitch );
break;
@@ -6686,6 +6689,35 @@ void Worker::ProcessSysTime( const QueueSysTime& ev )
}
}
void Worker::ProcessSysPower( const QueueSysPower& ev )
{
const auto time = TscTime( ev.time );
auto it = m_powerData.find( ev.name );
if( it == m_powerData.end() )
{
CheckString( ev.name );
PlotData* plot = m_slab.AllocInit<PlotData>();
plot->name = ev.name;
plot->type = PlotType::User;
plot->format = PlotValueFormatting::Number;
plot->showSteps = false;
plot->fill = true;
plot->color = 0;
m_data.plots.Data().push_back( plot );
m_powerData.emplace( ev.name, PowerData { time, plot } );
}
else
{
const auto dt = time - it->second.lastTime;
it->second.lastTime = time;
if( m_data.lastTime < time ) m_data.lastTime = time;
// ev.delta is Microjoule, dt is nanoseconds
// power is Watt = J / s
const auto power = ev.delta * 1000. / dt;
InsertPlot( it->second.plot, time, power );
}
}
void Worker::ProcessContextSwitch( const QueueContextSwitch& ev )
{
#ifndef TRACY_NO_STATISTICS