一、淺談手機(jī)性能的可觀測(cè)性
1.概述
手機(jī)上的性能指標(biāo)是綜合的變化,由上圖可以看的出來(lái)手機(jī)更關(guān)注人跟機(jī)器的交互這,云系統(tǒng)則是比較關(guān)注機(jī)器跟機(jī)器的交互。
手機(jī)系統(tǒng)比較特別的地方在于資源都是比較受限,例如: 電量,性能…因此針對(duì)用戶(hù)體驗(yàn)是需要特別庖丁解牛來(lái)建立指標(biāo)。
指標(biāo)(METRIC) -業(yè)界有特定的體驗(yàn)度量模型,目標(biāo)是發(fā)現(xiàn)產(chǎn)品和服務(wù)中的問(wèn)題及理解使用者的行為和偏好。
性能體驗(yàn)度量是多層次,多個(gè)維度的,只用一項(xiàng)指標(biāo)去表征的所有性能特征是遠(yuǎn)遠(yuǎn)不夠的。
以上是幾個(gè)個(gè)常用指標(biāo),這些指標(biāo)常常是互相搭配的例如Andrid近年常用的GSM+HEART。度量模型圍繞用戶(hù)使用的旅程,識(shí)別關(guān)鍵體驗(yàn)路徑(KEP),為不同接觸點(diǎn)分解出不同的性能指標(biāo)。
2.性能追蹤
實(shí)際上如何構(gòu)建手機(jī)可觀測(cè)性,我們都會(huì)采取分層次拆解,由上圖可以看的出來(lái)藉助于Android/Linux系統(tǒng)的生態(tài)系已經(jīng)有不少工具可以用于追蹤系統(tǒng)的信息。
性能追蹤在手機(jī)裝置面臨的挑戰(zhàn):
1、低開(kāi)銷(xiāo):不會(huì)降低用戶(hù)的體驗(yàn),因?yàn)槭謾C(jī)資源是受限的所以如何有性的采集會(huì)是很大的考驗(yàn)。
2、不可接觸:開(kāi)發(fā)人員無(wú)法實(shí)時(shí)獲取使用者的故障第一現(xiàn)場(chǎng)信息,用戶(hù)很多操作行為都是不容易在現(xiàn),因此識(shí)別關(guān)鍵體驗(yàn)路徑會(huì)是開(kāi)發(fā)的過(guò)程之一。
3、偶發(fā)性:低概率,不易復(fù)現(xiàn)(Heisen berg Bug),對(duì)于第三方應(yīng)用跟系統(tǒng)交互或是用戶(hù)行為常常有偶發(fā)性不易在現(xiàn)的問(wèn)題需要準(zhǔn)確的追蹤機(jī)制輔助找到原因。
4、不可預(yù)見(jiàn):用已知模式分析未知問(wèn)題。
講師介紹了一些Android上常見(jiàn)的工具
?Systrace : 用于將設(shè)備活動(dòng)保存到跟蹤檔的Android 工具。
?cpu_profile : 在android平臺(tái)實(shí)現(xiàn)周期性采集調(diào)用棧。
?simpleperf : simpleperf是Anroid平臺(tái)的一套性能分析工具,功能大致與linux perf相似。
?nanotrace : 通過(guò)在虛擬機(jī)(包括解析器和編譯程序)中插樁,獲取從APK到framework層的執(zhí)行路徑的調(diào)用鏈和函數(shù)執(zhí)行時(shí)長(zhǎng)。
?objtrace : 動(dòng)態(tài)跟蹤函數(shù)參數(shù)值。
?blktrace : blktrace 結(jié)合btt可以統(tǒng)計(jì)一個(gè)IO是在調(diào)度隊(duì)列停留的時(shí)間長(zhǎng),還是在硬件上消耗的時(shí)間長(zhǎng)。
?Hitrace : 對(duì)于跨設(shè)備/進(jìn)程/線程的業(yè)務(wù)流程處理,通過(guò)相同的traceid在整個(gè)業(yè)務(wù)流程中傳遞,將調(diào)用層次、各種輸出信息關(guān)聯(lián)和展現(xiàn)。
3.可觀測(cè)性之Logging
上圖由上而下的拆解展示日志的重要性,首先我們需要了解用戶(hù)行為,關(guān)注用戶(hù)體驗(yàn)并記錄對(duì)應(yīng)的錯(cuò)誤日志,當(dāng)時(shí)系統(tǒng)狀態(tài)與硬件狀態(tài)用于改善用戶(hù)體驗(yàn)。
手機(jī)系統(tǒng)的日志系統(tǒng)時(shí)常需要整合第三方應(yīng)用,因?yàn)榈谌綉?yīng)用不開(kāi)源,管理日志上常常沒(méi)有足夠權(quán)限,還有手機(jī)儲(chǔ)存大小受限因此最終的日志系統(tǒng)方案都是朝可以匯整日志并更精準(zhǔn)建立模型為目標(biāo)。
總結(jié)以上幾點(diǎn)用戶(hù)體驗(yàn)是感性的,不單單只是數(shù)字因此講者認(rèn)科技應(yīng)該是有溫度的。
Q&A
Q : 是否有AI優(yōu)化思路?
A: 目前還在努力,有嘗試用AI分析用戶(hù)體驗(yàn)不過(guò)效果不明顯。目前比較多還是在做基礎(chǔ)體驗(yàn)度量。
Q : 跑分跟用戶(hù)體驗(yàn)怎么看?
A: 跑分不能直接當(dāng)用戶(hù)體驗(yàn)偵率,累積布局偏移可參考。
Q: nanotrace可否第三方插莊?
A: yes
Q : 是否能找到喚醒源?
A:可打開(kāi)irq,ipi中斷事件可以看到換醒源。
二、揭秘ARM架構(gòu)對(duì)Linux調(diào)測(cè)特性的支持
講師簡(jiǎn)介:張健, 現(xiàn)就職于北京大簡(jiǎn)技術(shù)有限公司, 14年ARM架構(gòu)和操作系統(tǒng)一線研發(fā)經(jīng)驗(yàn). 在北京, 柏林, 拉斯維加斯, 多地發(fā)表技術(shù)演講。
首先,本次分享從調(diào)試視角、性能影響兩個(gè)角度出發(fā),對(duì)調(diào)試特性進(jìn)行了宏觀的分類(lèi)。
1.調(diào)試類(lèi)型
調(diào)試包含兩個(gè)維度的特性:調(diào)試視角維度與性能影響維度。
1.調(diào)試視角維度
從調(diào)試視角維度出發(fā),調(diào)試分為external debug與self-hosted debug,前者包括openocd、kgdb、ftrace、perf等內(nèi)核調(diào)試基礎(chǔ)設(shè)施,后者則是通過(guò)JTAG、FTOI等體系結(jié)構(gòu)相關(guān)調(diào)試接口連接芯片,同時(shí)用調(diào)試軟件控制硬件調(diào)試器進(jìn)行調(diào)試。
其中,紅色所示技術(shù)為硬件調(diào)試接口,藍(lán)色所示技術(shù)為相關(guān)軟件調(diào)試工具。軟硬件調(diào)試工具共享CPU和內(nèi)核所提供的調(diào)試能力。
2.性能影響維度
從性能影響維度出發(fā),調(diào)試分為影響(多為停止)當(dāng)前CPU狀態(tài)的侵入式調(diào)試和不影響CPU運(yùn)行的非侵入式調(diào)試。前者多會(huì)暫停當(dāng)前CPU的執(zhí)行流,同時(shí)通過(guò)相關(guān)機(jī)制(比如,AR cross trigger)告知其他核當(dāng)前被調(diào)試的狀態(tài),從而影響系統(tǒng)狀態(tài)。
這種調(diào)試類(lèi)型雖然帶來(lái)了強(qiáng)大的調(diào)試能力,但是在芯片和內(nèi)核的設(shè)計(jì)開(kāi)發(fā)時(shí)需要考慮CPU調(diào)試過(guò)程中與其他外圍設(shè)備的關(guān)系,因?yàn)镃PU的調(diào)試狀態(tài)不會(huì)影響到其他硬件,一致性等問(wèn)題是該方法的經(jīng)典挑戰(zhàn);對(duì)于非侵入式的調(diào)試類(lèi)型,它不會(huì)直接停止當(dāng)前的CPU運(yùn)行狀態(tài),更多對(duì)系統(tǒng)起到監(jiān)控跟蹤的作用。
接下來(lái),分享從斷點(diǎn)、Trace、PMU三類(lèi)調(diào)試手段出發(fā)講述ARM架構(gòu)的系統(tǒng)調(diào)試特性。
2.侵入式調(diào)試手段之?dāng)帱c(diǎn)
斷點(diǎn)調(diào)試是侵入式的,單純依賴(lài)用戶(hù)態(tài)基礎(chǔ)設(shè)施或頂層應(yīng)用無(wú)法達(dá)到啟停系統(tǒng)的能力要求。因此,斷點(diǎn)調(diào)試的設(shè)計(jì)需要硬件和操作系統(tǒng)的支持,即斷點(diǎn)調(diào)試要有陷入高特權(quán)級(jí)別環(huán)境的能力。
用戶(hù)通過(guò)配置編譯選項(xiàng)獲得指定平臺(tái)下的gdb調(diào)試器,將被追蹤程序當(dāng)作參數(shù)傳遞gdb調(diào)試器,gdb調(diào)試器fork出被調(diào)試程序子進(jìn)程,兩者通過(guò)PTRACE_XXX請(qǐng)求建立連接。
對(duì)于軟件斷點(diǎn),gdb將通過(guò)符號(hào)表等信息在開(kāi)發(fā)者指定的位置填入調(diào)試指令(x86為INT3,ARM為BRK/BRKT);對(duì)于硬件斷點(diǎn),gdb會(huì)將指定位置的地址寫(xiě)入到調(diào)試寄存器中。
當(dāng)程序運(yùn)行至軟件斷點(diǎn)或硬件斷點(diǎn)處,子進(jìn)程會(huì)觸發(fā)相應(yīng)異常,待異常信號(hào)被gdb捕獲后,通過(guò)比對(duì)記錄的斷點(diǎn)信息來(lái)判斷是否是調(diào)試原因所觸發(fā)的異常,如此來(lái)實(shí)現(xiàn)gdb調(diào)試進(jìn)程的啟停能力。
3.非侵入調(diào)試類(lèi)型之Trace
ARM Coresight架構(gòu)是遵循可觀測(cè)性的架構(gòu)設(shè)計(jì),Cortex Processor后的ETM負(fù)責(zé)在處理器外部抓取指令序列,不影響CPU的運(yùn)行狀態(tài)。并且,Trace信息的傳輸未經(jīng)系統(tǒng)總線,減少了對(duì)系統(tǒng)帶寬的影響。Coresight架構(gòu)中存在多個(gè)執(zhí)行流抓取點(diǎn),存在多個(gè)對(duì)應(yīng)的ETM,多個(gè)ETM收集的信息會(huì)傳入下游的Funnel,F(xiàn)unnel將根據(jù)數(shù)據(jù)所存在的信息將執(zhí)行流信息進(jìn)行分流處理。
關(guān)于具體的互聯(lián)結(jié)構(gòu)可以查看對(duì)應(yīng)版本的設(shè)備樹(shù)文件。(所在源碼目錄為/arch/arm64/boot/dts)
4.非侵入調(diào)試類(lèi)型之Performance Monitor Unit(PMU)
CPU中存在PMU部件,該部件會(huì)監(jiān)控CPU的相關(guān)性能信息,用戶(hù)可以通過(guò)訪問(wèn)相應(yīng)的寄存器獲取相關(guān)信息。perf是一種可以訪問(wèn)PMU的用戶(hù)態(tài)工具。
perf訪問(wèn)PMU的相關(guān)流程如下:
1.使用perf_pmu_register注冊(cè)PMU事件。
2.perf_event_open系統(tǒng)調(diào)用打開(kāi)對(duì)應(yīng)事件的文件描述符,從中讀取記錄的值。
審核編輯 :李倩
-
cpu
+關(guān)注
關(guān)注
68文章
10878瀏覽量
212167 -
Linux
+關(guān)注
關(guān)注
87文章
11319瀏覽量
209830 -
ARM架構(gòu)
+關(guān)注
關(guān)注
15文章
177瀏覽量
36343
原文標(biāo)題:PODS峰會(huì)筆記: 淺談手機(jī)性能的可觀測(cè)性&揭秘ARM架構(gòu)對(duì)Linux調(diào)測(cè)特性的支持(Day3)
文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論