PerfDog的使用教程


一、介紹:

移動全平台iOS/Android性能測試、分析工具平台,快速定位分析性能問題。PerfDog支持移動平台所有應用程序(游戲、APP應用、瀏覽器、小程序、小游戲、H5、后台系統進程等)、Android模擬器、雲真機等性能測試。支持APP多進程測試(如Android多子進程及iOS擴展進程APP Extension)。

重要說明Q&Ahttps://bbs.perfdog.qq.com/detail-128.html

特殊機型指南https://bbs.perfdog.qq.com/detail-127.html

性能參考標准說明https://bbs.perfdog.qq.com/detail-145.html

WEB使用手冊https://bbs.perfdog.qq.com/article-detail.html?id=49

PerfDogService(自動化及雲測性能服務https://perfdog.qq.com/perfdogservice

二、優缺點:

優點:

  1. 支持移動全平台:支持Android/iOS移動平台,提供PerfDog軟件Windows & Mac版本
  2. 無需ROOT/越獄:Android設備無需ROOT,  iOS設備無需越獄
  3. 測試數據准確:工具CPU性能影響<1%,保證性能數據准確真實性
  4. 測試數據完整全面: 輕松獲得 FPS、Jank、FTime、CPU、GPU、Memory、Battery 、Network、CTemp等性能參數
  5. 支持應用廣泛:支持所有APP應用、游戲、小程序、小游戲、H5、web
  6. 工具易用性高:無需安裝,即插即用,減少繁瑣的測試障礙

 

缺點:

PerfDog當前處於市場推廣階段,存在諸多Bug,測試一天下來發下的Bug就不下5個,如:

  1. 在Mac上執行時,如果Mac屏幕休眠后,手機會與該工具斷開連接導致測試中斷
  2. 在Mac上執行測試期間圖表顯示正常,但上傳到雲平台后cpu或內存圖表無法展示,且單次測試時間越長越容易復現,已提交給他們的開發處理這個Bug
  3. 在雲平台上對瀏覽器的分辨率適配不好,當測試時間超過10分鍾后,在雲平台上無法展示完整的圖表,比如測試30分鍾,只顯示13分鍾的圖標數據,可通過放縮瀏覽器,改變mac分辨率等方式解決,但顯示有問題,已提交給他們的開發處理這個Bug
  4. 統計https的流量上行與實際值偏差大
  5. 測試數據保存本地時,經常出現PerfDog卡死

 

三、性能指標:

  1. 包體大小:包體大小能被列為性能指標,是從APP性能指標及游戲運營兩個維度考慮的,玩家是更希望包體小的同時性能要好,有時它們會是一個互相取舍的關系。
  2. CPU占用率:一般情況下,用主流手機玩游戲20%-40%的CPU占用率算是合理的,當然這個數值隨着近年來手機硬件配置的提高,會略微下降,如果CPU占用率超過80%就非常值得我們去關注了。
  3. 圖片處理器每秒刷新的幀數(FPS):可用來指示頁面是否平滑的渲染。手機游戲幀率FPS,30-60都可接受,上了60對於人眼主觀感受差別就不大了。對於游戲開發而言,並不是FPS越高就一定越好,FPS取決於顯卡,其次是內存、CPU,然后是網絡。故綜合游戲其他性能指標,選擇一個適合的FPS即可。
  4. 內存使用:在Android系統中,每個APP進程除了同其他進程共享(shared dirty)外,還獨用私有內存(private dirty),通常我們使用PSS(=私有內存+比例分配共享內存)來衡量一個APP的內存開銷。移動設備的內存資源是非常有限,為每個APP進程分配的私有內存也是有限制。一方面我們要合理的申請內存使用,以免導致頻繁的GC(垃圾回收機制)影響性能和大對象申請發生內存溢出;另一方面,我們要及時釋放內存,以免發生內存泄漏。
  5. 電量:相對於PC來說,移動設備的電池電量是非常有限的,保持持久的續航能力尤為重要。另外,android的很多特性都比較耗電(如屏幕,GPS,sensor傳感器,喚醒機制,CPU,連網等的使用),我們必須要慎重檢查APP的電量使用,以免導致用戶手機耗電發熱,帶來不良體驗。
  6. 流量:目前的網絡類型包含2G\3G\4G\wifi,其中還有不同運營商的區分,我們在APP的使用中經常遇到大資源,重復請求,調用響應慢,調用失敗等各種情況。在不同的網絡類型之下,我們不僅要控制流量使用,還需要加快請求的響應。另外,對於需要聯網的手游來說,部分游戲對不同聯網方式的網絡類型采用了不同的流量消耗策略,主要分為wifi環境和蜂窩網絡環境。所以針對不同的游戲,我們統計流量消耗時,可能要連接不同的網絡進行測試。

總結,性能指標大致如下:
FPS cpu mem GPU NETwork Battery(wifi)

 

四、測試前准備

  1.  自己的設備的其他應用全都關閉。
  2.  電量充足,一般70%以上。(其實測試50%以上就行了,但是在測試過程中會耗電)
  3.  不能邊充電邊進行性能測試。
  4.  保持登錄應用的賬號不要被其他人擠掉,不然可能測試的性能數據作廢了。
  5.  設備。至少要准備三台測試機,覆蓋目前的高、中、低配手機(主要看cpu),如果是ios需要更多的機型。

 

五、安裝及運行 

登錄PerfDog官網https://perfdog.qq.com/,根據您的PC平台選擇想要下載的桌面應用程序

Windows平台:解壓下載包,雙擊打開PerfDog.exe桌面應用程序。

Mac平台:直接運行dmg桌面應用程序。

 

 

 賬號的注冊登錄:

需要先注冊賬號,然后登錄該賬號后測試的數據就會同步到平台上;

  

打開PerfDog.exe文件,需要登錄才能進入到 perfDog的主頁, 輸入剛剛官網注冊郵箱即可

 

連接手機:

iOS:則即插即用,用戶無需做任何操作。若PerfDog檢測不到連接手機或無法測試,請先安裝確保最新itunes是否能連上手機(最新itunes可在QQ管家上直接下載安裝)。

備注:若無法使用請參考:https://bbs.perfdog.qq.com/detail-128.html

Android:有兩種模式,非安裝模式和安裝模式。(注:請開啟手機USB調試模式及允許USB應用安裝。)。

a.   非安裝模式:

手機即插即用,無需任何設置及安裝,使用非常簡單,但手機屏幕上沒有實時性能數據顯示。

b.   安裝模式:

需要在手機上自動安裝PerfDog.apk,手機屏幕上有實時性能數據顯示(允許USB應用安裝和PerfDog懸浮窗管理權限),啟動PC版PerfDog.exe,則會在手機上自動PUSH安裝PerfDog.apk,具體安裝類似各個手機廠商安裝第三方APP提示安裝即可。(注:由於很多手機安裝需要賬號密碼,導致無法自動安裝,如果自動安裝失敗,則會把安裝文件PerfDog.apk釋放到當前文件夾里,手動安裝PerfDog.apk即可)。此模式下,在測試過程中,可能由於系統資源緊缺會kill PerfDog顯示app(手機界面性能數據顯示),但不影響正常測試功能。

備注:若無法使用請參考:https://bbs.perfdog.qq.com/detail-128.html

測試模式:

USB模式測試:

  USB連線后,在設備列表選擇USB圖標設備進行USB模式測試

WIFI模式測試(測試功率):

  只能在WIFI模式測試功率等信息。USB連線后,在設備列表選擇WIFI圖標設備進行WIFI模式測試。WIFI檢測連接成功后,拔掉USB連接線。(注:需要PC和被測手機連接同一WIFI,WIFI檢測連接成功后,拔掉被測手機USB線(USB模式測試功率無任何意義,會充電))(備注:一般公司WIFI可能做了安全策略限制,導致iOS平台在公司WIFI下無法使用)

 

 首頁模塊介紹:

 

 

模塊1:選擇調試的手機設備

模塊2:選項需要測試的應用名稱,會顯示手機上安裝的所有應用

模塊3:手機的CPU、GPU、內存介紹等

  1. device:顯示的是設備相關信息;
  2. Setting:顯示的是性能指標數據的配置頁面, 參數有:FPS(幀數)、FrameTime(幀時間)、CPU、NetworkFlow(網絡流量) 一般我們保持默認(可以根據自己產品的特點調整)
  3. About:顯示的是版本號和幫助文檔入口

模塊4:

FPS:

FPS(Frames per second) 1秒內游戲畫面或者應用界面真實平均刷新次數,俗稱幀率/FPS。

名稱說明Avg(FPS)平均幀率(一段時間內平均FPS)Var(FPS)幀率方差(一段時間內FPS方差)Drop(FPS)降幀次數(平均每小時相鄰兩個FPS點下降大於8幀的次數)

在平時玩游戲的時候, 延遲不能大於100毫秒, 否則用戶的嚴重只剩下了卡頓, 100-300毫秒用戶可以感受到延遲, 當達到一秒, 用戶的注意力就會轉移

Jank:

1秒內卡頓次數, 幀率FPS高並不能反映流暢或不卡頓。比如:FPS為50幀,前200ms渲染一幀,后800ms渲染49幀,雖然幀率50,但依然覺得非常卡頓。同時幀率FPS低,並不代表卡頓,比如無卡頓時均勻FPS為15幀。所以平均幀率FPS與卡頓無任何直接關系)

Jank1s內卡頓次數(同時滿足ab,則認為一次卡頓Jank)

a) 當前幀耗時>前三幀平均耗時2倍。
b) 當前幀耗時>兩幀電影幀耗時(1000ms/24*2=84ms)。

BigJank1s內嚴重卡頓次數(同時滿足ab,則認為是一次嚴重卡頓BigJank)

a) 當前幀耗時>前三幀平均耗時2倍。
b) 當前幀耗時>三幀電影幀耗時(1000ms/24*3=125ms)。

BigJank:1秒內嚴重滯后的次數

Jank(/10min):平均每10分鍾卡頓次數

BigJank(/10min):平均每10分鍾嚴重卡頓次數PerfDog Stutter測試過程中,卡頓時長的占比。Stutter(卡頓率)=卡頓市場/總時長

 

FTime:

名稱說明FTime上下幀畫面顯示時間間隔,即認為幀耗時Avg(FTime)平均幀耗時Delta(FTime)增量耗時(平均每小時兩幀之間時間差>100ms的次數)

模塊5:

CPU Usage:CPU利用率官方講解

名稱說明Total CPU整機CPU使用率AppCPU進程CPU使用率CPU Clock各個CPU核心的未規划頻率和未規划使用率CPU Clock Normalized各個CPU核心的規划頻率和規划使用率

模塊六:

名稱說明MemoryPSS Memory
統計結果和Android Java API標准結果一致,與Meminfo也一致。注:部分三星機器系統修改了Meminfo底層統計方式,導致Meminfo與Java AP統計結果不一致,新出三星機器已修復)Swap Memory部分設備支持Swap功能,在啟用Swap功能后,系統會對PSS內存進行壓縮,Swap增加,PSS會相應減少,由於壓縮會占用CPU資源,同時相應會導致FPS降低Virtual Memory(VSS)VSS 虛擬耗用內存(包含共享庫占用的內存)Memory DetailNativePSS、GFX、GL、UnknownCTempCPU溫度
Battery Power(Current電流、Voltage電壓、Power功耗)
注:與儀器測試誤差<3%左右。
注:Sum(Battery)是耗電量。

模塊7:

選擇需要收集性能參數,默認已經選中了一些常用的

 

 

iOS平台(蘋果官方Xcode工具參數對齊。注:iOS系統對進程性能參數做嚴格限制,超過限制則會被系統kill)

  • ScreenShot(只支持USB模式,注:部分機型截圖影響性能)
  • FPS(1秒內游戲畫面或者應用界面真實平均刷新次數,俗稱幀率/FPS)
  1. Avg(FPS):平均幀率(一段時間內平均FPS)
  2. Var(FPS):幀率方差(一段時間內FPS方差)
  3. Drop(FPS):降幀次數(平均每小時相鄰兩個FPS點下降大於8幀的次數)
  • Jank(1s內卡頓次數。iOS9.1以下系統暫時不支持。類似Android的Jank卡頓和iOS的FramePacing平滑度統計原理。幀率FPS高並不能反映流暢或不卡頓。比如:FPS為50幀,前200ms渲染一幀,后800ms渲染49幀,雖然幀率50,但依然覺得非常卡頓。同時幀率FPS低,並不代表卡頓,比如無卡頓時均勻FPS為15幀。所以平均幀率FPS與卡頓無任何直接關系)

  參考:https://bbs.perfdog.qq.com/article-detail.html?id=6

  PerfDog Jank計算方法:

  1.同時滿足以下兩條件,則認為是一次卡頓Jank.

    a)當前幀耗時>前三幀平均耗時2倍。

    b)當前幀耗時>兩幀電影幀耗時(1000ms/24*2=84ms)。

  2.同時滿足兩條件,則認為是一次嚴重卡頓BigJank.

    a)當前幀耗時>前三幀平均耗時2倍。

    b)當前幀耗時>三幀電影幀耗時(1000ms/24*3=125ms)。

    1)BigJank:1s內嚴重卡頓次數

    2)Jank(/10min):平均每10分鍾卡頓次數。

    3)BigJank(/10min):平均每10分鍾嚴重卡頓次數

  • Stutter(測試過程中,卡頓時長的占比)
  • FTime(上下幀畫面顯示時間間隔,即認為幀耗時,iOS9.1以下系統暫時不支持)

    1)Avg(FTime):平均幀耗時

    2)Delta(FTime):增量耗時(平均每小時兩幀之間時間差>100ms的次數)

  • CPU Usage(TotalCPU表示整機CPU使用率,AppCPU表示進程CPU使用率,統計結果和Xcode一致,PerfDog使用率=Xcode使用率/核心數。備注:iOS平台CPU Usage是未規范化CPU使用率,請參考https://bbs.perfdog.qq.com/detail-146.html)
  • Memory (是統計FootPrint,注:OOM與FootPrint有關,與系統、機型無關。只與RAM有關,如1G內存機器。FootPrint超過650MB,引發OOM)。注:PerfDog暫時在iOS9、10系統無法獲取,其他版本ok。后續版本增加。如做性能測試,建議升級iOS系統版本
  • Xcode Memory (XCode Debug gauges統計方式即XCode Memory)。注:iOS9、10系統暫時無法獲取,其他版本ok。后續版本增加。如做性能測試,建議升級iOS系統版本
  • Real Memory(Xcode Instrument統計方式即Real Memory,實際占用物理內存。注:物理內存系統策略有關,衡量內存指標時不會關注,但是它有助於分析定位整體性能問題。比如:footprint沒有降低,說明應用沒有釋放內存,但是real memory卻降低了,說明系統對內存做了壓縮。由於壓縮會占用CPU資源,同時相應會導致FPS降低)
  • Virtual Memory(虛擬內存)
  • Available Memory(整機可用剩余內存)
  • Wakeups(線程喚醒次數。注:超過150進程很大可能會被系統kill。a sleep/wake cycle on each thread per second,Exceeding limit of 150 wakeups per second over 300 seconds,特別是iOS13.2悶殺后台進程事件,建議重點關注)
  • CSwitch(上下文切換測試。注:單核超過14000進程會被系統Kill。Context Switch Limit 14000(Core/Second)
  • GPU Utilization
  1. Render:渲染器利用率(像素着色處理階段,若占比高,說明是PS階段出現瓶頸,shader過於復雜或紋理大小、采樣復雜等)
  2. Tiler: Tiler利用率(頂點着色處理階段,若占比高,說明是VS階段出現瓶頸,頂點數太多等原因)
  3. Device:設備利用率(整體GPU利用率)
  • Network(Recv/Send,測試目標進程流量,統計結果合Xcode一致)(注:USB測試模式下是app的,WiFi測試模式下可能是整機可能是app
  •  BTemp(電池溫度)
  • Battery Power(僅WIFI模式,整機實時Current電流、Voltage電壓、Power功耗)(注:20s獲取一次,目前最精准的統計方式,結果和Battery life結果一致,支持所有iOS機型)

注:Sum(Battery)是耗電量。

  • Energy Usage(即為Xcode Energy Impact。監控應用使用的能耗情況(包括CPU、GPU、NetWork、Location、Display (iPhone X only)、Overhead)。(注:和Xcode Energy Impact結果一致。有線模式下測試,支持iOS9及以上系統。Total Energy<=270為Low,270<Total Energy<=1000為High,Total Energy>1000為Very High)。

  參考:https://help.apple.com/xcode/mac/11.0/index.html?localePath=en.lproj#/devf7f7c5fcd

  • Log日志采集(WIFI模式下,不支持Log收集)

Android平台

  • ScreenShot(只支持USB模式,注:部分機型截圖影響性能)
  • FPS(1秒內游戲畫面或者應用界面真實平均刷新次數,俗稱幀率/FPS)
  1. Avg(FPS):平均幀率(一段時間內平均FPS)
  2. Var(FPS):幀率方差(一段時間內FPS方差)
  3. Drop(FPS):降幀次數(平均每小時相鄰兩個FPS點下降大於8幀的次數)

  備注:高階FPS功能-Android窗口與FPS

   請參考https://bbs.perfdog.qq.com/?m=app&c=detail&a=index&id=201

  • InterFrame(部分機型具有動態補幀/插幀技術,此參數可真實反映1秒內插入的幀數) 
  • Jank(1S內卡頓次數。解釋說明如iOS平台說明)
  1. BigJank:1s內嚴重卡頓次數
  2. Jank(/10分鍾):平均每10分鍾卡頓次數。
  3.  BigJank(/10分鍾):平均每10分鍾嚴重卡頓次數
  • Stutter(測試過程中,卡頓時長的占比)
  • FTime(上下幀畫面顯示時間間隔,即認為幀耗時)
  1. Avg(FTime):平均幀耗時
  2. Delta(FTime):增量耗時(平均每小時兩幀之間時間差>100ms的次數)
  • CPU Usage(傳統CPU利用率,也叫未規范化CPU利用率,TotalCPU表示整機未規范化CPU使用率,AppCPU表示進程未規范化CPU使用率。備注:統計結果和Android Studio Profiler一致。具體參考https://bbs.perfdog.qq.com/detail-146.html)
  • CPU Usage (Normalized)(規范化CPU利用率,TotalCPU表示整機規范化CPU使用率,AppCPU表示進程規范化CPU使用率。備注:建議參考規范化CPU利用率,性能參考更精准。具體參考https://bbs.perfdog.qq.com/detail-146.html)
  • CPU Clock(各個CPU核心的未規范化頻率和未規范化使用率)
  • Memory (PSS Memory,統計結果和Android Java API標准結果一致,與Meminfo也一致。注:部分三星機器系統修改了Meminfo底層統計方式,導致Meminfo與Java AP統計結果不一致,新出三星機器已修復)
  • Swap Memory (Swap Memory,部分設備支持Swap功能,在啟用Swap功能后,系統會對PSS內存進行壓縮,Swap增加,PSS會相應減少,由於壓縮會占用CPU資源,同時相應會導致FPS降低)
  • Virtual Memory(VSS)
  • Available Memory(整機可用剩余內存)
  • Memory Detail(NativePSS、GFX、GL、Unknown)

  注:在極限測試情況下,例如開啟游戲超高幀率,建議不要勾選收集Memory Usage和Memory Detail,因為部分機型會有性能損耗。

  1. Non-fragment:非片段着色器(頂點着色器,細分着色器,計算着色器)耗費的GPU時間占渲染耗費的GPU時間的比例。
  2.  Fragment:片段着色器耗費的GPU時間占渲染耗費的GPU時間的比例。
  • Mali Memory & Bus Bandwidth(僅支持Mali芯片GPU)
  1. L2Load/Store:Load/Store單元讀取L2內存的實際帶寬 (包括頂點緩存,原子,圖像數據)。
  2. L2Texture:Texture單元讀取L2內存的實際帶寬 (紋理采樣)。
  3. Bus Read:定義GPU到DRAM或者GPU外部的系統內存的實際讀帶寬。
  4. Bus Write:定義GPU到DRAM或者GPU外部的系統內存的實際寫帶寬。
  • Mali Pixels Info(僅支持Mali芯片GPU)
  1. OverDraw:表示每個像素由多少個片段分層組成,通常用於表示像素被重復繪制的次數。
  2. PixelsThroughput:表示每個被渲染的像素耗費的GPU的時鍾的數量。

  注:更多GPU信息說明,請參考:https://bbs.perfdog.qq.com/article-detail.html?id=72

  • Network(Recv/Send,測試目標進程流量)注:USB/WiFi測試模式下均為APP數據
  • CTemp(CPU溫度)
  • Battery Power(僅WIFI模式,Current電流、Voltage電壓、Power功耗)(注:與儀器測試誤差<3%左右)。注1:Sum(Battery)是耗電量。注2:對於已經兼容的雙電機型,可參考:https://bbs.perfdog.qq.com/detail-340.html,未兼容設備可以電流x2進行容錯。
  • Log日志采集(WIFI模式下,不支持Log收集)

 六、測試步驟

1.打開該軟件並使用數據線連接手機,選擇要測試的手機設備

 

 2.點擊右下角“+”,在PerfDog上勾選好性能測試需要的參數

 

 3.在PerfDog上選好需要進行測試的APP,並在手機上打開該APP

 

 4.(待程序趨於穩定狀態開始錄制,一般等待2分鍾)在PerfDog上點擊開始進行性能錄制

 

 5.結束測試

可以在保存excel文件的路徑里看到測試的數據

也可以在雲端看到自己測試的數據(性能數據同步上傳到了PerfDog雲端web看板)進入雲端:點擊右上角“雲”icon,登錄TAPD,進入雲端。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM