演講嘉賓 | 劉 洋
回顧整理 | 廖 濤
排版校對(duì) | 李萍萍
嘉賓介紹
劉洋,江蘇潤(rùn)和軟件股份有限公司副總裁,聚焦芯片設(shè)計(jì)及底層軟件、操作系統(tǒng)移植及核心算法的優(yōu)化與適配,潤(rùn)和軟件芯片業(yè)務(wù)創(chuàng)立人,潤(rùn)和芯片全棧解決方案平臺(tái)HiHope發(fā)起人,帶領(lǐng)公司進(jìn)軍國(guó)際芯片領(lǐng)域并成為ARM生態(tài)圈Linaro重要合作伙伴。OpenHarmony項(xiàng)目群工作委員會(huì)成員,OpenHarmony Dev-Board SIG(開(kāi)發(fā)板興趣組)創(chuàng)立人及組長(zhǎng)。
視頻回顧
打開(kāi)嗶哩嗶哩APP,觀看更清晰視頻
正文內(nèi)容
性能調(diào)優(yōu)即調(diào)節(jié)操作系統(tǒng)、硬件以及應(yīng)用三者間的關(guān)系,實(shí)現(xiàn)整個(gè)系統(tǒng)的性能最大化,使其滿足現(xiàn)有的業(yè)務(wù)需求。性能優(yōu)化是軟件開(kāi)發(fā)中最重要的工作之一,一個(gè)好的性能調(diào)優(yōu)工具可以提升開(kāi)發(fā)者的開(kāi)發(fā)質(zhì)量和效率。OpenHarmony上如何進(jìn)行性能調(diào)優(yōu),有哪些高效易用的性能調(diào)優(yōu)工具?潤(rùn)和軟件副總裁劉洋在第二屆OpenHarmony技術(shù)大會(huì)上進(jìn)行了精彩分享。
01
Smartperf-Host
OpenHarmony性能調(diào)優(yōu)工具“Smartperf-Host”是一款深入挖掘數(shù)據(jù)、細(xì)粒度地展示數(shù)據(jù)的性能功耗調(diào)優(yōu)工具,為開(kāi)發(fā)者提供了一套性能調(diào)優(yōu)平臺(tái),支持了對(duì)CPU調(diào)度、頻點(diǎn)、進(jìn)程線程時(shí)間片、堆內(nèi)存、幀率等數(shù)據(jù)進(jìn)行采集和展示。該組件整體分為設(shè)備端和PC端兩部分,設(shè)備端和PC端基于gRPC通信框架進(jìn)行數(shù)據(jù)交互。其中,(1)設(shè)備端內(nèi)部分為應(yīng)用程序內(nèi)嵌組件、命令行工具、性能調(diào)優(yōu)服務(wù)、性能調(diào)優(yōu)插件集合、部分系統(tǒng)工具及部分系統(tǒng)內(nèi)核等模塊;(2)PC端以Smartperf-Host網(wǎng)站的形式進(jìn)行發(fā)布,內(nèi)部分為T(mén)race Streamer數(shù)據(jù)解析、SQLite數(shù)據(jù)存儲(chǔ)、hdc設(shè)備管理、數(shù)據(jù)導(dǎo)入、UI繪制、數(shù)據(jù)分析等模塊。
02
配置抓取
Smartperf-Host工具端側(cè)抓取所依賴(lài)的組件已原生預(yù)置在OpenHarmony系統(tǒng)中,在需要使用時(shí),可通過(guò)網(wǎng)頁(yè)基于Hdc設(shè)備管理進(jìn)行連接,支持根據(jù)業(yè)務(wù)進(jìn)行配置設(shè)定,業(yè)務(wù)范圍包括CPU調(diào)優(yōu)、進(jìn)程線程調(diào)度分析調(diào)優(yōu)、內(nèi)存調(diào)優(yōu)等。完成設(shè)定后,可進(jìn)行在線直接抓取業(yè)務(wù)Trace,也可以選擇命令行進(jìn)行抓取。抓取結(jié)束后,即可通過(guò)網(wǎng)頁(yè)進(jìn)行業(yè)務(wù)分析解決問(wèn)題。
03
界面展示
Smartperf-Host工具的菜單區(qū)域包括文件導(dǎo)入、配置、下載、Sql查詢(xún)、在線文檔等。各區(qū)域顯示信息如下:
時(shí)間軸區(qū)域以顏色深淺表示CPU的使用負(fù)載情況
泳道圖區(qū)域包括CPU區(qū)域和進(jìn)程線程區(qū)域:CPU區(qū)域包括負(fù)載展示、CPU時(shí)間片展示、頻點(diǎn)展示等信息;進(jìn)程線程區(qū)域包括進(jìn)程、線程、調(diào)用棧等信息
Tab顯示區(qū)域針對(duì)不同業(yè)務(wù)的框選或點(diǎn)選進(jìn)行數(shù)據(jù)展示
04
功能介紹
CPU調(diào)優(yōu):CPU調(diào)優(yōu)包括CPU運(yùn)行狀態(tài)、CPU頻率信息、CPU工作狀態(tài)信息、軟硬終端信息等性能功耗調(diào)優(yōu),展示方式為泳道圖,支持圖形用戶(hù)界面GUI操作、分析數(shù)據(jù)。
圖中各區(qū)域詳情:(1)CPU運(yùn)行狀態(tài):顏色區(qū)分各進(jìn)程、點(diǎn)擊Slice顯示CPU使用詳情、支持CPU喚醒關(guān)系信息展示、支持CPU喚醒跳轉(zhuǎn)功能;(2)CPU頻點(diǎn):基于時(shí)間軸頻點(diǎn)變化展示、點(diǎn)擊查看當(dāng)前時(shí)間點(diǎn)頻點(diǎn)信息、框選查看選擇區(qū)域內(nèi)頻點(diǎn)信息;(3)CPU State:基于時(shí)間軸顯示State的變化,0”表示“工作中”,“1”、“2”、“3”表示“不在工作狀態(tài)”;點(diǎn)擊查看當(dāng)前時(shí)間點(diǎn)State信息、框選查看選擇區(qū)域內(nèi)State信息;(4)查看CPU統(tǒng)計(jì)信息:框選CPU Slice,以不同維度進(jìn)行分析;以線程維度分析、以進(jìn)程維度分析、CPU Usage排名、線程切換次數(shù)、各狀態(tài)詳情。
進(jìn)程和線程調(diào)優(yōu):
查看到系統(tǒng)級(jí)所有進(jìn)程級(jí)線程信息;
展開(kāi)泳道圖,查看對(duì)應(yīng)進(jìn)程下線程信息,包括線程狀態(tài)及各線程的調(diào)用棧;
框選一定區(qū)域后,可查看到框選時(shí)間范圍內(nèi)的線程狀態(tài),各線程在CPU上的使用占比等信息;
點(diǎn)擊線程時(shí)間片,可查看當(dāng)前線程的狀態(tài),包括開(kāi)始時(shí)間,持續(xù)時(shí)長(zhǎng),當(dāng)前運(yùn)行在哪個(gè)CPU上,優(yōu)先等級(jí),所屬進(jìn)程,上線文關(guān)系,喚醒關(guān)系等;
點(diǎn)擊調(diào)用棧時(shí)間片信息,可查看當(dāng)前調(diào)用棧的名稱(chēng),開(kāi)始時(shí)間,持續(xù)時(shí)間及調(diào)用棧深度。
內(nèi)存調(diào)優(yōu):
泳道圖展示malloc和mmap分配內(nèi)存總量及趨勢(shì)圖;
根據(jù)框選區(qū)間統(tǒng)計(jì)各類(lèi)型內(nèi)存信息和占比;
根據(jù)事件類(lèi)型計(jì)算其占比及size大?。?/p>
以火焰圖的形式展示調(diào)用棧信息;
展示內(nèi)存單次分配信息,包括調(diào)用的函數(shù)庫(kù),方法等;
可根據(jù)業(yè)務(wù)要求標(biāo)記時(shí)間區(qū)間,計(jì)算區(qū)間內(nèi)數(shù)據(jù)變化信息。
05
調(diào)優(yōu)案例介紹
CPU調(diào)度分析
場(chǎng)景描述:作為開(kāi)發(fā)者,每次跟蹤C(jī)PU調(diào)度關(guān)系是一件非常痛苦且耗時(shí)的事情,期望有工具能快速查看CPU喚醒關(guān)系信息;
問(wèn)題分析:通過(guò)喚醒關(guān)系樹(shù)一鍵顯示功能,幫助開(kāi)發(fā)者快速直觀的顯示各時(shí)間點(diǎn)的CPU喚醒關(guān)系,減少了開(kāi)發(fā)者通過(guò)常規(guī)文本查找的工作量,切實(shí)幫助到了開(kāi)發(fā)者。
內(nèi)存泄漏分析
場(chǎng)景描述:應(yīng)用出現(xiàn)內(nèi)存泄漏現(xiàn)象,需要定位內(nèi)存泄漏點(diǎn);
問(wèn)題分析:通過(guò)問(wèn)題Trace,查看內(nèi)存的占比,利用工具從內(nèi)存類(lèi)型,到調(diào)用庫(kù),到具體方法的調(diào)用,逐層分析,確認(rèn)內(nèi)存泄漏原因,通過(guò)改進(jìn)解決應(yīng)用問(wèn)題。
卡頓丟幀分析
場(chǎng)景描述:進(jìn)入Launcher后界面出現(xiàn)卡頓現(xiàn)象;
問(wèn)題分析:通過(guò)工具進(jìn)行分析,查看到Render Service在一段時(shí)間內(nèi)出現(xiàn)實(shí)際幀處理慢的現(xiàn)象,導(dǎo)致后續(xù)幀處理大范圍處理延時(shí),導(dǎo)致整體的卡頓現(xiàn)象。
播放性能問(wèn)題分析
場(chǎng)景描述:OpenHarmony 3.2版本以后媒體播放的CPU變高了,需要定位問(wèn)題原因,并優(yōu)化。
問(wèn)題分析過(guò)程: (1)通過(guò)工具進(jìn)行分析,導(dǎo)致問(wèn)題的直接原因在于GStreamer的“vqueue:src 1971”線程一直在占用CPU,需要針對(duì)該線程做進(jìn)一步的分析;
(2)通過(guò)對(duì)源代碼打點(diǎn)定位分析,發(fā)現(xiàn)GStreamer在邏輯上只負(fù)責(zé)送顯,沒(méi)有找到問(wèn)題根因,需要再通過(guò)工具定位Trace內(nèi)部邏輯;
(3)通過(guò)OpenHarmony Hiperf工具火焰圖功能抓取Trace,分析Trace定位問(wèn)題,檢查發(fā)現(xiàn)是“GST_SYSTEM_CLOCK_ENTRY_WAIT_UNTIL”返回不符合預(yù)期,根因是內(nèi)核的futex調(diào)用走的是32位的接口,而3568默認(rèn)為64位內(nèi)核+32位的 UserSpace,從而導(dǎo)致該接口未按照實(shí)際給的超時(shí)等待,總是提前返回;
(4)因此,解決該問(wèn)題需要通過(guò)修改相關(guān)定義,使GSteamer直接走系統(tǒng)調(diào)用接口。
06
工具獲取
代碼路徑: | https://gitee.com/openharmony/developtools_profiler/tree/master/host/smartperf |
使用指導(dǎo): | https://gitee.com/openharmony/developtools_smartperf_host/tree/master/ide/src/doc/md |
編譯指導(dǎo): | https://gitee.com/openharmony/developtools_profiler/tree/master/host/smartperf/ide |
https://gitee.com/openharmony/developtools_profiler/tree/master/host/smartperf/trace_streamer |
E N D
關(guān)注我們,獲取更多精彩。
審核編輯 黃宇
-
OpenHarmony
+關(guān)注
關(guān)注
25文章
3641瀏覽量
16064
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論