伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux性能分析實戰:用trace揪出卡頓、高CPU的“真兇”

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

掃碼添加小助手

加入工程師交流群

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

wKgZPGkanJaAQBRoAAMpnATTzdc834.png

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

在開始實操前,我們先理清幾個關鍵工具的作用,避免知其然不知其所以然

?debugfs/tracefsLinux內核提供的調試文件系統,是trace分析的基礎設施debugfs用于暴露內核調試信息,tracefs專門記錄內核/應用的事件(如CPU調度、系統調用),后續工具都依賴這兩個文件系統。

?atraceAndroid團隊推出的跟蹤工具(也適用于Linux),能收集內核事件(sched調度、syscalls系統調用)和應用活動(如線程狀態),生成原始trace文件。

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

?adb:跨設備傳輸工具,當我們在嵌入式Linux(如開發板)或Android設備上分析時,用它實現本地電腦與目標設備的文件傳輸。

二、手把手實操:從0生成trace分析報告

接下來我們以分析某Linux服務卡頓為例,按步驟完成整個流程,所有命令都已標注細節,新手也能跟著做!

步驟1:檢查核心文件系統是否掛載

首先要確認debugfstracefs已掛載——這是后續操作的前提,沒掛載的話工具會罷工

在目標Linux設備(或通過adb連接的遠程設備)上執行:

#檢查debugfs是否掛載

mount | grep debugfs

#檢查tracefs是否掛載

mount | grep trace

關鍵補充:

?如果執行后無輸出(文件系統未掛載),手動掛載(需root權限):

#掛載debugfs到默認路徑

mount -t debugfs debugfs /sys/kernel/debug

#掛載tracefs到默認路徑

mount -t tracefs tracefs /sys/kernel/tracing

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

步驟2:上傳工具到目標設備

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

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

# 1.上傳atrace.sh腳本到目標設備的根目錄(/

adb push C:Usersmdg_rDesktoppullatrace.sh /

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

adb push C:Usersmdg_rDesktoppullcatapult-main.zip /

# 3.atrace.sh添加可執行權限(Linux文件默認無執行權)

adb shell chmod 777 /atrace.sh

小知識:

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

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

步驟3:生成原始trace文件

執行atrace.sh腳本,收集系統運行數據。腳本參數my_trace是輸出文件名,3表示跟蹤3(根據需求調整,建議1-5秒,避免文件過大)。

在目標設備上執行:

#進入根目錄

cd /

#運行腳本,跟蹤3秒,輸出到my_trace文件

./atrace.sh my_trace 3

深入理解:

?atrace.sh本質是封裝了atrace命令,你也可以直接用原生命令自定義跟蹤內容,比如只跟蹤CPU調度和系統調用:

#原生atrace命令:跟蹤sched(調度)、syscalls(系統調用),持續3

atrace --set_events sched,syscalls -o my_trace 3

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

步驟4:將trace文件轉成可視化HTML

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

先解壓catapult工具包,再執行轉換命令:

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

unzip catapult-main.zip

# 2.執行trace2html,生成HTML報告

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

關鍵說明:

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

?執行后會生成my_trace.html文件,這個就是我們最終要分析的性能報告

步驟5:拉取報告到本地分析

目標設備(如開發板)可能沒有瀏覽器,把HTML文件拉回本地電腦,用ChromeEdge等瀏覽器打開分析。

在本地電腦執行adb拉取命令:

adb pull /my_trace.html C:Usersmdg_rDesktoppull

至此,我們就完成了從收集數據生成報告的全流程,接下來就是最核心的——分析報告找問題

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

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

1.時間軸視圖(Timeline):看卡頓點

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

?CPU核心層:每個CPU核心的運行狀態(綠色=運行,灰色=空閑,橙色=中斷);

?進程層:每個進程的活動時間線;

?線程層:每個線程的狀態(Running =運行,Waiting =等待,Sleeping =休眠)。

分析方法:

?異常等待:如果某個業務線程長時間處于Waiting狀態(比如超過100ms),可能是CPU資源不足(被其他進程搶占)或鎖競爭(線程等鎖);

?時間斷層:如果整個時間軸突然有一段無活動(灰色),可能是系統調用阻塞(如磁盤I/O卡住)。

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

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

分析方法:

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

?核心負載均衡:如果只有1CPU核心占用率高,其他核心空閑,可能是進程線程數太少,或存在單線程瓶頸。

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

點擊時間軸上的任意事件(如sys_read系統調用、sched_switch調度事件),會彈出詳情面板,顯示:

?事件開始/結束時間、持續時長;

?關鍵參數(如sys_read的文件描述符、讀取字節數);

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

分析方法:

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

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

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

1.trace有性能開銷,生產環境慎用

跟蹤過程會消耗CPU和內存(尤其是跟蹤事件多、時長久時),生產環境建議:縮短跟蹤時長(1-3秒);只跟蹤關鍵事件(如只跟蹤sched+syscalls);避開業務高峰期。

2.權限不夠?先提權!

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

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

如果trace文件超過100MBHTML報告可能加載緩慢,建議在生成trace時用--set_events篩選事件,比如只跟蹤與業務相關的進程:atrace -p 1234(進程ID-o my_trace 3

4.工具兼容性問題

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

?catapult需要Python環境(Python 2.73.x),如果執行trace2html報錯,先檢查Python是否安裝:python --version

五、總結

今天我們用檢查文件系統上傳工具生成trace→HTML→分析報告的流程,完整走了一遍Linux trace性能分析。這套方法的核心優勢是:

?底層可見:能看到內核級事件(如調度、系統調用),比topps等工具更深入;

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

?跨場景適用:嵌入式Linux、服務器、Android設備都能用。

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



聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內核
    +關注

    關注

    4

    文章

    1474

    瀏覽量

    43080
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11314

    瀏覽量

    225704
  • Linux
    +關注

    關注

    88

    文章

    11800

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Linux系統性能指南

    Linux服務器運行了很多應用,在負載下,服務器可能會出現性能瓶頸,例如CPU利用率過高、內存不足、磁盤I/O瓶頸等,從而導致系統
    的頭像 發表于 06-23 14:12 ?1885次閱讀
    <b class='flag-5'>Linux</b>系統<b class='flag-5'>性能</b>指南

    鴻蒙5開發寶藏案例分享---性能優化案例解析

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

    鴻蒙5開發寶藏案例分享---點擊完成時延分析

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

    鴻蒙5開發寶藏案例分享---Web頁面內點擊響應時延分析

    復雜動畫優先用CSS實現 避免在主線程執行重型計算 遇到問題時,記住這個分析路徑:錄屏抓幀 → Trace定位 → DevTools逐層剖析 大家有遇到Web
    發表于 06-12 17:09

    TWS耳機問題

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

    【技術視界】鴻蒙開發套件之DevEco Profiler助您輕松分析應用性能問題

    Insight: 記錄每一幀的渲染數據,自動標識其中的卡幀,并提供同時段的系統Trace信息和函數棧采樣數據,幫助開發者高效分析位置
    發表于 09-15 15:55

    labview隊列實現DAQ高速數據采集和分析,程序報錯

    電壓數據采集與實時分析,程序消費者生產者模式,數據采集生產者,數據分析消費者,采樣率50k,運行程序就開始采集,但是速率明顯不是設置的50k,感覺有
    發表于 12-15 09:04

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

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

    你知道perf學習-linux自帶性能分析工具怎么

    Linux性能調優工具,32內核以上自帶的工具,軟件性能分析。在2.6.31及后續版本的linux內核里,安裝perf非常的容易。
    發表于 05-16 14:54 ?3243次閱讀

    看電視經常 這些辦法能幫你解決問題

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

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

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

    Linux CPU性能應該如何優化

    Linux系統中,由于成本的限制,往往會存在資源上的不足,例如 CPU、內存、網絡、IO 性能。本文,就對 Linux 進程和 CPU
    的頭像 發表于 01-18 08:52 ?4297次閱讀

    電腦出現CPU與內存條誰造成的影響比較大

    相信只要用過電腦的用戶遇到過的情況,而電腦之所以會卡是與系統、網絡以及硬件都有關系,其中硬件與電腦的關系最大。
    的頭像 發表于 03-05 16:05 ?1.7w次閱讀

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

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

    視頻分析流程

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