sponsored links

移動端效能專項測試之 CPU

指標背景

很多場景下我們去使用 App,可能會碰到手機會出現發熱發燙的現象。這是因為 CPU 使用率過高、CPU 過於繁忙,會使得整個系統無法響應使用者,整體效能降低,使用者體驗變得相當差,也容易引起 ANR 等等一系列問題。
Android 效能指標 CPU 主要關注兩點:

  • CPU 總體使用率
  • 應用程式 CPU 佔用率

指標值獲取

直接上乾貨,獲取 App CPU 指標值的幾種不同方式

  • 讀取 Linux proc 檔案系統(精確、方便自動化整合)
  • 使用外部第三方工具來輔助測試,比如:騰訊 GT,網易 Emagee 等(其實這些工具的原理就是基於呼叫 Android 系統底層的 API 完成),掌握 adb 或者第三方工具獲取方法都可以。(精確,易獲取,推薦)
  • Linux top 命令(有誤差,易獲取)

proc 檔案獲取方式

/proc 檔案系統是一個偽檔案系統,它只存在記憶體當中,而不佔用外存空間。它以檔案系統的方式為核心與程序提供通訊的介面。使用者和應用程式可以透過/proc 得到系統的資訊,並可以改變核心的某些引數。由於系統的資訊,如程序,是動態改變的,所以使用者或應用程式讀取/proc 目錄中的檔案時,/proc 檔案系統是動態從系統核心讀出所需資訊並提交的。
我們關注的安卓效能指標 CPU 總體使用率和應用程式 CPU 佔用率主要與兩個 proc 檔案相關,分別是/proc/stat 和/proc/程序 id/stat 檔案。。
透過 adb shell 進入到手機內部 shell 模式,再透過 cat /proc/stat 檢視結果如下:

移動端效能專項測試之 CPU

前面三行 CPU cpu0 cpu1 是我們需要關注的重點,cpu0、cpu1 表示當前 CPU 的核心(雙核),CPU 為總的 Jiffies,這裡引入了 Jiffies(時間片)的概念,Jiffies 的介紹如下:

Jiffies 為 Linux 核心變數,是一個 unsigned long 型別的變數,它被用來記錄系統自開機以來,已經過了多少 tick。每發生一次 timer interrupt,Jiffies 變數會被加 1

而上面每一列的數值含義如下:
user :從系統啟動開始累計到當前時刻,使用者態的 jiffies ,不包含 nice 值為負程序;
nice :從系統啟動開始累計到當前時刻,nice 值為負的程序所佔用的 jiffies;
system :從系統啟動開始累計到當前時刻,系統態的 jiffies;
idle :從系統啟動開始累計到當前時刻,除硬碟 IO 等待時間以外其它等待的 jiffies;
iowait : 從系統啟動開始累計到當前時刻,硬碟 IO 等待的 jiffies;
irq : 從系統啟動開始累計到當前時刻,硬中斷的 jiffies;
softirq :從系統啟動開始累計到當前時刻,軟中斷的 jiffies。
總的 Jiffies 就是上面所有項加起來的總和。因此我們計算一段時間的 CPU 佔用率的時候就可以使用:
total=user+system+nice+idle+iowait+irq+softirq
*CPU usage=[(user_end +sys_end+nice_end) - (user_begin + sys_begin+nice_begin)]/(total_end - total_begin)100

上述方法統計的是當前系統所有程序的 CPU 總和使用率
如果我們要統計某個 App 的使用率可以進入到/proc/程序 id/stat 目錄,其中就有包含某程序的 CPU 資訊
首先,我們需要查詢到 App 的程序 ID,以檸檬班 App 舉例

移動端效能專項測試之 CPU

其中的程序 ID 為 1228,再查詢 stat 檔案資訊:

在第 14 行、15 行有記錄當前程序的 Jiffies 資訊
utime=448 該任務在使用者態執行的時間,單位為 jiffies
stime=2380 該任務在核心態執行的時間,單位為 jiffies
所以當前程序的 Jiffies 計算方式為 utime+stime
透過 shell 指令碼獲取的方式:
cat /proc/程序 id/stat | awk -F " " '{print $14,$15}'
要計算出一段時間內該程序的 CPU 使用率資訊即可透過:
utime+stime(當前時間點)-utime+stime(舊時間點)/ total CPU Jiffies

騰訊 GT 工具

不熟悉的同學可以進入到官網先去了解一番 https://gt.qq.com/,這裡貼出官方的介紹:

GT(隨身調)是 APP 的隨身調測平臺,它是直接執行在手機上的“整合調測環境”(IDTE, Integrated Debug Environment)。利用 GT,僅憑一部手機,無需連線電腦,您即可對 APP 進行快速的效能測試(CPU、記憶體、流量、電量、幀率/流暢度等等)、開發日誌的檢視、Crash 日誌檢視、網路資料包的抓取、APP 內部引數的除錯、真機程式碼耗時統計等。

使用 GT 獲取 Jiffies 指標步驟如下

移動端效能專項測試之 CPU

測試完畢之後可以儲存為 CSV 格式的資料,用 Excel 工具開啟檢視即可

top 命令獲取 CPU 使用率

top 命令是 Linux 下常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用狀況,類似於 Windows 的任務管理器。top 是一個動態顯示過程,即可以透過使用者按鍵來不斷重新整理當前狀態。如果在前臺執行該命令,它將獨佔前臺,直到使用者終止該程式為止。top 命令提供了實時的對系統處理器的狀態監視。
使用方式:
可檢視佔用 CPU 最高的前 10 個程式(-t 顯示程序名稱,-s 按指定行排序,-n 在退出前重新整理幾次,-d 重新整理間隔,-m 顯示最大數量):top -m 10 -s CPU
如果你想篩選出你自己的應用的話可以用下面這一命令:
adb shell top -n 1| grep PackageName

問題分析及建議

如果 APP 某場景進行操作時出現發燙、卡頓、ANR 現象時,可以懷疑出現 CPU 問題,一般解決思路如下:
如果已經導致 ANR, 則去 logcat 檔案裡面搜尋"ANR in" ,以及 adb pull 拉取 trace 檔案。
沒有導致 ANR 則基於以上方法獲取到的 CPU 佔用率,如果某場景的 CPU 佔用率走勢異常、峰值存在異常、均值大於基線,則可以利用 traceview 檢視分析 Trace 檔案,或者使用 Android studio 裡面的 Android Monitor 根據 Monitor 中的 CPU 可以看出目前 CPU 明細使用,由開發負責定位解決。

分類: 娛樂
時間: 2022-02-08

相關文章

杜江霍思燕逛街被拍!7歲兒子抱玩具不撒手,一旁小女孩十分搶鏡

杜江霍思燕逛街被拍!7歲兒子抱玩具不撒手,一旁小女孩十分搶鏡
近日,有網友在社交平臺上曬出偶遇杜江霍思燕夫妻兩人帶孩子現身的畫面,最近一段時間霍思燕跟杜江兩人的工作都不算多,每一次被大家偶遇時,基本上都是在兩人的私人行程. 畫面中,大家也看到了嗯哼的身影,今年7 ...

1986年,西班牙2萬升硫酸罐車追尾傾瀉,車中10歲男孩神秘失蹤

1986年,西班牙2萬升硫酸罐車追尾傾瀉,車中10歲男孩神秘失蹤
1986年6月25日上午6:20,在西班牙首都馬德里北部塞拉山脈的一條公路上,一輛裝有2萬升硫酸的罐車在公路上突然加速超車,它撞壞了前方轎車的後視鏡,此後速度越來越快,達到了140公里每小時,又撞到了 ...

在冬奧會冰墩墩和奧運會熊貓晶晶之前,這隻熊貓最有名丨夜問

在冬奧會冰墩墩和奧運會熊貓晶晶之前,這隻熊貓最有名丨夜問
答案:A. 第十一屆亞運會於1990年9月22日至10月7日在中國北京舉行,這是中國第一次舉辦綜合性國際體育大賽,來自亞奧理事會成員的37個國家和地區的體育代表團的6578人參加了這屆亞運會.中國派出 ...

國乒後繼有人!鄧亞萍15歲兒子再奪冠軍,近10個月狂攬9塊獎牌

國乒後繼有人!鄧亞萍15歲兒子再奪冠軍,近10個月狂攬9塊獎牌
9月14日晚,前國乒"大魔王"鄧亞萍釋出社交動態,分享了兒子奪冠的訊息.這是最近舉行的北京市內中學生乒乓球賽,鄧亞萍15歲的兒子林瀚銘代表學校出戰團體賽,並幫助團隊奪得勝利.賽後, ...

郝劭文:3歲出道10歲片酬千萬,身家卻被父母敗光,只能打工還債

郝劭文:3歲出道10歲片酬千萬,身家卻被父母敗光,只能打工還債
你還記得他嗎?那個和釋小龍一唱一和的小胖子郝劭文,在90年代堪稱最紅童星,據說10歲時片酬就已經超過千萬,他的家庭也因此一度過上富足的生活.但是多年之後,媒體卻傳出"昔日童星如今落魄,打工度 ...

徐洪浩:一段婚姻一個孩子,娶小10歲嬌妻,孩子剛出生就參與拍戲

徐洪浩:一段婚姻一個孩子,娶小10歲嬌妻,孩子剛出生就參與拍戲
在演藝圈中有一對男女明星,他們在拍戲的時候喜歡演父女. 可是在現實生活中,看起來像父女的這對男女明星. 其實他們並不是父女,他們是一對非常恩愛的明星夫妻. 這一對讓人羨慕的明星夫妻.這一對早已成為演藝 ...

成龍同父異母的大哥:10歲被父親拋棄,73歲才見到成龍第一面

成龍同父異母的大哥:10歲被父親拋棄,73歲才見到成龍第一面
弟弟是國際巨星,哥哥卻是普通退休工人,過著清貧的日子,這有可能嗎?完全有可能,香港著名影視演員成龍和他的大哥房仕德,目前就是這種情況. 房仕德1940年出生,安徽蕪湖人,是成龍父親房道龍的長子,他還有 ...

迪拜71歲國王抱著孫兒孫女出鏡,眼神望向孫兒,龍鳳胎地位差別大

迪拜71歲國王抱著孫兒孫女出鏡,眼神望向孫兒,龍鳳胎地位差別大
今年5月,迪拜王儲哈曼丹迎來了龍鳳胎兒女,和王妃謝克哈分分合合,歷經十幾年有情人終成眷屬.隨著龍鳳胎的誕生,兩人之間的感情更穩固了. 哈曼丹出身高貴,擁有一張帥氣的臉龐和魁梧的身材,被稱為" ...

馬麗:27歲成名,36歲嫁小10歲丈夫,因一部電影與沈騰避嫌6年

馬麗:27歲成名,36歲嫁小10歲丈夫,因一部電影與沈騰避嫌6年
"馬冬梅!大爺" "馬什麼梅?" "馬冬梅!" "什麼冬梅?" "馬冬梅!" 這是開心麻花的第一部喜 ...

10歲柬埔寨公主真驚豔,倆公主來中國留學,比凱特女兒夏洛特還美

10歲柬埔寨公主真驚豔,倆公主來中國留學,比凱特女兒夏洛特還美
6歲的英國公主夏洛特從出生就被當做掌中明珠寵愛,而柬埔寨的小公主10歲就要進娛樂圈當演員討生活.真是同公主不同命,同一個世界,不同的人生. 這位早早開啟打工人生涯的小公主名叫諾羅敦·珍娜,對外宣稱是已 ...

貝克漢姆分享女兒美照宣佈喜訊,10歲小七獲得柔道比賽銀牌
10月10日,貝克漢姆分享一張女兒小七身穿柔道服的照片並配文:"銀牌,星期天,我的柔道明星".隨後,維多利亞在評論區中寫道:"哈珀,你是一個傳奇,我們為你自豪." ...

31歲兒子T臺首秀,周華健60歲妻子罕現身支援,滿頭白髮但氣質好

31歲兒子T臺首秀,周華健60歲妻子罕現身支援,滿頭白髮但氣質好
10月10日,根據臺媒的報道,某品牌舉辦了一場大型時裝秀,並邀請一眾名模走秀,產後復出的林可彤,吸引了不少人的注意. 曝光的現場照中,林可彤穿上了露肩拼接牛仔衫,配上獨特的妝容,造型酷勁.很久沒上臺的 ...

56歲伊麗莎白·赫莉穿露臍裝秀六塊腹肌,與19歲兒子同框似雙胞胎

56歲伊麗莎白·赫莉穿露臍裝秀六塊腹肌,與19歲兒子同框似雙胞胎
出生於英國漢普郡的<緋聞女孩>女星伊麗莎白·赫莉,雖已年過半百但風韻猶存. 作為一個炙手可熱的時尚達人,赫莉很喜歡在社交媒體展示自己的完美曲線,讓210萬粉絲為之傾倒. 據英國<每日 ...

10歲前,有這12個跡象,說明你把孩子養得很好

10歲前,有這12個跡象,說明你把孩子養得很好
作者 | 關山月 漫畫 | 紫菜飯糰 教育難嗎? 難. 沒有父母的准入門檻, 更沒有可以模仿的滿分答卷. 它需要我們每個人, 一以貫之的努力, 不得懈怠的人生, 每天的微小積累, 增加一點點機率, 就 ...

朱熹問買東西為何不叫“買南北”,學生們不解,10歲小孩一語道破

朱熹問買東西為何不叫“買南北”,學生們不解,10歲小孩一語道破
我們常說的買東西?不就是賣產品嗎?那為什麼人們常說"買東西",而不說"買南北"呢?宋朝大文學家朱熹也曾經問過這個問題,因為這個問題當時朱熹也比較困惑,無法解決, ...

李大釗結婚時剛10歲,妻子也只有15歲,兩人是怎麼過來的

李大釗結婚時剛10歲,妻子也只有15歲,兩人是怎麼過來的
1927年4月28日,偉大的無產階級革命家李大釗被反動軍閥殺害,年僅38歲. 李大釗從被捕到被殺,一共經歷了22天,在這22天裡,李大釗寫了一篇<獄中自述>,講述了自己的革命歷程. 在這篇 ...

看不出景甜大了宋祖兒10歲,同穿金色很富貴,一點都不顯老

看不出景甜大了宋祖兒10歲,同穿金色很富貴,一點都不顯老
服裝的顏色是很複雜的,不同的顏色,不同的色調,甚至是不同的面料,對於服裝的氣質都有很大的影響,如果想讓自己的氣場看著更加的高階華麗,一般人都會選擇亮晶晶的服裝,因為亮晶晶的設計不僅惹眼,還很貴氣. 尤 ...

遼寧神童張炘煬,10歲讀大學17歲當博士,向父母索要北京一套房

遼寧神童張炘煬,10歲讀大學17歲當博士,向父母索要北京一套房
2005年夏季,此時正處於高考時節. 一個瘦小的小朋友漸漸向著考場走去. 周圍等候的家長一臉震驚,這可是高考,而不是什麼小學考試. 直到小男孩掏出了自己的准考證,走進考場的時候. 家長們才略微接受了這 ...

10歲前“屈光儲備”對預防近視很有益

10歲前“屈光儲備”對預防近視很有益
圖@視覺中國 廣州日報訊 (全媒體記者翁淑賢 通訊員方寧.劉慶鈞)很多家長對孩子的視覺發育缺乏瞭解.眼科專家指出,其實兒童的視力不能一律以1.0(5.0)為正常視力.因為視覺發育與身體發育相伴,不同年 ...

情報奇才10歲入伍,是紅軍破譯電報高手,晚年因一時糊塗未授銜

情報奇才10歲入伍,是紅軍破譯電報高手,晚年因一時糊塗未授銜
我國曆史上湧現出了一批有勇有謀的英雄,他們或許在戰場上英勇殺敵,或許在二線為戰爭出謀劃策.他們不管以什麼樣的形式參與到戰爭之中,都為新中國的統一和解放做出了突出的貢獻. 有很多人年紀輕輕便加入到了抗爭 ...