91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

應(yīng)用可靠性與性能不給力?HarmonyOS HiViewDFX了解一下

HarmonyOS開發(fā)者 ? 來(lái)源:未知 ? 2023-02-04 12:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作為基礎(chǔ)軟件服務(wù)子系統(tǒng)的HarmonyOS HiViewDFX(以下簡(jiǎn)稱HiViewDFX)框架,是HarmonyOS的公共基礎(chǔ)設(shè)施。包括日志、事件、跟蹤、故障管理及觀測(cè)剖析五大部分,同時(shí)也提供了故障檢測(cè)、定位和性能觀測(cè)剖析的開發(fā)套件,以及將端側(cè)數(shù)據(jù)直接對(duì)接云側(cè)大數(shù)據(jù)質(zhì)量分析平臺(tái)和IDE(Integrated Development Environment, 集成開發(fā)環(huán)境)調(diào)試調(diào)優(yōu)工具。為應(yīng)對(duì)應(yīng)用開發(fā)難題,HiViewDFX提供了高保障能力。

HarmonyOSHiViewDFX框架圖


HiViewDFX介紹

一般地,捕獲異常信號(hào)需要自行增加捕獲異常的機(jī)制,通過(guò)信號(hào)來(lái)感知異常及采集對(duì)應(yīng)的異常日志,但是往往這類信息無(wú)法有效的與系統(tǒng)信息關(guān)聯(lián)。

HiViewDFX為應(yīng)用開發(fā)者提供了具有輕量級(jí)故障檢測(cè)、精準(zhǔn)的故障定位日志以及快速恢復(fù)功能的開發(fā)套件,能夠迅速提高應(yīng)用的可靠性。
如下圖所示,在HarmonyOS系統(tǒng)中首先內(nèi)置崩潰、泄漏、卡死等輕量級(jí)故障檢測(cè)器,用來(lái)記錄應(yīng)用在系統(tǒng)側(cè)的異常狀態(tài)。
其次,在應(yīng)用程序框架內(nèi)及運(yùn)行時(shí)增加了異常捕獲能力,使得系統(tǒng)和應(yīng)用能夠分層檢測(cè)和記錄異常信息,通過(guò)開放查詢、訂閱、恢復(fù)三個(gè)API(Application Programming Interface, 應(yīng)用程序編程接口)提供給開發(fā)者。

HarmonyOS應(yīng)用異常處理框架圖

在應(yīng)用崩潰和卡死的時(shí)候,HiViewDFX提供的精準(zhǔn)日志定位功能能夠詳細(xì)地記錄異常發(fā)生時(shí)的日志。
HiViewDFX 提供了對(duì)應(yīng)的應(yīng)用異常日志查詢接口,將JS_CRASH, CPP_CRASH, APP_FREEZE這三類故障日志提供給開發(fā)者,并且是結(jié)構(gòu)化的日志信息,開發(fā)者可以從反饋的信息中快速獲取到故障的相關(guān)信息。
為給用戶提供更佳的體驗(yàn),在日志信息反饋異常數(shù)據(jù)的基礎(chǔ)上,HiViewDFX提供了應(yīng)用快速恢復(fù)的框架(如下圖),當(dāng)系統(tǒng)感知到JS_CRASH, CPP_CRASH, APP_FREEZE, KILL等故障之后,能快速通知應(yīng)用,應(yīng)用將之前的狀態(tài)進(jìn)行保存,而后系統(tǒng)會(huì)自動(dòng)拉起應(yīng)用,然后恢復(fù)到故障前的原界面。

應(yīng)用恢復(fù)框架圖


HIViewDFX相關(guān)工具介紹

HiViewDFX的工具入口---Insight,是DevEco Studio中的插件,擁有眾多系統(tǒng)能力支撐,如圖所示,有調(diào)試連接器、HiTrace、HiPerf 以及HiProfiler 框架。
HiViewDFX提供的系統(tǒng)能力包含日志、事件、分布式跟蹤、故障等。

HiViewDFX調(diào)試調(diào)優(yōu)架構(gòu)圖

接下來(lái),就讓我們一起了解下HiViewDFX提供的部分工具吧!
1)調(diào)試連接器
如下圖所示,調(diào)試連接器是連接上位機(jī)和下位機(jī)的通道,通常用做嵌入式開發(fā),常用的連接工具,比如,基于串口或者網(wǎng)口的Telnet、SSH等。
HarmonyOS面向不同形態(tài)的設(shè)備時(shí),這些設(shè)備可能不具備網(wǎng)口或者USB端口,只有一個(gè)串口,要支持這個(gè),串口上需要具備Shell和文件IO等功能。有了調(diào)試連接器作為中轉(zhuǎn),就可以讓開發(fā)者使用的IDE和其他工具腳本無(wú)需面臨硬件的復(fù)雜性,更好的關(guān)注調(diào)試和調(diào)優(yōu)本身。

調(diào)試連接器原理示意圖

2)HiTrace
如下圖所示,HiTrace工具用于追蹤進(jìn)程軌跡,進(jìn)行程序性能分析,支持內(nèi)核FTrace預(yù)置埋點(diǎn)和用戶態(tài)打點(diǎn)。
在性能分析中,Trace是最常用的方式,可以說(shuō)Trace就是性能的日志,把Trace按照模塊分門別類,這就是Trace的Tag。例如,Sched是操作系統(tǒng)內(nèi)核的調(diào)度信息打點(diǎn);Ability是Ability模塊在用戶態(tài)的關(guān)鍵生命周期打點(diǎn)。
假設(shè)定位某應(yīng)用掉幀的問(wèn)題,在分析時(shí),打開Graphic、Ability、Sched等tag點(diǎn),可以在Insight里面分析應(yīng)用在送顯、圖形模塊繪制相關(guān)的耗時(shí)。

HiTrace工具原理示意圖

3)HiPerf
如下圖所示,HiPerf是為開發(fā)者提供的采樣調(diào)優(yōu)分析工具,通過(guò)采樣的方式,可以采集CPU PMU、Tracepoints以及程序熱點(diǎn)函數(shù)信息,并且和Insight聯(lián)動(dòng),提供離線和實(shí)時(shí)分析的能力。
HiPerf采集定位過(guò)程中會(huì)遇到一個(gè)難點(diǎn):使用跨編程語(yǔ)言,在程序運(yùn)行時(shí),可能會(huì)存在一些跨語(yǔ)言的調(diào)用。例如,從JS調(diào)用NAPI到C++接口等。
因?yàn)槭浅闃拥恼{(diào)用棧采集,如果只采集其中一種語(yǔ)言的調(diào)用棧會(huì)導(dǎo)致兩個(gè)語(yǔ)言之間的耗時(shí)數(shù)據(jù)無(wú)法同步,從而產(chǎn)生沖突,影響性能問(wèn)題的度量和定位,所以在調(diào)用棧采集的時(shí)候進(jìn)行縫合。
HiPerf工具原理示意圖
如下圖所示,這段JS代碼調(diào)用了三個(gè)內(nèi)存相關(guān)的數(shù)據(jù)獲取接口,均是NAPI實(shí)現(xiàn)的NATIVE接口。
在HiPerf中,首先采集NAPI調(diào)用JS的調(diào)用棧信息,當(dāng)采集到一個(gè)C++的調(diào)用棧時(shí),此時(shí)棧頂是函數(shù)NativeFunctionCallBack()的NAPI回調(diào),則這個(gè)NATIVE調(diào)用棧就可以和前一次采集到的JS調(diào)用棧合并,最終拼接出一個(gè)完整的調(diào)用棧。

NAPI調(diào)用中JS-CPP??p合示意圖

除了上述系統(tǒng)內(nèi)置的分析點(diǎn),開發(fā)者也可以通過(guò)HiTrace接口增加自定義的性能分析打點(diǎn)。
如下列代碼所示,HiTraceMeter的接口比較簡(jiǎn)單,找到一段流程的開始和結(jié)束,加上Trace打點(diǎn),就能在Insight中看到Start-End的耗時(shí)。
// API
declare namespace hiTraceMeter {
// Async trace
function startTrace(name: string, taskId: number, exceptedTime?: number): void;
function finishTrace(name: string, taskId: number): void;


// Counter trace
function traceByValue(name: string, count: number): void;
}


//example
onWindowStageCreate(windowStage) {
...
hiTraceMeter.startTrace('getMainWindow');
windowStage.getMainWindow().then((win) => {
Appstorage.SetOrCreate(Constants.MAIN_WINDOW, win);
hiTraceMeter.finishTrace('getMainWindow');
...
});
...
}

HiTrace API介紹及開發(fā)樣例圖(左右滑動(dòng))

4)HiProfiler
HiProfiler 框架是基于HiViewDFX基礎(chǔ)能力構(gòu)建的一個(gè)插件集,可以為Insight提供調(diào)優(yōu)數(shù)據(jù)采集。
該組件整體分為PC端和設(shè)備端兩部分。
PC端最終作為DevEco Studio的插件進(jìn)行發(fā)布,內(nèi)部主要包括分為UI繪制、設(shè)備管理、進(jìn)程管理、插件管理、數(shù)據(jù)導(dǎo)入、數(shù)據(jù)存儲(chǔ)、 數(shù)據(jù)分析、Session管理、配置管理等模塊。
設(shè)備端主要包括命令行工具、服務(wù)進(jìn)程、插件集合、應(yīng)用程序組件等模塊。
設(shè)備端提供了插件擴(kuò)展能力,對(duì)外提供了插件接口,基于該擴(kuò)展能力可以按需定義自己的能力,并集成到框架中。
HiProfiler框架

如何查詢內(nèi)存信息

操作系統(tǒng)對(duì)內(nèi)存是分級(jí)定義的,從物理地址空間到虛擬地址空間,再分為用戶態(tài)和內(nèi)核態(tài)。應(yīng)用內(nèi)存調(diào)優(yōu)分析的時(shí)候,還需要分解到虛擬地址、Ark JS的內(nèi)存、NATIVE的內(nèi)存、字體圖標(biāo)等資源、So的映射、線程棧等,這些都屬于內(nèi)存觀測(cè)的范圍。
HiViewDFX提供了HiDumper工具,作用是系統(tǒng)信息查詢,它提供了系統(tǒng)版本、CPU占用率、內(nèi)存以及Sa信息,開發(fā)者可以使用HiDumper來(lái)分析應(yīng)用的內(nèi)存(如下圖)。
開發(fā)者分析內(nèi)存比較關(guān)注的是Ark JS Heap以及NATIVE Heap、Pss、Dirty這些指標(biāo),如果程序有內(nèi)存泄漏或者一般的內(nèi)存膨脹的問(wèn)題,可以看到這些值會(huì)不斷變大。

HiDumper查看內(nèi)存信息示意圖

如果應(yīng)用要在程序中監(jiān)控內(nèi)存,可以使用這組HiDebug接口(如下列代碼所示),前三個(gè)接口是NATIVE內(nèi)存分配器的統(tǒng)計(jì)信息,可以獲取NATIVE分配器的總大小、分配大小和可用大小,后三個(gè)接口是從系統(tǒng)Smaps獲取的統(tǒng)計(jì)信息,注意這兩個(gè)信息不是一個(gè)維度上的,不能做數(shù)據(jù)的等同,在使用場(chǎng)景上也有差異。
// API
declarenamespacehidebug{
functiongetNativeHeapSize():bigint;
function getNativeHeapAllocatedSize(): bigint;
functiongetNativeHeapFreeSize():bigint;
functiongetPss():bigint;
functiongetSharedDirty():bigint;
functiongetPrivateDirty():bigint;
}

HiDebug接口示意圖(左右滑動(dòng))

分配器的信息經(jīng)常用于統(tǒng)計(jì)程序中對(duì)Native內(nèi)存的分配情況,不代表這些內(nèi)存實(shí)際被使用,這部分內(nèi)存是開發(fā)者可以控制且可以進(jìn)行優(yōu)化的。
而系統(tǒng)Smaps統(tǒng)計(jì)信息,常用于程序感知自身內(nèi)存的實(shí)際占用大小,這個(gè)大小經(jīng)常受到分配器延遲釋放、系統(tǒng)延遲回收、Copy-on-write、分配器MetaData額外損耗等,造成統(tǒng)計(jì)出來(lái)的內(nèi)存信息和分配器控制的內(nèi)存不完全等同,往往不能作為內(nèi)存優(yōu)化的直接依據(jù),而是作為內(nèi)存壓力統(tǒng)計(jì)的依據(jù)。

如何進(jìn)行內(nèi)存調(diào)優(yōu)分析

我們通過(guò)信息查詢得知了內(nèi)存的大小信息,那么如何進(jìn)行內(nèi)存分析呢?

如下圖所示,右側(cè)部分是開發(fā)者使用Insight進(jìn)行分析的樣例。
首先分析泳道圖上的內(nèi)存曲線,得到三類數(shù)據(jù),JS、Native和虛擬內(nèi)存,它們采集的分配信息基本都比較相似。例如,圖中分配信息部分,名字和調(diào)用棧,是區(qū)分一塊內(nèi)存的重要信息,地址和大小是一塊內(nèi)存的基本信息。引用關(guān)系可以幫助我們建立內(nèi)存之間的關(guān)系樹,幫助我們更快找到內(nèi)存的引入點(diǎn)。分配時(shí)間則可以幫助開發(fā)者了解哪些內(nèi)存會(huì)長(zhǎng)時(shí)間存留,長(zhǎng)時(shí)間存留的內(nèi)存是需要重點(diǎn)關(guān)注的。

內(nèi)存分析數(shù)據(jù)采集原理圖

另外,雖然虛擬內(nèi)存在64位上可能不是一個(gè)痛點(diǎn)問(wèn)題,但是在32位程序上經(jīng)常會(huì)導(dǎo)致問(wèn)題。32位程序的地址空間只有4GB,如果是32位內(nèi)核,那么用戶態(tài)一般情況只有3GB地址空間,這種情況下開發(fā)者需要關(guān)注虛擬內(nèi)存的使用情況,HarmonyOS的做法是在Mmap的地方進(jìn)行Hook,拿到分配的調(diào)用棧,并且對(duì)系統(tǒng)映射的絕大多數(shù)匿名頁(yè)都進(jìn)行了命名。因此不論是文件頁(yè)還是匿名頁(yè),在分配信息中都能看到頁(yè)的命名信息,這對(duì)于內(nèi)存分析非常有幫助。

以上就是HiViewDFX提供的可靠性和性能優(yōu)化調(diào)試調(diào)優(yōu)能力的相關(guān)介紹了,歡迎廣大開發(fā)者使用HiViewDFX框架來(lái)開發(fā)一個(gè)高可靠高性能的應(yīng)用!


END


想了解更多HarmonyOS技術(shù)?

后臺(tái)留言給我們

立刻安排!


歡迎點(diǎn)擊|閱讀原文

搜索關(guān)鍵字"dfx"查看更多信息


原文標(biāo)題:應(yīng)用可靠性與性能不給力?HarmonyOS HiViewDFX了解一下

文章出處:【微信公眾號(hào):HarmonyOS開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2154

    瀏覽量

    36084

原文標(biāo)題:應(yīng)用可靠性與性能不給力?HarmonyOS HiViewDFX了解一下

文章出處:【微信號(hào):HarmonyOS_Dev,微信公眾號(hào):HarmonyOS開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    什么是高可靠性?

    、什么是可靠性? 可靠性指的是“可信賴的”、“可信任的”,是指產(chǎn)品在規(guī)定的條件和規(guī)定的時(shí)間內(nèi),完成規(guī)定功能的能力。對(duì)于終端產(chǎn)品而言,可靠
    發(fā)表于 01-29 14:49

    MUN12AD03-SEC電源模塊性能、成本、可靠性三大優(yōu)勢(shì)

    MUN12AD03-SEC電源模塊性能、成本、可靠性三大優(yōu)勢(shì)隨著工業(yè)4.0、5G通信和AIoT的快速發(fā)展,電源模塊正從‘功能組件”向‘系統(tǒng)核心’演進(jìn)??蛻魧?duì)效率、集成度和可靠性的要求已從‘夠用’升級(jí)
    發(fā)表于 01-15 09:50

    TMUX721x系列開關(guān):高性能可靠性的完美結(jié)合

    TMUX721x系列開關(guān):高性能可靠性的完美結(jié)合 在電子設(shè)計(jì)領(lǐng)域,選擇合適的開關(guān)器件對(duì)于實(shí)現(xiàn)系統(tǒng)的高性能可靠性至關(guān)重要。TMUX721x系列開關(guān),包括TMUX7211、TMUX72
    的頭像 發(fā)表于 01-13 10:45 ?386次閱讀

    芯片可靠性(RE)性能測(cè)試與失效機(jī)理分析

    的“健康指標(biāo)”:半導(dǎo)體可靠性的本質(zhì)半導(dǎo)體可靠性(RE)指的是芯片在規(guī)定條件和時(shí)間內(nèi),持續(xù)保持其預(yù)定功能的能力。這不僅僅是“能用”,而是在各種復(fù)雜環(huán)境“穩(wěn)定可靠
    的頭像 發(fā)表于 01-09 10:02 ?839次閱讀
    芯片<b class='flag-5'>可靠性</b>(RE)<b class='flag-5'>性能</b>測(cè)試與失效機(jī)理分析

    如何測(cè)試單片機(jī)MCU系統(tǒng)的可靠性

    用什么方法來(lái)測(cè)試單片機(jī)系統(tǒng)的可靠性,當(dāng)個(gè)單片機(jī)系統(tǒng)設(shè)計(jì)完成,對(duì)于不同的單片機(jī)系統(tǒng)產(chǎn)品會(huì)有不同的測(cè)試項(xiàng)目和方法,但是有些是必須測(cè)試的。 下面分享我的些經(jīng)驗(yàn): 1、測(cè)試單片機(jī)軟件
    發(fā)表于 01-08 07:50

    TDK HVC45高壓接觸器:高性能可靠性的完美結(jié)合

    TDK HVC45高壓接觸器:高性能可靠性的完美結(jié)合 在高壓直流切換領(lǐng)域,接觸器的性能可靠性至關(guān)重要。TDK的HVC45系列高壓接觸器憑借其卓越的設(shè)計(jì)和出色的特性,成為眾多應(yīng)用的理
    的頭像 發(fā)表于 12-25 15:40 ?307次閱讀

    探索Bourns UB系列電阻:高性能可靠性的完美結(jié)合

    探索Bourns UB系列電阻:高性能可靠性的完美結(jié)合 在電子工程師的日常工作中,電阻作為基礎(chǔ)且關(guān)鍵的電子元件,其性能優(yōu)劣直接影響著整個(gè)電路的穩(wěn)定性和可靠性。今天,我們就來(lái)深入
    的頭像 發(fā)表于 12-22 17:20 ?556次閱讀

    松下高壓薄膜貼片電阻ERA 8P系列:高性能可靠性的完美結(jié)合

    松下高壓薄膜貼片電阻ERA 8P系列:高性能可靠性的完美結(jié)合 在電子設(shè)備的設(shè)計(jì)中,電阻作為基礎(chǔ)且關(guān)鍵的元件,其性能可靠性直接影響著整個(gè)系統(tǒng)的穩(wěn)定性和
    的頭像 發(fā)表于 12-22 11:00 ?292次閱讀

    探索 ISOFACE? 雙通道數(shù)字隔離器:高性能可靠性的完美結(jié)合

    探索 ISOFACE? 雙通道數(shù)字隔離器:高性能可靠性的完美結(jié)合 在電子工程師的世界里,數(shù)字隔離器是保障系統(tǒng)安全、穩(wěn)定運(yùn)行的關(guān)鍵組件之。今天,我們來(lái)深入了解
    的頭像 發(fā)表于 12-20 16:20 ?1172次閱讀

    F2915射頻開關(guān):高可靠性與高性能的完美結(jié)合

    的理想選擇。今天,我們就來(lái)深入了解一下這款F2915射頻開關(guān)。 文件下載: F2915NBGK.pdf 、產(chǎn)品概述 F2915是款高可靠性
    的頭像 發(fā)表于 12-17 17:25 ?692次閱讀

    Littelfuse Xtreme Varistor系列壓敏電阻:高性能可靠性的完美結(jié)合

    Littelfuse Xtreme Varistor系列壓敏電阻:高性能可靠性的完美結(jié)合 在電子設(shè)備的設(shè)計(jì)中,壓敏電阻作為種重要的過(guò)壓保護(hù)元件,其性能直接關(guān)系到設(shè)備的穩(wěn)定性和
    的頭像 發(fā)表于 12-16 15:10 ?355次閱讀

    871系列高電流貼片保險(xiǎn)絲:高性能可靠性的完美結(jié)合

    871系列高電流貼片保險(xiǎn)絲:高性能可靠性的完美結(jié)合 在電子設(shè)備的設(shè)計(jì)中,保險(xiǎn)絲作為電路保護(hù)的關(guān)鍵元件,其性能可靠性直接影響著整個(gè)系統(tǒng)的穩(wěn)定性和安全
    的頭像 發(fā)表于 12-15 16:25 ?496次閱讀

    提供半導(dǎo)體工藝可靠性測(cè)試-WLR晶圓可靠性測(cè)試

    和有源區(qū)連接孔在電流應(yīng)力的失效。 氧化層完整:測(cè)試結(jié)構(gòu)檢測(cè)氧化層因缺陷或高電場(chǎng)導(dǎo)致的擊穿。 熱載流子注入:評(píng)估MOS管和雙極晶體管絕緣層因載流子注入導(dǎo)致的閾值電壓漂移、漏電流增大。 連接可靠性——鍵合
    發(fā)表于 05-07 20:34

    電機(jī)微機(jī)控制系統(tǒng)可靠性分析

    方法。各種技術(shù)措施合理搭配才能有效地提高電機(jī)微機(jī)控制系統(tǒng)的可靠性。 在電機(jī)微機(jī)控制系統(tǒng)的研制過(guò)程中,系統(tǒng)的可靠性個(gè)很重要的問(wèn)題。個(gè)系統(tǒng)調(diào)試完成后,往往可以在實(shí)驗(yàn)室內(nèi)正常運(yùn)行,但卻
    發(fā)表于 04-29 16:14

    電路可靠性設(shè)計(jì)與工程計(jì)算技能概述

    電路可靠性設(shè)計(jì)與工程計(jì)算通過(guò)系統(tǒng)學(xué)習(xí)電路可靠性設(shè)計(jì)與工程計(jì)算,工程師不僅能提高電路的可靠性和穩(wěn)定性,還能優(yōu)化產(chǎn)品設(shè)計(jì)過(guò)程,減少潛在的故障風(fēng)險(xiǎn),從而提升產(chǎn)品的市場(chǎng)競(jìng)爭(zhēng)和消費(fèi)者信任度。為
    的頭像 發(fā)表于 03-26 17:08 ?785次閱讀
    電路<b class='flag-5'>可靠性</b>設(shè)計(jì)與工程計(jì)算技能概述