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

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

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

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

Linux性能分析實(shí)戰(zhàn):用trace揪出卡頓、高CPU的“真兇”

jf_44130326 ? 來源:Linux1024 ? 2026-02-03 15:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Linux開發(fā)或運(yùn)維的你,是否常被這些問題困擾:服務(wù)突然卡頓卻找不到根源,CPU占用率飆升但查不到罪魁禍?zhǔn)?/span>,系統(tǒng)響應(yīng)變慢卻摸不清瓶頸?其實(shí),Linux內(nèi)核早已為我們準(zhǔn)備了透視鏡”——trace跟蹤技術(shù),今天就手把手教你從生成trace文件到可視化分析,搞定性能難題!

wKgZPGkanJaAQBRoAAMpnATTzdc834.png

一、先搞懂:trace分析的核心工具

在開始實(shí)操前,我們先理清幾個(gè)關(guān)鍵工具的作用,避免知其然不知其所以然

?debugfs/tracefsLinux內(nèi)核提供的調(diào)試文件系統(tǒng),是trace分析的基礎(chǔ)設(shè)施。debugfs用于暴露內(nèi)核調(diào)試信息,tracefs專門記錄內(nèi)核/應(yīng)用的事件(如CPU調(diào)度、系統(tǒng)調(diào)用),后續(xù)工具都依賴這兩個(gè)文件系統(tǒng)。

?atraceAndroid團(tuán)隊(duì)推出的跟蹤工具(也適用于Linux),能收集內(nèi)核事件(sched調(diào)度、syscalls系統(tǒng)調(diào)用)和應(yīng)用活動(dòng)(如線程狀態(tài)),生成原始trace文件。

?catapultGoogle開源的性能分析套件,其中trace2html工具能將原始trace文件轉(zhuǎn)成交互式HTML報(bào)告,讓我們用可視化方式快速定位問題。

?adb:跨設(shè)備傳輸工具,當(dāng)我們在嵌入式Linux(如開發(fā)板)或Android設(shè)備上分析時(shí),用它實(shí)現(xiàn)本地電腦與目標(biāo)設(shè)備的文件傳輸。

二、手把手實(shí)操:從0生成trace分析報(bào)告

接下來我們以分析某Linux服務(wù)卡頓為例,按步驟完成整個(gè)流程,所有命令都已標(biāo)注細(xì)節(jié),新手也能跟著做!

步驟1:檢查核心文件系統(tǒng)是否掛載

首先要確認(rèn)debugfstracefs已掛載——這是后續(xù)操作的前提,沒掛載的話工具會(huì)罷工。

在目標(biāo)Linux設(shè)備(或通過adb連接的遠(yuǎn)程設(shè)備)上執(zhí)行:

#檢查debugfs是否掛載

mount | grep debugfs

#檢查tracefs是否掛載

mount | grep trace

關(guān)鍵補(bǔ)充:

?如果執(zhí)行后無輸出(文件系統(tǒng)未掛載),手動(dòng)掛載(需root權(quán)限):

#掛載debugfs到默認(rèn)路徑

mount -t debugfs debugfs /sys/kernel/debug

#掛載tracefs到默認(rèn)路徑

mount -t tracefs tracefs /sys/kernel/tracing

?不同Linux發(fā)行版路徑可能有差異(如部分嵌入式設(shè)備是/debug),可通過find / -name debugfs查找實(shí)際路徑。

步驟2:上傳工具到目標(biāo)設(shè)備

我們需要將兩個(gè)關(guān)鍵文件傳到目標(biāo)設(shè)備:atrace.sh(封裝atrace命令的腳本,簡化參數(shù)配置)和catapult-main.zip(可視化工具包)。

在本地電腦(Windows為例)打開命令行,執(zhí)行adb傳輸命令:

# 1.上傳atrace.sh腳本到目標(biāo)設(shè)備的根目錄(/

adb push C:Usersmdg_rDesktoppullatrace.sh /

# 2.上傳catapult工具壓縮包到根目錄

adb push C:Usersmdg_rDesktoppullcatapult-main.zip /

# 3.atrace.sh添加可執(zhí)行權(quán)限(Linux文件默認(rèn)無執(zhí)行權(quán))

adb shell chmod 777 /atrace.sh

小知識(shí):

?chmod 777表示所有用戶(所有者、組、其他)都有讀、寫、執(zhí)行權(quán)限,測試環(huán)境用很方便;生產(chǎn)環(huán)境建議縮小權(quán)限(如chmod 700,僅所有者可執(zhí)行)。

?如果目標(biāo)設(shè)備不是Android(如Ubuntu服務(wù)器),無需用adb,直接用scp傳輸文件:scp C:xxxatrace.sh user@服務(wù)器IP:/。

步驟3:生成原始trace文件

執(zhí)行atrace.sh腳本,收集系統(tǒng)運(yùn)行數(shù)據(jù)。腳本參數(shù)my_trace是輸出文件名,3表示跟蹤3(根據(jù)需求調(diào)整,建議1-5秒,避免文件過大)。

在目標(biāo)設(shè)備上執(zhí)行:

#進(jìn)入根目錄

cd /

#運(yùn)行腳本,跟蹤3秒,輸出到my_trace文件

./atrace.sh my_trace 3

深入理解:

?atrace.sh本質(zhì)是封裝了atrace命令,你也可以直接用原生命令自定義跟蹤內(nèi)容,比如只跟蹤CPU調(diào)度和系統(tǒng)調(diào)用:

#原生atrace命令:跟蹤sched(調(diào)度)、syscalls(系統(tǒng)調(diào)用),持續(xù)3

atrace --set_events sched,syscalls -o my_trace 3

?常見跟蹤事件類型:schedCPU調(diào)度)、gfx(圖形渲染,適合UI場景)、disk(磁盤I/O)、mem(內(nèi)存活動(dòng)),根據(jù)性能問題類型選擇。

步驟4:將trace文件轉(zhuǎn)成可視化HTML

原始trace文件是純文本,幾百行甚至幾十萬行數(shù)據(jù),直接看根本看不懂——這時(shí)候catapulttrace2html就派上用場了,能把數(shù)據(jù)轉(zhuǎn)成帶時(shí)間軸的交互式報(bào)告。

先解壓catapult工具包,再執(zhí)行轉(zhuǎn)換命令:

# 1.解壓catapult壓縮包(如果已解壓可跳過)

unzip catapult-main.zip

# 2.執(zhí)行trace2html,生成HTML報(bào)告

./catapult-main/tracing/bin/trace2html --config chrome --output my_trace.html my_trace

關(guān)鍵說明:

?--config chrome表示按Chrome瀏覽器的報(bào)告格式生成(最常用,支持豐富的視圖);

?執(zhí)行后會(huì)生成my_trace.html文件,這個(gè)就是我們最終要分析的性能報(bào)告。

步驟5:拉取報(bào)告到本地分析

目標(biāo)設(shè)備(如開發(fā)板)可能沒有瀏覽器,把HTML文件拉回本地電腦,用Chrome、Edge等瀏覽器打開分析。

在本地電腦執(zhí)行adb拉取命令:

adb pull /my_trace.html C:Usersmdg_rDesktoppull

至此,我們就完成了從收集數(shù)據(jù)生成報(bào)告的全流程,接下來就是最核心的——分析報(bào)告找問題!

三、核心技巧:怎么從HTML報(bào)告中揪出性能瓶頸?

打開my_trace.html后,主要關(guān)注3個(gè)核心視圖,90%的性能問題都能在這里找到答案:

1.時(shí)間軸視圖(Timeline):看卡頓點(diǎn)

這是最直觀的視圖,橫向是時(shí)間(從跟蹤開始到結(jié)束),縱向分3層:

?CPU核心層:每個(gè)CPU核心的運(yùn)行狀態(tài)(綠色=運(yùn)行,灰色=空閑,橙色=中斷);

?進(jìn)程層:每個(gè)進(jìn)程的活動(dòng)時(shí)間線;

?線程層:每個(gè)線程的狀態(tài)(Running =運(yùn)行,Waiting =等待,Sleeping =休眠)。

分析方法:

?異常等待:如果某個(gè)業(yè)務(wù)線程長時(shí)間處于Waiting狀態(tài)(比如超過100ms),可能是CPU資源不足(被其他進(jìn)程搶占)或鎖競爭(線程等鎖);

?時(shí)間斷層:如果整個(gè)時(shí)間軸突然有一段無活動(dòng)(灰色),可能是系統(tǒng)調(diào)用阻塞(如磁盤I/O卡?。?。

2. CPU占用視圖(CPU Usage):找CPU的進(jìn)程

這個(gè)視圖用柱狀圖或折線圖展示每個(gè)CPU核心的占用率,以及每個(gè)進(jìn)程對CPU的消耗占比。

分析方法:

?峰值:如果某進(jìn)程的CPU占用率突然飆升到90%以上,且持續(xù)時(shí)間長,那它很可能是性能瓶頸;

?核心負(fù)載均衡:如果只有1個(gè)CPU核心占用率高,其他核心空閑,可能是進(jìn)程線程數(shù)太少,或存在單線程瓶頸。

3.事件詳情視圖(Event Details):查耗時(shí)操作

點(diǎn)擊時(shí)間軸上的任意事件(如sys_read系統(tǒng)調(diào)用、sched_switch調(diào)度事件),會(huì)彈出詳情面板,顯示:

?事件開始/結(jié)束時(shí)間、持續(xù)時(shí)長;

?關(guān)鍵參數(shù)(如sys_read的文件描述符、讀取字節(jié)數(shù));

?調(diào)用棧(如果開啟了棧跟蹤)。

分析方法:

?長耗時(shí)事件:比如sys_write耗時(shí)超過50ms,可能是磁盤寫入速度慢;sched_switch頻繁,可能是進(jìn)程切換太頻繁(上下文切換開銷大);

?調(diào)用棧:如果某函數(shù)調(diào)用耗時(shí)久,可順著調(diào)用棧定位到具體代碼(需配合符號(hào)表)。

四、避坑指南:這些問題別踩!

1.trace有性能開銷,生產(chǎn)環(huán)境慎用

跟蹤過程會(huì)消耗CPU和內(nèi)存(尤其是跟蹤事件多、時(shí)長久時(shí)),生產(chǎn)環(huán)境建議:縮短跟蹤時(shí)長(1-3秒);只跟蹤關(guān)鍵事件(如只跟蹤sched+syscalls);避開業(yè)務(wù)高峰期。

2.權(quán)限不夠?先提權(quán)!

掛載tracefs/debugfs、運(yùn)行atrace都需要root權(quán)限,執(zhí)行命令前加sudo(如sudo ./atrace.sh),或切換到root用戶(su root)。

3.文件太大打不開?先篩選事件

如果trace文件超過100MBHTML報(bào)告可能加載緩慢,建議在生成trace時(shí)用--set_events篩選事件,比如只跟蹤與業(yè)務(wù)相關(guān)的進(jìn)程:atrace -p 1234(進(jìn)程ID-o my_trace 3。

4.工具兼容性問題

?atrace在非Android設(shè)備上需安裝依賴:Ubuntu/CentOS可執(zhí)行sudo apt install android-tools-adb(部分系統(tǒng)需手動(dòng)編譯atrace);

?catapult需要Python環(huán)境(Python 2.73.x),如果執(zhí)行trace2html報(bào)錯(cuò),先檢查Python是否安裝:python --version

五、總結(jié)

今天我們用檢查文件系統(tǒng)上傳工具生成trace→轉(zhuǎn)HTML→分析報(bào)告的流程,完整走了一遍Linux trace性能分析。這套方法的核心優(yōu)勢是:

?底層可見:能看到內(nèi)核級事件(如調(diào)度、系統(tǒng)調(diào)用),比top、ps等工具更深入;

?可視化直觀HTML報(bào)告比純文本日志更容易定位問題;

?跨場景適用:嵌入式Linux、服務(wù)器、Android設(shè)備都能用。

如果你的項(xiàng)目中遇到了特殊的性能問題(比如內(nèi)存泄漏、網(wǎng)絡(luò)延遲),或者對trace分析有疑問,歡迎在評論區(qū)留言!需要atrace.sh腳本模板或catapult工具包的朋友,也可以私信我獲取~



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

    關(guān)注

    4

    文章

    1467

    瀏覽量

    42866
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11275

    瀏覽量

    224918
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11756

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    Linux系統(tǒng)性能指南

    Linux服務(wù)器運(yùn)行了很多應(yīng)用,在負(fù)載下,服務(wù)器可能會(huì)出現(xiàn)性能瓶頸,例如CPU利用率過高、內(nèi)存不足、磁盤I/O瓶頸等,從而導(dǎo)致系統(tǒng)
    的頭像 發(fā)表于 06-23 14:12 ?1778次閱讀
    <b class='flag-5'>Linux</b>系統(tǒng)<b class='flag-5'>性能</b>指南

    鴻蒙5開發(fā)寶藏案例分享---性能優(yōu)化案例解析

    ;>trace</span>文件分析耗時(shí)操作,精確定位瓶頸。實(shí)戰(zhàn)案例 :頁面打開時(shí)延 操作流程 **: ** 體檢工具導(dǎo)出<span
    發(fā)表于 06-12 16:36

    鴻蒙5開發(fā)寶藏案例分享---點(diǎn)擊完成時(shí)延分析

    ... profiler.stopTrace(\'page_switch\'); 幀率分析揪出超時(shí)渲染幀(紅色警告幀) 調(diào)用棧追蹤:ArkTS/Native雙視角分析 支持冷啟動(dòng)/
    發(fā)表于 06-12 17:03

    鴻蒙5開發(fā)寶藏案例分享---Web頁面內(nèi)點(diǎn)擊響應(yīng)時(shí)延分析

    復(fù)雜動(dòng)畫優(yōu)先用CSS實(shí)現(xiàn) 避免在主線程執(zhí)行重型計(jì)算 遇到問題時(shí),記住這個(gè)分析路徑:錄屏抓幀 → Trace定位 → DevTools逐層剖析 大家有遇到Web
    發(fā)表于 06-12 17:09

    TWS耳機(jī)問題

    時(shí)會(huì)有的現(xiàn)象(1首歌曲的時(shí)間1次的概率),在相同的環(huán)境下,接線出來的耳機(jī)反而長時(shí)間播放歌曲也不會(huì)遇到現(xiàn)象有沒比較懂音頻的大神協(xié)助
    發(fā)表于 04-03 17:00

    【技術(shù)視界】鴻蒙開發(fā)套件之DevEco Profiler助您輕松分析應(yīng)用性能問題

    Insight: 記錄每一幀的渲染數(shù)據(jù),自動(dòng)標(biāo)識(shí)其中的卡幀,并提供同時(shí)段的系統(tǒng)Trace信息和函數(shù)棧采樣數(shù)據(jù),幫助開發(fā)者高效分析位置
    發(fā)表于 09-15 15:55

    labview隊(duì)列實(shí)現(xiàn)DAQ高速數(shù)據(jù)采集和分析,程序報(bào)錯(cuò)

    電壓數(shù)據(jù)采集與實(shí)時(shí)分析,程序消費(fèi)者生產(chǎn)者模式,數(shù)據(jù)采集生產(chǎn)者,數(shù)據(jù)分析消費(fèi)者,采樣率50k,運(yùn)行程序就開始采集,但是速率明顯不是設(shè)置的50k,感覺有
    發(fā)表于 12-15 09:04

    智能(CPU),什么是智能(CPU)

    智能(CPU),什么是智能(CPU) 智能
    發(fā)表于 04-02 13:36 ?3684次閱讀

    你知道perf學(xué)習(xí)-linux自帶性能分析工具怎么?

    Linux性能調(diào)優(yōu)工具,32內(nèi)核以上自帶的工具,軟件性能分析。在2.6.31及后續(xù)版本的linux內(nèi)核里,安裝perf非常的容易。
    發(fā)表于 05-16 14:54 ?3180次閱讀

    看電視經(jīng)常 這些辦法能幫你解決問題

    智能電視久了,難免會(huì)出現(xiàn)的問題,這個(gè)時(shí)候怎么辦,如果是小問題的話,我們自己也可以解決。下面小編,就簡單分析一下可能的原因,以及解決方法吧!
    發(fā)表于 05-24 15:46 ?1.5w次閱讀

    iQOO Pro搭載通驍龍X50 玩手機(jī)游戲消滅延遲

    ,有效避免了由于CPU、GPU性能不足而導(dǎo)致的玩手機(jī)游戲過程中的發(fā)熱和問題,并且續(xù)航能力也有顯著提升。
    發(fā)表于 08-27 08:53 ?895次閱讀

    Linux CPU性能應(yīng)該如何優(yōu)化

    Linux系統(tǒng)中,由于成本的限制,往往會(huì)存在資源上的不足,例如 CPU、內(nèi)存、網(wǎng)絡(luò)、IO 性能。本文,就對 Linux 進(jìn)程和 CPU
    的頭像 發(fā)表于 01-18 08:52 ?4203次閱讀

    電腦出現(xiàn)CPU與內(nèi)存條誰造成的影響比較大

    相信只要用過電腦的用戶遇到過的情況,而電腦之所以會(huì)卡是與系統(tǒng)、網(wǎng)絡(luò)以及硬件都有關(guān)系,其中硬件與電腦的關(guān)系最大。
    的頭像 發(fā)表于 03-05 16:05 ?1.7w次閱讀

    aigo國民好物固態(tài)硬盤P3000能否解決電腦的問題?

    電腦的是處理器惹的禍?電腦最大的禍源是”誰”? 相信很多人都認(rèn)為,電腦就一定是CPU
    的頭像 發(fā)表于 08-09 14:10 ?1615次閱讀
    aigo國民好物固態(tài)硬盤P3000能否解決電腦<b class='flag-5'>卡</b><b class='flag-5'>頓</b>的問題?

    視頻分析流程

    視頻分析流程
    發(fā)表于 11-10 16:55 ?0次下載