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