1. 程式人生 > >Android 效能分析記錄

Android 效能分析記錄

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)的詳細資訊。