鯤鵬經(jīng)典直播征文】使用鯤鵬性能分析工具,實現(xiàn)可視精準(zhǔn)調(diào)優(yōu),突破性能瓶頸

      網(wǎng)友投稿 1072 2022-05-29

      一、工具簡介

      【鯤鵬經(jīng)典直播征文】使用鯤鵬性能分析工具,實現(xiàn)可視精準(zhǔn)調(diào)優(yōu),突破性能瓶頸

      系統(tǒng)性能的提升,需要綜合考慮計算機硬件、操作系統(tǒng)、應(yīng)用程序等多方面的因素,這些因素是互相影響的,要不斷的調(diào)試、分析、調(diào)整相關(guān)參數(shù),才能最終達(dá)到最優(yōu)的系統(tǒng)性能。這一過程比較漫長,對人員的技術(shù)要求也比較高,很多情況下,調(diào)優(yōu)人員在特定系統(tǒng)上花費了大量的時間,但是最終也不一定能達(dá)到性能的有效提升。不但如此,在系統(tǒng)出現(xiàn)故障或者異常時,要定位問題位置、找到觸發(fā)的原因也是一件很繁瑣困難的事情,為了協(xié)助開發(fā)者和調(diào)優(yōu)人員在鯤鵬系統(tǒng)上有效調(diào)優(yōu)、診斷異常,華為推出了鯤鵬性能分析工具,支持鯤鵬平臺上的系統(tǒng)性能分析、Java性能分析和診斷調(diào)試,提供系統(tǒng)全景及常見應(yīng)用場景下的性能采集和分析功能,同時基于調(diào)優(yōu)專家系統(tǒng)給出優(yōu)化建議。

      當(dāng)然,業(yè)界現(xiàn)在已經(jīng)有豐富的性能分析工具了,華為又推出自己的工具,是不是有重復(fù)造輪子的嫌疑呢?其實,不是的,鯤鵬性能分析工具除了提供業(yè)界現(xiàn)有能力之外,還有下面四點考慮:

      基于鯤鵬處理器,提供軟硬件結(jié)合分析能力,采集和分析硬件性能指標(biāo),以及硬件性能在軟件層的表現(xiàn),讓用戶更加全面的了解整個系統(tǒng)的運行狀況。

      系統(tǒng)化的分析建立各層指標(biāo)之間的關(guān)聯(lián)關(guān)系、并以用戶視角呈現(xiàn)這些指標(biāo)和關(guān)系,方便用戶更易于發(fā)現(xiàn)問題。

      結(jié)合華為在鯤鵬處理器上的性能優(yōu)化經(jīng)驗,給出優(yōu)化思路和建議,幫助客戶快速的定位和修復(fù)間題。

      實現(xiàn)分析過程的管理,包括優(yōu)化結(jié)果的對比,優(yōu)化效果的標(biāo)記,優(yōu)化過程的記錄等。

      1.工具的功能

      鯤鵬性能分析工具的功能如下圖所示(本文的介紹不包括Java性能分析工具):

      2.工具的目標(biāo)用戶

      系統(tǒng)性能分析工具為軟件開發(fā)人員、系統(tǒng)管理員/POC人員提供兩種維度的性能分析視角,其中軟件運行分析主要面向軟件開發(fā)人員,以軟件的行為為起點,從上往下分析,分析對象主要是熱點函數(shù)、并發(fā)、鎖與等待分析;系統(tǒng)資源分析主要是系統(tǒng)管理/POC人員使用,以系統(tǒng)資源為起點,自下向上分析,分析對象主要是系統(tǒng)配置、系統(tǒng)資源使用率/飽和度/錯誤、資源調(diào)度、NUMA訪問等等。

      二、軟件架構(gòu)

      工具從邏輯上分為兩個相對獨立的模塊,一個是Analysis Server,另一個是Agent。其中Analysis Server模塊主要用來實現(xiàn)性能數(shù)據(jù)分析及分析結(jié)果呈現(xiàn);Agent模塊主要實現(xiàn)性能數(shù)據(jù)采集。

      把工具分成兩個部分,主要考慮的是盡可能減少分析工具對原系統(tǒng)的性能影響,因為Agent功能比較單一,對資源占用也少,在原系統(tǒng)上只部署Agent模塊進(jìn)行數(shù)據(jù)采集,采集成功后的數(shù)據(jù)發(fā)送給Analysis Server模塊,在Analysis Server模塊上對數(shù)據(jù)進(jìn)行分析和呈現(xiàn)。

      基于工具的這種邏輯架構(gòu),在實際部署時有兩種部署方式,分別是單機部署方式和混合部署方式:

      單機部署方式就是把Analysis Server和Agent部署在同一臺服務(wù)器上;混合部署方式可以在一臺服務(wù)器上Analysis Server和Agent,也可以在需要分析的機器上只部署Agent,這些Agent共享同一個Analysis Server,把采集的數(shù)據(jù)發(fā)送給Analysis Server進(jìn)行分析和呈現(xiàn)。

      工具可以部署在如下的硬件環(huán)境上:

      基于鯤鵬916的服務(wù)器

      基于鯤鵬920的服務(wù)器

      基于上述服務(wù)器的虛擬機

      基于上述服務(wù)器的Docker容器

      操作系統(tǒng)要求是CentOS、EulerOS、openEuler、中標(biāo)麒麟、麒麟V10、SUSE、Debian、UOS 20、凝思、Ubuntu等,詳細(xì)的版本要求見鯤鵬開發(fā)套件兼容性查詢助手。

      三、功能原理

      1、全景分析

      全景分析通過采集系統(tǒng)的CPU、內(nèi)存、存儲IO、網(wǎng)絡(luò)IO資源的運行情況,獲得它們的使用率、飽和度、錯誤次數(shù)等指標(biāo),以此識別系統(tǒng)瓶頸。針對部分系統(tǒng)指標(biāo)項,根據(jù)當(dāng)前已有的基準(zhǔn)值和優(yōu)化經(jīng)驗提供優(yōu)化建議。針對大數(shù)據(jù)、分布式存儲和數(shù)據(jù)庫場景的硬件配置、系統(tǒng)配置和組件配置進(jìn)行檢查,顯示不是最優(yōu)的配置項,同時分析給出典型硬件配置及軟件版本信息。

      全景分析的原理是基于USE(utilization、saturation、errors)性能分析方法,獲得系統(tǒng)資源(CPU、內(nèi)存、I/0等)的使用率、飽和度、錯誤等指標(biāo),以此識別系統(tǒng)瓶頸。

      使用率:在規(guī)定的時間間隔內(nèi),資源用于服務(wù)工作的時間百分比。雖然資源繁忙,但是資源還有能力接受更多的工作,不能接受更多工作的程度被視為飽和度。

      飽和度:資源不能在服務(wù)更多額外工作的程度,通常有等待隊列。

      錯誤:錯誤事件的個數(shù)。

      USE分析流程如下:

      全景分析可以分析多個指標(biāo),這些指標(biāo)在分析結(jié)果頁面上有詳細(xì)的解讀,這里就不再贅述。

      2.進(jìn)程/線程性能分析

      進(jìn)程/線程性能分析借鑒業(yè)界的USE方法,采集進(jìn)程/線程對CPU、內(nèi)存、存儲IO等資源的消耗情況,獲得對應(yīng)的使用率、飽和度、錯誤次數(shù)等指標(biāo),以此識別性能瓶頸。針對部分指標(biāo)項,根據(jù)當(dāng)前已有的基準(zhǔn)值和優(yōu)化經(jīng)驗提供優(yōu)化建議。支持分析單個進(jìn)程的系統(tǒng)調(diào)用情況。

      3.熱點函數(shù)分析

      支持分析C/C++程序代碼識別性能瓶頸,給出對應(yīng)的熱點函數(shù)以及源碼和匯編指令的關(guān)聯(lián)詳情。通過冷/熱火焰圖展示函數(shù)的調(diào)用關(guān)系,發(fā)現(xiàn)優(yōu)化路徑。

      對于Top的熱點函數(shù),工具會給出優(yōu)化建議,如果優(yōu)化點適配鯤鵬加速庫功能的話,會給出替換、使用這個加速庫的建議。工具同時會指出是哪一行代碼或者哪一條匯編指令消耗資源是最高的,給出優(yōu)化的方向。工具會抓出熱點函數(shù)所有的調(diào)用棧,經(jīng)過規(guī)整后形成調(diào)用棧火焰圖,可以方便直觀的看出哪些函數(shù)需要去優(yōu)化。

      火焰圖的含義:

      y軸表示調(diào)用棧,每層一個函數(shù)。調(diào)用棧越深,火焰越高,頂部是正在執(zhí)行的函數(shù),下方是它的父函數(shù)。

      x軸表示采樣數(shù)。函數(shù)在x軸占據(jù)的寬度越寬,表示它的采樣次數(shù)越多,即執(zhí)行的時間越長。注意,x軸不代表時間,而是所有的調(diào)用棧合并后,按字母順序排列的。

      火焰圖能夠直觀展示函數(shù)調(diào)用關(guān)系和執(zhí)行時間情況,幫助發(fā)現(xiàn)熱點函數(shù)及其優(yōu)化路徑。冷火焰圖用于定位CPU不能充分使用的情況,一般選擇冷色調(diào)。

      鼠標(biāo)懸停于函數(shù)塊時,會出現(xiàn)懸浮框,若出現(xiàn)“查看函數(shù)詳情”可點擊查看。

      熱點函數(shù)是基于CPU Cycles事件的數(shù)據(jù)進(jìn)行分析的:

      熱點函數(shù)和熱點指令是基于CPUCycle事件中斷時的調(diào)用棧信息標(biāo)識的。在一段時間內(nèi),某個函數(shù)的某個指令被采集的越多,就認(rèn)為越熱;

      以調(diào)用棧信息反映調(diào)用關(guān)系,繪制火焰圖;

      反匯編目標(biāo)文件獲取匯編指令;

      通過符號表和IDEBUG信息關(guān)聯(lián)源碼;

      4.微架構(gòu)分析

      微架構(gòu)分析基于ARM PMU(Performance Monitor Unit)事件,建立鯤鵬處理器的Top-Down模型,獲得指令在CPU流水線上的運行情況,幫助用戶快速定位當(dāng)前應(yīng)用在CPU上的性能瓶頸。用戶可以有針對性地修改自己的程序,以充分利用當(dāng)前的硬件資源。

      對于Top-Down模型,可以選擇的分析指標(biāo)如下:

      Bad Speculation:該指標(biāo)能夠反映出由于錯誤的指令預(yù)測操作導(dǎo)致的流水線資源浪費情況。

      Front-End Bound:該指標(biāo)代表了處理器處理機制的前置部分,在該部分,指令獲取單元負(fù)責(zé)指令的獲取并轉(zhuǎn)化為微指令提供給后置部分的流水線執(zhí)行。該指標(biāo)能夠反映出處理器前置部分沒有被充分利用的比例情況。

      Back-End Bound->Resource Bound:(只適用于Kunpeng 920處理器)Back-End是處理器處理機制的后置部分,它負(fù)責(zé)微指令的亂序分發(fā)和執(zhí)行,并返回最終結(jié)果。Resource Bound是Back-End Bound的子類,該指標(biāo)能夠反映出由于缺乏資源把微指令分發(fā)給亂序執(zhí)行調(diào)度器,從而導(dǎo)致的流水線阻塞情況。

      Back-End Bound->Core Bound:Back-End是處理器處理機制的后置部分,它負(fù)責(zé)微指令的亂序分發(fā)和執(zhí)行,并返回最終結(jié)果。Core Bound是Back-End Bound的子類,該指標(biāo)能夠反映出由于處理器執(zhí)行單元資源不足導(dǎo)致性能瓶頸的比例情況。

      Back-End Bound->Memory Bound:Back-End是處理器處理機制的后置部分,它負(fù)責(zé)微指令的亂序分發(fā)和執(zhí)行,并返回最終結(jié)果。Memory Bound是Back-End Bound的子類,該指標(biāo)能夠反映出由于等待數(shù)據(jù)讀/寫導(dǎo)致的流水線阻塞。

      5.訪存分析

      鯤鵬處理器是NUMA架構(gòu),并存在三級Cache機制,CPU核訪問數(shù)據(jù)時,存在本地、跨片、跨帶訪問Cache和內(nèi)存的情況。不同的訪問路徑,在時延和帶寬上都相差很大,并嚴(yán)重影響系統(tǒng)和程序性能。工具基于CPU訪問緩存和內(nèi)存的事件,分析訪存過程中可能的性能瓶頸,給出造成這些性能問題的可能原因及優(yōu)化建議,具體包括三個功能:訪存統(tǒng)計分析、Miss事件分析、偽共享分析。

      訪存統(tǒng)計分析基于CPU訪問緩存和內(nèi)存的PMU事件,分析存儲的訪問次數(shù)、命中率、帶寬等情況。

      Miss事件分析基于ARM SPE(Statistical Profiling Extension)的能力實現(xiàn)。SPE針對指令進(jìn)行采樣,同時記錄一些觸發(fā)事件的信息,包括精確的PC指針信息。利用SPE能力可以對業(yè)務(wù)進(jìn)行LLC Miss,TLB Miss,Remote Access,Long Latency Load等Miss類事件分析,并精確的關(guān)聯(lián)到造成該事件的代碼。用戶可以有針對性地修改自己的程序,降低Miss事件發(fā)生的幾率,提高程序處理性能。

      偽共享分析基于ARM SPE(Statistical Profiling Extension)的能力實現(xiàn)。SPE針對指令進(jìn)行采樣,同時記錄一些觸發(fā)事件的信息,包括精確的PC指針信息。利用SPE能力進(jìn)行偽共享分析,可以得到發(fā)生偽共享的次數(shù)和比例、指令地址和代碼行號、NUMA節(jié)點等信息。基于這些信息,用戶可以有針對性地修改自己的程序,降低發(fā)生偽共享的幾率,提高程序處理性能。

      6.IO分析

      I/O分析以存儲塊設(shè)備為分析對象,分析得出塊設(shè)備的I/O操作次數(shù)、I/O數(shù)據(jù)大小、I/O隊列深度、I/O操作時延等性能數(shù)據(jù),并關(guān)聯(lián)到造成這些I/O性能數(shù)據(jù)的具體I/O操作事件、進(jìn)程/線程、調(diào)用棧、應(yīng)用層I/O APIs等信息。根據(jù)I/O性能數(shù)據(jù)分析可以給出優(yōu)化建議。系統(tǒng)內(nèi)核需要支持ftrace采集。

      IO分析的原理為:

      在塊設(shè)備層,通過ftrace工具跟蹤內(nèi)核的tracepoint事件,得到每個I/0操作的全部信息。

      通過關(guān)聯(lián)這些tracepoint事件,分析得到操作數(shù)據(jù)大小、操作時延等信息。針對一段時間內(nèi)的I/0操作進(jìn)行統(tǒng)計分析,進(jìn)一步得到數(shù)據(jù)塊分布、操作時延分布、數(shù)據(jù)大小分布等等信息。

      tracepoint事件只能反映到內(nèi)核針對I/0的處理,而無法反映應(yīng)用層的處理(非direct方式)。所以通過獲取應(yīng)用層I/0 API調(diào)用信息,形成內(nèi)核層與應(yīng)用層處理的簡單映射,指導(dǎo)應(yīng)用層的優(yōu)化,例如通過某個段時間的數(shù)據(jù)塊分布是連續(xù)還是隨機,優(yōu)化對應(yīng)應(yīng)用層的I/0請求。

      支持獲取自研盤內(nèi)部性能數(shù)據(jù)。

      7.資源調(diào)度分析

      資源調(diào)度分析基于CPU調(diào)度事件分析系統(tǒng)資源調(diào)度情況。

      資源調(diào)度分析原理:

      采集內(nèi)核CPU調(diào)度事件數(shù)據(jù),從進(jìn)程/線程的角度排列各個事件,計算出各個事件之間的時間差,并標(biāo)記對應(yīng)的狀態(tài)。

      采集內(nèi)核CPU調(diào)度事件數(shù)據(jù),從CPU核的角度排列各個事件,計算出各個事件之間的時間差,并標(biāo)記對應(yīng)的狀態(tài)。

      8.鎖與等待分析

      鎖與等待分析基于Linux perf工具的采樣數(shù)據(jù),對glibc和開源軟件(如MySQL、Open MP)的鎖與等待函數(shù)(包括sleep、usleep、mutex、cond、spinlock、rwlock、semaphore等)進(jìn)行分析,關(guān)聯(lián)到其歸屬的進(jìn)程和調(diào)用點,并根據(jù)當(dāng)前已有的優(yōu)化經(jīng)驗給出優(yōu)化建議。

      9.內(nèi)存診斷

      內(nèi)存泄漏診斷

      內(nèi)存泄漏診斷主要分析應(yīng)用程序存在的內(nèi)存泄漏點(包括內(nèi)存未釋放和異常釋放),得出具體的泄漏信息,并支持關(guān)聯(lián)出調(diào)用棧信息和源碼;分析后得出結(jié)果信息主要為Call Tree信息、源碼信息、內(nèi)存消耗信息、OOM信息。

      內(nèi)存異常訪問診斷

      內(nèi)存異常訪問主要分析應(yīng)用程序的內(nèi)存異常訪問點,給出異常訪問類型和內(nèi)存訪問信息,并支持關(guān)聯(lián)出調(diào)用棧和源碼。

      內(nèi)存診斷原理:

      采用hook技術(shù)實現(xiàn)獲取內(nèi)存中請和釋放信息,通時內(nèi)存地址匹配申請點和釋放點,判斷是否泄漏或異常釋放。其中,針對拉起進(jìn)程的場景,采用preload加載用于hook函數(shù)的動態(tài)庫;針對附著進(jìn)程的場景,采用ptrace加載用于hook函數(shù)的動態(tài)庫,并替換GOT PLT表。

      內(nèi)存越界是通過集成Google AddressSanitizer實現(xiàn)。AddressSanitizer在編譯時插樁,對每塊內(nèi)存空間(8字節(jié))增加shadowmemory。對所有的memory access都去檢查該內(nèi)存所對應(yīng)的shadowmemory的狀態(tài)。

      詳細(xì)的鯤鵬性能分析工具介紹見官網(wǎng):https://www.hikunpeng.com/developer/devkit/hyper-tuner?data=web

      可從如下地址免費獲取鯤鵬開發(fā)套件專屬遠(yuǎn)程云環(huán)境:https://ic-openlabs.huawei.com/devkit-env/#/home?lang=zh-cn

      鯤鵬

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:改變,從一個決定開始
      下一篇:【云會議技術(shù)系列雜談|第三期】云會議已具備的功能
      相關(guān)文章
      国产99在线|亚洲| 在线亚洲午夜片AV大片| 亚洲Av高清一区二区三区| 亚洲AV午夜成人片| 亚洲日本韩国在线| 亚洲日韩国产AV无码无码精品| 亚洲资源在线视频| 亚洲女人初试黑人巨高清| 亚洲美女大bbbbbbbbb| 精品亚洲成a人片在线观看少妇| 久久亚洲精品成人| 久久精品国产亚洲AV电影| 亚洲经典在线观看| 亚洲最大免费视频网| 亚洲综合久久成人69| 亚洲国产精品久久丫| 国产亚洲sss在线播放| 亚洲天然素人无码专区| 亚洲熟妇AV乱码在线观看| 亚洲AV色无码乱码在线观看| 国产成人毛片亚洲精品| 色噜噜亚洲男人的天堂| 亚洲另类无码专区丝袜| 国产成人亚洲综合无| 国产精品V亚洲精品V日韩精品| 亚洲综合另类小说色区| 永久亚洲成a人片777777| 亚洲无人区一区二区三区| 亚洲av一综合av一区| 亚洲美女一区二区三区| 久久亚洲精品专区蓝色区| 亚洲AV无码国产一区二区三区| 国产成人va亚洲电影| 2048亚洲精品国产| 亚洲av午夜福利精品一区| 亚洲理论片中文字幕电影| 亚洲国产日韩精品| 亚洲av永久无码精品秋霞电影秋 | 亚洲成熟丰满熟妇高潮XXXXX | 久久久久亚洲av无码专区| 亚洲乱码一二三四区国产|