diff options
author | Martijn Coenen <maco@google.com> | 2015-09-28 16:18:39 +0200 |
---|---|---|
committer | Martijn Coenen <maco@google.com> | 2016-01-18 12:41:01 -0800 |
commit | 49b1535fdf6cd9ab74047d54c9028525c04adda8 (patch) | |
tree | 5598d8d3025809abf0eeced9cd03e13cb1570f77 /systrace_analysis/analyze_trace.py | |
parent | 9a9efec5634b318266dc823252ebde3c6f88986f (diff) | |
download | extras-49b1535fdf6cd9ab74047d54c9028525c04adda8.tar.gz |
Initial import of headless systrace analysis.
Can dump the following on a per-process/activity basis:
- Time the process was running / activity in the foreground
- # of frames rendered, and their performance
- # of direct reclaims
- Amount of time spent on each CPU for key threads
- CPU frequency distribution
Change-Id: I449c5729a0cd4c27d1b810b669a86cd5ee7f4467
Diffstat (limited to 'systrace_analysis/analyze_trace.py')
-rwxr-xr-x | systrace_analysis/analyze_trace.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/systrace_analysis/analyze_trace.py b/systrace_analysis/analyze_trace.py new file mode 100755 index 00000000..ddc99274 --- /dev/null +++ b/systrace_analysis/analyze_trace.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python +# +# Copyright (C) 2015 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +import argparse +import os +import subprocess +import sys + +def main(): + # Create argument parser + parser = argparse.ArgumentParser() + parser.add_argument('systrace_file', metavar='SYSTRACE_FILE', help='systrace file to analyze') + parser.add_argument('-e', metavar='EVENT_LOG', help='android event log file') + args = parser.parse_args() + + this_script_path = os.path.dirname(os.path.realpath(__file__)) + + # Find chromium-trace directory and vinn binary as offset from this script + chromium_trace_path = os.path.normpath(this_script_path + '/../../../external/chromium-trace') + if not os.path.exists(chromium_trace_path): + sys.exit('Can\'t find chromium-trace in your source tree') + + vinn_path = chromium_trace_path + '/catapult/third_party/vinn/' + if not os.path.exists(vinn_path): + sys.exit('Can\'t find vinn in your source tree') + + sys.path.append(vinn_path) + import vinn + + # Find source paths and construct vinn launch arguments + tracing_path = chromium_trace_path + '/catapult/tracing/' + gldist_path = chromium_trace_path + '/catapult/tracing/third_party/gl-matrix/dist/' + source_paths_arg = [tracing_path, gldist_path] + js_args_arg = [args.systrace_file] + if args.e is not None: + js_args_arg += [args.e] + res = vinn.RunFile(this_script_path + '/analysis.html', source_paths=source_paths_arg, + js_args=js_args_arg, stdout=sys.stdout, stdin=sys.stdin); + return res.returncode + +if __name__ == '__main__': + main() |