Skip to content

Commit

Permalink
sof_perf_analyzer: add skip-to-first-trace option
Browse files Browse the repository at this point in the history
In CI test, some traces from previous test case will
apprear in the mtrace of current test case, this is
a know issue.

Previously, we always skip to the first valid trace
of this test case, this could raise trouble for developer
use of this script.

This patch adds skip-to-first-trace option, for CI
test, this option should be set (True), and for developer
use, this option should be left as it is (False).

Signed-off-by: Chao Song <[email protected]>
  • Loading branch information
Chao Song committed Sep 7, 2023
1 parent 1598025 commit d46d07b
Showing 1 changed file with 19 additions and 12 deletions.
31 changes: 19 additions & 12 deletions tools/sof_perf_analyzer.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,15 +120,11 @@ def skip_to_first_trace(trace_item_gen: TraceItemGenerator) -> Optional[TraceIte
test case due to mtrace is configured in deferred mode. This function consumes
those traces from the generator, and return the first trace item of current test.
'''
try:
while item := next(trace_item_gen):
# On test running, the SOF firmware is reloaded to DSP, timer is reset to 0.
# The first trace must have a timestamp with integral part equals to 0.
if int(item.timestamp) == 0:
return item
except StopIteration:
return None
return None
while item := next(trace_item_gen):
# On test running, the SOF firmware is reloaded to DSP, timer is reset to 0.
# The first trace must have a timestamp with integral part equals to 0.
if int(item.timestamp) == 0:
return item

def make_trace_item(fileio: TextIO) -> TraceItemGenerator:
'''Filter and parse a line of trace in string form into TraceItem object, for example:
Expand Down Expand Up @@ -169,9 +165,15 @@ def process_trace_file():
'''The top-level caller for processing the trace file'''
with open(args.filename, 'r', encoding='utf8') as file:
trace_item_gen = make_trace_item(file)
trace_prev = skip_to_first_trace(trace_item_gen)
if trace_prev is None:
raise Exception('No valid trace in provided file')
trace_prev = None
try:
if args.skip_to_first_trace:
trace_prev = skip_to_first_trace(trace_item_gen)
else:
trace_prev = next(trace_item_gen)
except StopIteration as si:
si.args = 'No valid trace in provided file',
raise
for trace_curr in trace_item_gen:
# pylint: disable=W0603
global ts_shift
Expand Down Expand Up @@ -295,6 +297,11 @@ def parse_args():
help='Kernel message file captured with journalctl or other log utility')
parser.add_argument('--out2csv', type=pathlib.Path, required=False,
help='Output SOF performance statistics to csv file')
parser.add_argument('-s', '--skip-to-first-trace', action="store_true", default=False,
help='''In CI test, some traces from previous test case will appear in
the mtrace of current test case, this flag is used to denote if we
want to skip until the first line with a timestamp between 0 and 1s.
For CI test, set the flag to True''')

return parser.parse_args()

Expand Down

0 comments on commit d46d07b

Please sign in to comment.