Android 性能分析记录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26366149/article/details/79721117

TraceView界面信息介绍。

TraceView界面包括时间面板和方法面板

(1) 时间面板(Timeline Panel)
时间面板展示了每个线程的执行情况,其中的[1]main即为ui主线程。
移动到某个位置可以查看该点对应的方法的执行信息,点击方法面板则会选中相应的方法。
可以左键按住不放选中区域放大局部精细查看,不同方法用不同颜色标注
 
(2) 方法面板(Profile Panel)
方法面板展示了所有方法的执行情况,点击某个方法可以查看在对应线程上的执行时间区域,并会显示其父方法及子方法。
每个方法包括如下信息列,可点击某列进行排序,从而确定产生性能问题的函数:

Systrace 性能分析的工具

Systrace的功能包括跟踪系统的I/O操作、内核工作队列、CPU负载以及Android各个子系统的运行状况等

你可以通过python systrace.py -h 来查看systrace 的使用帮助

  1. Usage: systrace.py [options] [category1 [category2 ...]]  
  2. Example: systrace.py -b 32768 -t 15 gfx input view sched freq  
  3. Options:  
  4.   -h, --help            show this help message and exit  
  5.   -o FILE               write HTML to FILE  
  6.   -t N, --time=N        trace for N seconds  
  7.   -b N, --buf-size=N    use a trace buffer size of N KB  
  8.   -k KFUNCS, --ktrace=KFUNCS  
  9.                         specify a comma-separated list of kernel functions to  
  10.                         trace  
  11.   -l, --list-categories  
  12.                         list the available categories and exit  
  13.   -a APP_NAME, --app=APP_NAME  
  14.                         enable application-level tracing for comma-separated  
  15.                         list of app cmdlines  
  16.   --link-assets         link to original CSS or JS resources instead of  
  17.                         embedding them  
  18.   --from-file=FROM_FILE  
  19.                         read the trace from a file (compressed) rather than  
  20.                         running a live trace  
  21.   --asset-dir=ASSET_DIR  
  22.   -e DEVICE_SERIAL, --serial=DEVICE_SERIAL  
  23.                         adb device serial number  


图中所示的trace.html页面内容和Traceview的Timeline Panel非常类似。图中包含的内容如下:
(1). 由于在systrace.py中指定了-f -l和-i参数,Systrace将生成CPU频率、负载和状态相关的信息。它们为图中第一个红框所示。由于笔者所测手机CPU为双核,故图中有CPU0和CPU1之分。为行文方便,用CPU N来指代CPU的某个核。
“CPU N“所示行对应于整个测试时间内,某个核上运行的进程信息。
“CPU N C-State“所示行为整个测试时间内,某个CPU状态的变化。C-State取值见下表。
“CPU N Clock Frequency”所示行展示了某个CPU运行的频率。通过点击这一行的色块可以查看某个时间点上CPU N的运行频率。
“cpufreq”:该行所示内容和CPU交互式频率调节器(Interactive Governor)的工作有关。交互式CPU调节器驱动添加了对CPU频率调节事件的跟踪。感兴趣的读者不妨阅读kernel中的 include/trace/events/cpufreq_interactive.h文件以了解更多的信息。

(2). VSYNC:显示了每次Tick Tack的时间大概都在16ms左右
(3). 图中 com.example.systracedemo/com.example.systracedemo.MainActivity所示为应用程序占用显示Buffer的Tick-Tack情况。如果使用时间超过16ms,将导致界面显示迟滞等现象。
(4). 图中SurfaceFlinger行展示了其函数调用的CPU耗时情况(如箭头1所指,SurfaceFlinger中的onMessageReceived函数的运行信息)。
(5). 图中最下部的方框中,详细显示了当前鼠标在时间线中选择的部分(即SurfaceFlinger中的onMessageReceived)的详细信息。


猜你喜欢

转载自blog.csdn.net/qq_26366149/article/details/79721117