diff options
author | Yabin Cui <yabinc@google.com> | 2022-03-23 16:45:52 -0700 |
---|---|---|
committer | Yabin Cui <yabinc@google.com> | 2022-03-23 16:47:35 -0700 |
commit | b5a3a84e648484d545809a6133b138b99a386a7d (patch) | |
tree | a6fa5066efe7d13b7af34e11fa3b324b7efce95c | |
parent | 8501c173ad5d6e7cea0399468663d391590d0f52 (diff) | |
download | extras-b5a3a84e648484d545809a6133b138b99a386a7d.tar.gz |
simpleperf: move --comm into report lib options.
Bug: 222758831
Test: run test.py --only-host-test
Change-Id: Id308719999bcb8a9d4e86983688cacbc5bb7e5ab
-rwxr-xr-x | simpleperf/scripts/annotate.py | 17 | ||||
-rwxr-xr-x | simpleperf/scripts/gecko_profile_generator.py | 10 | ||||
-rwxr-xr-x | simpleperf/scripts/pprof_proto_generator.py | 14 | ||||
-rwxr-xr-x | simpleperf/scripts/report_sample.py | 7 | ||||
-rw-r--r-- | simpleperf/scripts/simpleperf_utils.py | 3 | ||||
-rwxr-xr-x | simpleperf/scripts/stackcollapse.py | 7 |
6 files changed, 4 insertions, 54 deletions
diff --git a/simpleperf/scripts/annotate.py b/simpleperf/scripts/annotate.py index c12e0536..7bf8fe92 100755 --- a/simpleperf/scripts/annotate.py +++ b/simpleperf/scripts/annotate.py @@ -146,7 +146,7 @@ class SourceFileAnnotator(object): def __init__(self, config): # check config variables - config_names = ['perf_data_list', 'source_dirs', 'comm_filters', 'dso_filters', 'ndk_path'] + config_names = ['perf_data_list', 'source_dirs', 'dso_filters', 'ndk_path'] for name in config_names: if name not in config: log_exit('config [%s] is missing' % name) @@ -161,7 +161,6 @@ class SourceFileAnnotator(object): self.config = config self.symfs_dir = symfs_dir self.kallsyms = kallsyms - self.comm_filter = set(config['comm_filters']) if config.get('comm_filters') else None self.dso_filter = set(config['dso_filters']) if config.get('dso_filters') else None config['annotate_dest_dir'] = 'annotated_files' @@ -199,8 +198,6 @@ class SourceFileAnnotator(object): if sample is None: lib.Close() break - if not self._filter_sample(sample): - continue symbols = [] symbols.append(lib.GetSymbolOfCurrentSample()) callchain = lib.GetCallChainOfCurrentSample() @@ -214,13 +211,6 @@ class SourceFileAnnotator(object): self.addr2line.add_addr(symbol.dso_name, build_id, symbol.symbol_addr, symbol.symbol_addr) - def _filter_sample(self, sample): - """Return true if the sample can be used.""" - if self.comm_filter: - if sample.thread_comm not in self.comm_filter: - return False - return True - def _filter_symbol(self, symbol): if not self.dso_filter or symbol.dso_name in self.dso_filter: return True @@ -246,8 +236,6 @@ class SourceFileAnnotator(object): if sample is None: lib.Close() break - if not self._filter_sample(sample): - continue self._generate_periods_for_sample(lib, sample) def _generate_periods_for_sample(self, lib, sample): @@ -475,8 +463,6 @@ def main(): help='show raw period instead of percentage') parser.add_argument('--summary-width', type=int, default=80, help='max width of summary file') sample_filter_group = parser.add_argument_group('Sample filter options') - sample_filter_group.add_argument('--comm', nargs='+', action='append', help=""" - Use samples only in threads with selected names.""") sample_filter_group.add_argument('--dso', nargs='+', action='append', help=""" Use samples only in selected binaries.""") parser.add_report_lib_options(sample_filter_group=sample_filter_group) @@ -487,7 +473,6 @@ def main(): if not config['perf_data_list']: config['perf_data_list'].append('perf.data') config['source_dirs'] = flatten_arg_list(args.source_dirs) - config['comm_filters'] = flatten_arg_list(args.comm) config['dso_filters'] = flatten_arg_list(args.dso) config['ndk_path'] = args.ndk_path config['raw_period'] = args.raw_period diff --git a/simpleperf/scripts/gecko_profile_generator.py b/simpleperf/scripts/gecko_profile_generator.py index 55768d17..396c9a58 100755 --- a/simpleperf/scripts/gecko_profile_generator.py +++ b/simpleperf/scripts/gecko_profile_generator.py @@ -295,7 +295,6 @@ def _gecko_profile( record_file: str, symfs_dir: Optional[str], kallsyms_file: Optional[str], - comm_filter: Set[str], report_lib_options: ReportLibOptions) -> GeckoProfile: """convert a simpleperf profile to gecko format""" lib = ReportLib() @@ -320,9 +319,6 @@ def _gecko_profile( if sample is None: lib.Close() break - if comm_filter: - if sample.thread_comm not in comm_filter: - continue event = lib.GetEventOfCurrentSample() symbol = lib.GetSymbolOfCurrentSample() callchain = lib.GetCallChainOfCurrentSample() @@ -401,16 +397,12 @@ def main() -> None: parser.add_argument('--kallsyms', help='Set the path to find kernel symbols.') parser.add_argument('-i', '--record_file', nargs='?', default='perf.data', help='Default is perf.data.') - sample_filter_group = parser.add_argument_group('Sample filter options') - sample_filter_group.add_argument('--comm', nargs='+', action='append', help=""" - Use samples only in threads with selected names.""") - parser.add_report_lib_options(sample_filter_group=sample_filter_group) + parser.add_report_lib_options() args = parser.parse_args() profile = _gecko_profile( record_file=args.record_file, symfs_dir=args.symfs, kallsyms_file=args.kallsyms, - comm_filter=set(flatten_arg_list(args.comm)), report_lib_options=args.report_lib_options) json.dump(profile, sys.stdout, sort_keys=True) diff --git a/simpleperf/scripts/pprof_proto_generator.py b/simpleperf/scripts/pprof_proto_generator.py index 70e05cb5..57c988b9 100755 --- a/simpleperf/scripts/pprof_proto_generator.py +++ b/simpleperf/scripts/pprof_proto_generator.py @@ -270,7 +270,6 @@ class PprofProfileGenerator(object): config['binary_cache_dir'] = 'binary_cache' if not os.path.isdir(config['binary_cache_dir']): config['binary_cache_dir'] = None - self.comm_filter = set(config['comm_filters']) if config.get('comm_filters') else None self.dso_filter = set(config['dso_filters']) if config.get('dso_filters') else None self.max_chain_length = config['max_chain_length'] self.profile = profile_pb2.Profile() @@ -326,9 +325,6 @@ class PprofProfileGenerator(object): symbol = self.lib.GetSymbolOfCurrentSample() callchain = self.lib.GetCallChainOfCurrentSample() - if not self._filter_report_sample(report_sample): - continue - sample_type_id = self.get_sample_type_id(event.name) sample = Sample() sample.add_value(sample_type_id, 1) @@ -376,13 +372,6 @@ class PprofProfileGenerator(object): return self.profile - def _filter_report_sample(self, sample): - """Return true if the sample can be used.""" - if self.comm_filter: - if sample.thread_comm not in self.comm_filter: - return False - return True - def _filter_symbol(self, symbol): if not self.dso_filter or symbol.dso_name in self.dso_filter: return True @@ -634,8 +623,6 @@ def main(): '-j', '--jobs', type=int, default=os.cpu_count(), help='Use multithreading to speed up source code annotation.') sample_filter_group = parser.add_argument_group('Sample filter options') - sample_filter_group.add_argument('--comm', nargs='+', action='append', help=""" - Use samples only in threads with selected names.""") sample_filter_group.add_argument('--dso', nargs='+', action='append', help=""" Use samples only in selected binaries.""") parser.add_report_lib_options(sample_filter_group=sample_filter_group) @@ -650,7 +637,6 @@ def main(): config = {} config['output_file'] = args.output_file - config['comm_filters'] = flatten_arg_list(args.comm) config['dso_filters'] = flatten_arg_list(args.dso) config['ndk_path'] = args.ndk_path config['max_chain_length'] = args.max_chain_length diff --git a/simpleperf/scripts/report_sample.py b/simpleperf/scripts/report_sample.py index a4cdaf0a..dc5c4e2b 100755 --- a/simpleperf/scripts/report_sample.py +++ b/simpleperf/scripts/report_sample.py @@ -29,7 +29,6 @@ def report_sample( kallsyms_file: str, show_tracing_data: bool, header: bool, - comm_filter: Set[str], report_lib_options: ReportLibOptions): """ read record_file, and print each sample""" lib = ReportLib() @@ -57,9 +56,6 @@ def report_sample( if sample is None: lib.Close() break - if comm_filter: - if sample.thread_comm not in comm_filter: - continue event = lib.GetEventOfCurrentSample() symbol = lib.GetSymbolOfCurrentSample() callchain = lib.GetCallChainOfCurrentSample() @@ -92,8 +88,6 @@ def main(): parser.add_argument('--show_tracing_data', action='store_true', help='print tracing data.') parser.add_argument('--header', action='store_true', help='Show metadata header, like perf script --header') - parser.add_argument('--comm', nargs='+', action='append', help=""" - Use samples only in threads with selected names.""") parser.add_report_lib_options() args = parser.parse_args() report_sample( @@ -102,7 +96,6 @@ def main(): kallsyms_file=args.kallsyms, show_tracing_data=args.show_tracing_data, header=args.header, - comm_filter=set(flatten_arg_list(args.comm)), report_lib_options=args.report_lib_options) diff --git a/simpleperf/scripts/simpleperf_utils.py b/simpleperf/scripts/simpleperf_utils.py index df7cff32..2a7dfd35 100644 --- a/simpleperf/scripts/simpleperf_utils.py +++ b/simpleperf/scripts/simpleperf_utils.py @@ -1065,7 +1065,8 @@ class BaseArgumentParser(argparse.ArgumentParser): '--include-process-name', metavar='process_name_regex', nargs='+', help='only include samples for processes with name containing the regular expression') group.add_argument( - '--include-thread-name', metavar='thread_name_regex', nargs='+', + '--comm', '--include-thread-name', metavar='thread_name_regex', + dest='include_thread_name', nargs='+', help='only include samples for threads with name containing the regular expression') group.add_argument( '--filter-file', metavar='file', diff --git a/simpleperf/scripts/stackcollapse.py b/simpleperf/scripts/stackcollapse.py index 3aa28214..e0e1d86f 100755 --- a/simpleperf/scripts/stackcollapse.py +++ b/simpleperf/scripts/stackcollapse.py @@ -43,7 +43,6 @@ def collapse_stacks( annotate_kernel: bool, annotate_jit: bool, include_addrs: bool, - comm_filter: Set[str], report_lib_options: ReportLibOptions): """read record_file, aggregate per-stack and print totals per-stack""" lib = ReportLib() @@ -66,9 +65,6 @@ def collapse_stacks( if sample is None: lib.Close() break - if comm_filter: - if sample.thread_comm not in comm_filter: - continue event = lib.GetEventOfCurrentSample() symbol = lib.GetSymbolOfCurrentSample() callchain = lib.GetCallChainOfCurrentSample() @@ -122,8 +118,6 @@ def main(): sample_filter_group = parser.add_argument_group('Sample filter options') sample_filter_group.add_argument('--event-filter', nargs='?', default='', help='Event type filter e.g. "cpu-cycles" or "instructions"') - sample_filter_group.add_argument('--comm', nargs='+', action='append', help=""" - Use samples only in threads with selected names.""") parser.add_report_lib_options(sample_filter_group=sample_filter_group, sample_filter_with_pid_shortcut=False) args = parser.parse_args() @@ -137,7 +131,6 @@ def main(): annotate_kernel=args.kernel, annotate_jit=args.jit, include_addrs=args.addrs, - comm_filter=set(flatten_arg_list(args.comm)), report_lib_options=args.report_lib_options) |