systrace基础知识

556 阅读2分钟

1、60fps

为什么是60fps,这个的意思是画面美妙更新60次。60次更新,是要均匀更新的,不是一会快一会慢,那样会觉得不流畅。每秒60次,也就是1/60~=16.67ms要更新一次。

60fps是针对软件的,这边说的就是屏幕的刷新率,是针对硬件的,目前大部分的手机都是60HZ,移动设备使用这个是因为移动设备对功耗的要求非常高,提高手机刷新率,对手机来说。逻辑功耗会跟随频率的增加而增大,总是更高的刷新率,意味着更短的数据写入时间,对屏幕设计来说难度更大。

systrace 是分析 Android 设备性能的主要工具。不过,它实际上是其他工具的封装容器:它是 atrace 的主机端封装容器,是用于控制用户空间跟踪和设置 ftrace 的设备端可执行文件,也是 Linux 内核中的主要跟踪机制。systrace 使用 atrace 来启用跟踪,然后读取 ftrace 缓冲区并将其全部封装到一个独立的 HTML 查看器中(虽然较新的内核支持 Linux 增强型柏克莱封包过滤器 (eBPF),但以下文档内容仅适用于 3.18 内核(无 eFPF),因为 Pixel/Pixel XL 上使用的是 3.18 内核)。

Systrace的功能包括系统的i/o操作、内核工作队列、cpu负载以及andriod各个子系统的运行状况。他的内部由三部分组成:

1、内核部分,systrace利用linux 的ftrace的功能,要使用这个功能的话必须开启kernel中和ftrace相关的模块

2、数据采集部分:android定义了一个trace类。应用程序可利用该类把统计信息输出到ftrace。同时,android还有一个atrace程序,可以从ftrace中读取统计信息交给数据分析工具来处理。

3、数据分析工具:Android提供一个systrace.py(目录:platform-tools/systrace中,其内部调用atrace程序)用来配置数据采集的方式(如采集数据的标签、输出文件名等)喝收集ftrace统计数据并生成一个结果网页文件供用户查看。从本质上说,Systrace是针对linux Kernel中ftrace的封装。应用进程需要利用Android提供的trace类来使用Systrace.[source.android.google.cn/devices/tec…]{} 下图是某个应用5秒的交互情况