检查性能

由于负责系统稳定性和性能监控的同事离职了,所以领导希望我来与剩下的同事一起负责这个事,那没法了,学吧~

捕获跟踪记录的方式

方式:

对比一下:

  1. profile工具依赖AS,图形化,非常方便,但是无法远程操作;
  2. System Tracing在国内很多系统上都阉割掉了,比如我的华为mate20x;
  3. Perfetto 是Android10及以上才加入,老系统不支持(所幸我们的系统还是支持的),同事强烈推荐,但是因为适用性较少,放在后面去学吧;
  4. Systrace 命令行工具,适用性最广,面试经常考,所以优先掌握。

Systrace

条件

使用如下命令测试:

1
$ python systrace.py --list-categories

这里我就出错了:python: can't open file 'systrace.py': [Errno 2] No such file or directory

到这里我先搜索百度,查到systrace.py是位于android-sdk/platform-tools,但是进入到目录之后发现文件并不存在,于时又查到google的platform-tools包中,在33.0.0以后已经删掉了这个工具,所以我们需要额外下载33.0.0或更早的platform-tools才行,这里给出下载链接

感谢RedB的博客。

进入目录android-sdk/platform-tools/trace/下,发现是systrace.py文件是存在的,然后提权sudo chmod 777 systrace.py后仍然报以前的错误。

后来尝试如下命令成功:

1
$ systrace.py --list-categories

语法

1
python systrace.py [options] [categories]

选项

全局选项说明
-h显示帮助信息
-l列出您的已连接设备科用的跟踪类型
命令和选项说明
-o file将HTML跟踪报告写入指定的file,如果没有指定此选项,则保存在当前目录的trace.html
-t N跟踪设备活动N
-b N使用N千字节的缓冲区大小
-k functions跟踪逗号分隔列表中特定的内核函数活动
-a app-name启动对应用的跟踪,指定为包含进程名称的逗号分隔列表,必须包含Trace类中的插桩调用
-e device-serial指定特定的设备
categories包含指定的系统进程的跟踪信息