程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 性能工具Systrace使用教程

性能工具Systrace使用教程

編輯:關於JAVA
 

一、概述

保證系統流暢度,也就是保證系統能連續不間斷地提供每秒60幀的運行狀態。當出現掉幀時(也可稱為Jank),需要知道當前整個系統所處的狀態,systrace便是最佳的選擇,它能手機檢測android系統各個組件隨著時間的運行狀態,並能提示該如何有效地修復問題,接下來說說systrace如何使用以及如何解讀。

二、Systrace

2.1 自定義systrace

java framework層

import android.os.Trace;
Trace.traceBegin(long traceTag, String methodName)
Trace.traceEnd(long traceTag)

在代碼中必須成對出現,一般將traceEnd放入到finally語句塊,另外,必須在同一個線程。

app層

import android.os.Trace;
Trace.beginSection(String sectionName)
Trace.EndSection()

這裡默認的traceTag為TRACE_TAG_APP,systrace命令通過指定app參數即

native framework層

#include<utils/Trace.h>
ATRACE_CALL();

2.2 命令用法

命令行

python systrace.py [options] [category1] [category2] ... [categoryN]

2.2.1 options

其中options可取值:

options 解釋 -o <FILE> 輸出的目標文件 -t N, –time=N 執行時間,默認5s -b N, –buf-size=N buffer大小(單位kB),用於限制trace總大小,默認無上限 -k <KFUNCS>,–ktrace=<KFUNCS> 追蹤kernel函數,用逗號分隔 -a <APP_NAME>,–app=<APP_NAME> 追蹤應用包名,用逗號分隔 –from-file=<FROM_FILE> 從文件中創建互動的systrace -e <DEVICE_SERIAL>,–serial=<DEVICE_SERIAL> 指定設備 -l, –list-categories 列舉可用的tags

2.2.2 category

category可取值:

category 解釋 gfx Graphics input Input view View System webview WebView wm Window Manager am Activity Manager sm Sync Manager audio Audio video Video camera Camera hal Hardware Modules app Application res Resource Loading dalvik Dalvik VM rs RenderScript bionic Bionic C Library power Power Management sched CPU Scheduling irq IRQ Events freq CPU Frequency idle CPU Idle disk Disk I/O mmc eMMC commands load CPU Load sync Synchronization workq Kernel Workqueues memreclaim Kernel Memory Reclaim regulators Voltage and Current Regulators

2.2.3 示例

例如,在systrace.py所在目錄下執行指令:2.3 圖形化

python systrace.py -b 32768 -t 5 -o mytrace.html wm gfx input view sched freq

又例如,輸出全部的trace信息

python systrace.py -b 32768 -t 5 -o mytrace.html gfx input view webview wm am sm audio video camera hal app res dalvik rs bionic power sched irq freq idle disk mmc load sync workq memreclaim regulators

注:收集trace,需要提前安裝python,並且一定要注意必須是python 2.x,而不是能3.x,否則可能會出現問題。另外,buffer大小不可過大,否則會出現oom異常。

 

橫坐標是以時間為單位,縱坐標是以進程-線程的方式來劃分,同一進程的線程為一組放在一起,可收縮/展開,如下圖:

systrace

2.3.1 Frames

產生的html格式的trace文件必須使用Google Chrome打開,才能正確地解析並已圖標形式展現。上圖中紅色圈起來的,都是可以點擊操作的地方,最上方是搜索欄,往下處是Alerts按鈕,再往下是鼠標操作模式。

在每個app進程,都有一個Frames行,正常情況以綠色的圓點表示。當圓點顏色為黃色或者紅色時,意味著這一幀超過16.6ms(即發現丟幀),這時需要通過放大那一幀進一步分析問題。對於Android 5.0(API level 21)或者更高的設備,該問題主要聚焦在UI Thread和Render Thread這兩個線程當中。對於更早的版本,則所有工作在UI Thread。

systrace

2.3.2 Alerts

Systrace能自動分析trace中的事件,並能自動高亮性能問題作為一個Alerts,建議調試人員下一步該怎麼做。

比如對於丟幀是,點擊黃色或紅色的Frames圓點便會有相關的提示信息;另外,在systrace的最右上方,有一個Alerts tab可以展開,這裡記錄著所有的的警告提示信息。

注:本文講到最新版的systrace,其中sdk 23,chrome版本49.0,部分功能在老版本systrace並沒有。

三、 快捷操作

3.1 導航操作

導航操作 作用 w 放大,[+shift]速度更快 s 縮小,[+shift]速度更快 a 左移,[+shift]速度更快 d 右移,[+shift]速度更快

3.2 快捷操作

常用操作 作用 f 放大當前選定區域 m 標記當前選定區域 v 高亮VSync g 切換是否顯示60hz的網格線 0 恢復trace到初始態,這裡是數字0而非字母o 一般操作 作用 h 切換是否顯示詳情 / 搜索關鍵字 enter 顯示搜索結果,可通過← →定位搜索結果 ` 顯示/隱藏腳本控制台 ? 顯示幫助功能

對於腳本控制台,除了能當做記事本的功能,目前還不清楚有啥功能,或許還在開發中。

3.3 模式切換

  1. Select mode: 雙擊已選定區能將所有相同的塊高亮選中;(對應數字1)
  2. Pan mode: 拖動平移視圖(對應數字2)
  3. Zoom mode:通過上/下拖動鼠標來實現放大/縮小功能;(對應數字3)
  4. Timing mode:拖動來創建或移除時間窗口線。(對應數字4)

可通過按數字1~4,用於切換鼠標模式; 另外,按住alt鍵,再滾動鼠標滾輪能實現放大/縮小功能。

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved