diff --git a/tools/sof_perf_analyzer.py b/tools/sof_perf_analyzer.py index 3d660e09..649e1735 100755 --- a/tools/sof_perf_analyzer.py +++ b/tools/sof_perf_analyzer.py @@ -27,8 +27,13 @@ import pandas as pd -# currently, keep CPC = max(module peak) * CPC_MARGIN -CPC_MARGIN = 1.1 +# CPC_MARGIN set to 1.5 because some modules have not running code, for example +# volume: volume have two kind of ramp type, linear and log, it only be runned when +# volume change happens. +# copier: there is attenuation inside, normally, it will not be runned. +# So we set a relative high margin for avg cycles. +# CPC = AVG(module) * CPC_MARGIN +CPC_MARGIN = 1.5 @dataclass() class TraceItem: @@ -243,7 +248,7 @@ def analyze_perf_info(): perf_stats.columns = ['CPU_AVG(MIN)', 'CPU_AVG(AVG)', 'CPU_AVG(MAX)', 'CPU_PEAK(MIN)', 'CPU_PEAK(AVG)', 'CPU_PEAK(MAX)'] perf_stats['PEAK(MAX)/AVG(AVG)'] = perf_stats['CPU_PEAK(MAX)'] / perf_stats['CPU_AVG(AVG)'] - perf_stats['MODULE_CPC'] = perf_info.groupby('COMP_ID')['CPU_PEAK'].max() * CPC_MARGIN + perf_stats['MODULE_CPC'] = perf_info.groupby('COMP_ID')['CPU_AVG'].mean() * CPC_MARGIN # change data type from float to int perf_stats['MODULE_CPC'] = perf_stats['MODULE_CPC'].astype(int)