Android CPU占用高問(wèn)題分析


?最近負(fù)責(zé)的項(xiàng)目中,有一定制客戶頻繁的抱怨設(shè)備在安裝一些客戶的app組件后,云端采集到的CPU占用率信息一直維持在78%以上卿叽,甚至還會(huì)出現(xiàn)90%的情況床佳,與此同時(shí)滋早,用戶也反映了卡頓、耗電快等現(xiàn)象砌们。
?為了解決客戶這個(gè)痛點(diǎn)問(wèn)題杆麸,拿了一臺(tái)復(fù)現(xiàn)設(shè)備來(lái)分析此CPU高的問(wèn)題,以下是分析思路和過(guò)程浪感,mark一下昔头。


  • 問(wèn)題現(xiàn)象

?設(shè)備在刷入原生軟件版本時(shí),后臺(tái)收集到的CPU占用信息大約在27%影兽,正辰腋現(xiàn)象。
?而在客戶定制版本上峻堰,CPU至少在78%讹开,對(duì)比兩個(gè)版本區(qū)別,發(fā)現(xiàn)定制客戶在原生軟件版本上多安裝了6個(gè)APP組件,此類app屬于客戶自研app,重啟機(jī)器靜置5分鐘后,觀察CPU信息,占用率沒(méi)有降低,對(duì)這么高cpu占用率嚇到了捐名。

  • CPU問(wèn)題分析過(guò)程

1. 抓Log分析

?在客戶上報(bào)問(wèn)題后,不管反饋的問(wèn)題是什么(重啟\crash\卡頓等),一旦設(shè)備有問(wèn)題出現(xiàn),對(duì)于研發(fā)人員來(lái)說(shuō),在了解到問(wèn)題現(xiàn)象后,接下來(lái)就是需要一份Log,不能無(wú)的放矢旦万。

選區(qū)_076.png

?上圖Log信息,發(fā)現(xiàn)后臺(tái)一直在重復(fù)打印如上信息,第一直覺(jué)告訴我,會(huì)不會(huì)截圖中l(wèi)og頻繁輸出導(dǎo)致cpu居高不下的。
?于是乎,根據(jù)這個(gè)懷疑點(diǎn),首先將以上日志信息注釋掉,不讓其打印出來(lái),然后對(duì)比一下cpu前后使用情況,事實(shí)證明我的直覺(jué)一向不準(zhǔn),cpu使用率沒(méi)有什么改善镶蹋。

2. Android Profiler工具,實(shí)時(shí)說(shuō)明CPU使用情況

?Android Profiler這個(gè)工具就不多說(shuō)了成艘,簡(jiǎn)而言之,就是Android Studio自帶的分析性能(包括cpu/memory/network)工具贺归。
?將現(xiàn)場(chǎng)設(shè)備連上USB后淆两,用Android Profiler工具查看CPU使用情況,發(fā)現(xiàn)system_process進(jìn)程的cpu一直維持在80%左右牧氮,如下圖:

system_cpu.png

?利用工具對(duì)system_server進(jìn)程單獨(dú)采樣一段時(shí)間琼腔,具體看看這段時(shí)間內(nèi)system_server進(jìn)程在進(jìn)行什么樣的操作,采樣信息如圖所示:

binder_1.png
binder_2.png

?兩張圖結(jié)合起來(lái)可以看出,system進(jìn)程中,十幾個(gè)binder線程都在輪詢工作,即占用cpu,而正是這些線程不斷執(zhí)行任務(wù),才導(dǎo)致system整個(gè)進(jìn)程cpu占用高,那么這些binder線程具體在進(jìn)行什么操作呢,還需要看單個(gè)線程的堆棧信息,如圖所示(這里只貼出其中一個(gè)線程的堆棧踱葛,因?yàn)槠渌€程都是類似的堆棧信息):

binder_trace.png

?根據(jù)堆棧調(diào)用信息丹莲,system進(jìn)程在不斷地dump meminfo信息,多個(gè)binder線程不斷被請(qǐng)求dump meminfo信息尸诽,這才引起了cpu一直占用高甥材。
?竟然binder線程被請(qǐng)求dump meminfo信息,那么客戶端是哪些進(jìn)程呢,在IPC中,服務(wù)端被調(diào)用,肯定是有個(gè)對(duì)端--客戶進(jìn)程發(fā)起請(qǐng)求的。
?所以還需要排查是哪個(gè)客戶進(jìn)程頻繁發(fā)起服務(wù)請(qǐng)求的性含,查看system進(jìn)程的binder調(diào)用情況洲赵,如下圖所示:

client&&server_pid.png

?根據(jù)system進(jìn)程的binder請(qǐng)求信息,可以看到是進(jìn)程號(hào)為4886、5207叠萍、5006這幾個(gè)客戶端進(jìn)程不斷在請(qǐng)求獲取么meminfo內(nèi)存信息的芝发,而這幾個(gè)進(jìn)程號(hào)對(duì)應(yīng)的包名為:

client_pid.png

?這幾個(gè)應(yīng)用,正是客戶在設(shè)備上安裝的app苛谷,所以基本確認(rèn)是客戶app代碼不斷請(qǐng)求獲取meminfo內(nèi)存信息導(dǎo)致的辅鲸,需要優(yōu)化客戶app的代碼邏輯,不要不停的獲取內(nèi)存信息腹殿,這樣頻繁請(qǐng)求meminfo信息独悴,導(dǎo)致cpu負(fù)載很高,一直居高不下锣尉。

  • 問(wèn)題確認(rèn)

?為了再次確認(rèn)上述分析的原因刻炒,修改接口getMemoryInfo的邏輯,使其直接return返回自沧,不再真正地執(zhí)行dump meminfo內(nèi)存信息坟奥,重啟機(jī)器后,cpu占用直接降到40%暂幼,正如所料筏勒。

現(xiàn)場(chǎng) 未屏蔽 已屏蔽
CPU占用 80%以上 45%
  • 問(wèn)題總結(jié)

?有果比有因,需要具體分析到cpu占用高具體是在執(zhí)行什么操作旺嬉,打印出問(wèn)題進(jìn)程的堆棧信息,才能從代碼端解決問(wèn)題,找到root cause管行。

以上純屬個(gè)人分析這個(gè)問(wèn)題的記載!P跋薄捐顷!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市雨效,隨后出現(xiàn)的幾起案子迅涮,更是在濱河造成了極大的恐慌,老刑警劉巖徽龟,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叮姑,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡据悔,警方通過(guò)查閱死者的電腦和手機(jī)传透,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)极颓,“玉大人朱盐,你說(shuō)我怎么就攤上這事〔ぢ。” “怎么了兵琳?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵狂秘,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我躯肌,道長(zhǎng)者春,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任羡榴,我火速辦了婚禮碧查,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘校仑。我一直安慰自己,他們只是感情好传惠,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布迄沫。 她就那樣靜靜地躺著,像睡著了一般卦方。 火紅的嫁衣襯著肌膚如雪羊瘩。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,394評(píng)論 1 310
  • 那天盼砍,我揣著相機(jī)與錄音尘吗,去河邊找鬼。 笑死浇坐,一個(gè)胖子當(dāng)著我的面吹牛睬捶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播近刘,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼擒贸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了觉渴?” 一聲冷哼從身側(cè)響起介劫,我...
    開(kāi)封第一講書(shū)人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎案淋,沒(méi)想到半個(gè)月后座韵,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡踢京,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年誉碴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片漱挚。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡翔烁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出旨涝,到底是詐尸還是另有隱情蹬屹,我是刑警寧澤侣背,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站慨默,受9級(jí)特大地震影響贩耐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜厦取,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一潮太、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧虾攻,春花似錦铡买、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至漂坏,卻和暖如春景埃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背顶别。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工谷徙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人驯绎。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓完慧,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親条篷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子骗随,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • ANR問(wèn)題鸿染,相信是每位開(kāi)發(fā)日常都會(huì)遇到的問(wèn)題,對(duì)于這類問(wèn)題的分析乞巧,按照官方的推薦涨椒,或網(wǎng)絡(luò)博客的總結(jié)思路能解決一定的...
    tiger桂閱讀 17,943評(píng)論 5 28
  • 1:InputChannel提供函數(shù)創(chuàng)建底層的Pipe對(duì)象 2: 1)客戶端需要新建窗口 2)new ViewRo...
    自由人是工程師閱讀 5,322評(píng)論 0 18
  • 面試必背 會(huì)舍棄、總結(jié)概括——根據(jù)我這些年面試和看面試題搜集過(guò)來(lái)的知識(shí)點(diǎn)匯總而來(lái) 建議根據(jù)我的寫(xiě)的面試應(yīng)對(duì)思路中的...
    luoyangzk閱讀 6,760評(píng)論 6 173
  • PPT營(yíng)銷力雙周D24(2018-03-16)會(huì)議安排: 時(shí)間:2018-03-16 6-7點(diǎn) 主持人 : 于佳 ...
    Leena琴閱讀 238評(píng)論 0 0
  • 面點(diǎn)師傅早上到現(xiàn)在飯都沒(méi)吃:炸了鍋又一鍋……客人好早排隊(duì)來(lái)領(lǐng)美食……讓您吃到最營(yíng)養(yǎng)健康美食绽媒!
    王玉蓮_7c09閱讀 314評(píng)論 0 0