diff options
author | Yabin Cui <yabinc@google.com> | 2024-02-26 12:15:26 -0800 |
---|---|---|
committer | Yabin Cui <yabinc@google.com> | 2024-02-26 12:15:26 -0800 |
commit | 938e3e5ba3f765041b22a657192d3b805790fb2a (patch) | |
tree | 701e0e8fe618abb5c8dc417bc20cbd40c4986838 /simpleperf | |
parent | 9030e7c51a7811ac6dafed9a02813d5c0b02468c (diff) | |
download | extras-938e3e5ba3f765041b22a657192d3b805790fb2a.tar.gz |
simpleperf: ProtoFileReportLib: fix reporting off-cpu mode
Also report recording file when a trace-offcpu mode isn't supported.
Bug: 325484390
Test: run test/test.py -p TestProtoFileReportLib*
Test: run scripts manually
Change-Id: Ie4e0cda2621e5e9bf7c05137fe15b8625359c2dc
Diffstat (limited to 'simpleperf')
-rw-r--r-- | simpleperf/scripts/simpleperf_report_lib.py | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/simpleperf/scripts/simpleperf_report_lib.py b/simpleperf/scripts/simpleperf_report_lib.py index acd349e9..68881b96 100644 --- a/simpleperf/scripts/simpleperf_report_lib.py +++ b/simpleperf/scripts/simpleperf_report_lib.py @@ -565,6 +565,7 @@ class ProtoFileReportLib: '`pip install protobuf==4.21`.') def __init__(self): + self.record_file = None self.report_sample_pb2 = ProtoFileReportLib.get_report_sample_pb2() self.records: List[self.report_sample_pb2.Record] = [] self.record_index = -1 @@ -601,6 +602,7 @@ class ProtoFileReportLib: pass def SetRecordFile(self, record_file: str): + self.record_file = record_file with open(record_file, 'rb') as fh: data = fh.read() _check(data[:10] == b'SIMPLEPERF', f'magic number mismatch: {data[:10]}') @@ -668,8 +670,8 @@ class ProtoFileReportLib: one of the modes returned by GetSupportedTraceOffCpuModes(). """ supported_modes = self.GetSupportedTraceOffCpuModes() - _check(mode in supported_modes, - f'unsupported trace-offcpu mode: {mode}. supported modes are: {supported_modes}') + _check(mode in supported_modes, f'unsupported trace-offcpu mode: {mode}. ' + + f'Supported modes are {supported_modes} in {self.record_file}') self.trace_offcpu_mode = mode def AggregateThreads(self, thread_name_regex_list: List[str]): @@ -709,14 +711,14 @@ class ProtoFileReportLib: if prev_offcpu_sample := self.offcpu_samples.get(sample.thread_id): # If there is a previous off-cpu sample, update its period. prev_offcpu_sample.event_count = max(sample.time - prev_offcpu_sample.time, 1) - self._add_to_sample_queue(sample) + self._add_to_sample_queue(prev_offcpu_sample) if is_offcpu: self.offcpu_samples[sample.thread_id] = sample else: self.offcpu_samples[sample.thread_id] = None if self.trace_offcpu_mode in ('on-off-cpu', 'mixed-on-off-cpu'): - self.sample_queue.append(sample) + self._add_to_sample_queue(sample) def _process_context_switch(self, context_switch) -> None: if not context_switch.switch_on: |