Performance Counters¶
Firmware can be configured to trace performance counters for each processing component. Each performance trace entry includes:
component UUID
peak platform and cpu timer ticks consumed during component’s copy processing
Note
Performance timestamp macros use both the platform timer and cpu timer in case the latter is not always running.
Performance Counters usage¶
Currently, you can only enable performance counters statically during FW build in one of two ways:
Select Performance counter from Debug menu using
make menuconfig
.Add
CONFIG_PERFORMANCE_COUNTERS=y
to specific FW config, for example, tigerlake_defconfig.
After you enable the performance counters, they are logged periodically for each active component with the pipeline period frequency.
Example¶
Performance counter trace example:
[ 8481257.031250] ( 51.562500) c0 demux 1.2 src/audio/pipeline.c:206 perf comp_copy peak plat 782 cpu 8136
demux 1.2
- processing component
plat 782
- peak platform cycles consumed
cpu 8136
- peak CPU cycles consumed
MCPS calculation¶
The equation below illustrates how to calculate component MCPS (million cycles per second) consumption.
MCPS = cpu_ticks / (pipeline_period[s] * 10^6) // for common pipeline_period = 1ms it can be simplified to MCPS = cpu_ticks / 1000
In the trace example above, cpu_ticks = 8136, the pipeline_period is 1ms so the demux consumption equals 8,136 MCPS