<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] ## 概述 它不但可以分析指定應用程序的性能問題 (per thread),也可以用來分析內核的性能問題,當然也可以同時分析應用代碼和內核,從而全面理解應用程序中的性能瓶頸 ## 原理 tracepoints是散落在內核源碼中的一些hook,它們可以在特定的代碼被執行到時觸發,這一特定可以被各種trace/debug工具所使用。 ## 語法 ### perf list 列出性能事件 性能事件是指在處理器或操作系統中發生的,可能影響到程序性能的硬件事件或軟件事件 ### perf top 實時顯示系統/進程的性能統計信息 ``` perf top [options] options: -e:指定性能事件 -a:顯示在所有CPU上的性能統計信息 -C:顯示在指定CPU上的性能統計信息 -p:指定進程PID -t:指定線程TID -K:隱藏內核統計信息 -U:隱藏用戶空間的統計信息 -s:指定待解析的符號信息 -g: 得到函數的調用關系圖 -d <n>:界面的刷新周期,默認為2s,因為perf top默認每2s從mmap的內存區域讀取一次性能數據。 --comms: 指定進程名稱 ``` ### perf stat 執行一個命令并收集其運行過程中的各個數據,它可以提供一個程序運行情況的總體概覽。 <details> <summary>輸出格式</summary> ``` user@localhost:~$ perf stat hostname localhost Performance counter stats for 'hostname': 0.313464 task-clock (msec) # 0.481 CPUs utilized 2 context-switches # 0.006 M/sec 0 cpu-migrations # 0.000 K/sec 153 page-faults # 0.488 M/sec 896,723 cycles # 2.861 GHz 620,709 instructions # 0.69 insn per cycle 121,143 branches # 386.465 M/sec 6,247 branch-misses # 5.16% of all branches 0.000651441 seconds time elapsed task-clock-msecs:cpu 使用率 context-switches:進程切換次數 page-faults:發生缺頁的次數 cpu-migrations:表示進程運行過程中發生了多少次CPU遷移,即被調度器從一個CPU轉移到另外一個CPU上運行 cycles:處理器時鐘,一條機器指令可能需要多個cycles instructions: 機器指令數目 branches:遇到的分支指令數 branch-misses是預測錯誤的分支指令數 ``` </details> <br/> ``` perf stat [options] options: -e:選擇性能事件 -i:禁止子任務繼承父任務的性能計數器。 -r:重復執行 n 次目標程序,并給出性能指標在n 次執行中的變化范圍。 -n:僅輸出目標程序的執行時間,而不開啟任何性能計數器。 -a:指定全部cpu -C:指定某個cpu -A:將給出每個處理器上相應的信息。 -p:指定待分析的進程id -t:指定待分析的線程id ``` ## perf record 記錄一段時間內系統/進程的性能時間 ``` perf record[options] options: -e:選擇性能事件 -p:待分析進程的id -t:待分析線程的id -a:分析整個系統的性能 -C:只采集指定CPU數據 -c:事件的采樣周期 -o:指定輸出文件,默認為perf.data -A:以append的方式寫輸出文件 -f:以OverWrite的方式寫輸出文件 -g:記錄函數間的調用關系 ``` ## perf report 讀取perf record生成的數據文件,并顯示分析數據 ``` perf report[options] options: -i:輸入的數據文件 -v:顯示每個符號的地址 -d <dos>:只顯示指定dos的符號 -C:只顯示指定comm的信息(Comm. 觸發事件的進程名) -S:只考慮指定符號 -U:只顯示已解析的符號 -g[type,min,order]:顯示調用關系,具體等同于perf top命令中的-g -c:只顯示指定cpu采樣信息 -M:以指定匯編指令風格顯示 -g:記錄函數間的調用關系 –source:以匯編和source的形式進行顯示 -p<regex>:用指定正則表達式過濾調用函數 ``` ## 實例 ### 整個系統的性能情況 ``` perf top -a ``` ### 用戶服務的性能情況 ``` perf top -K ``` ### 查看某個服務的性能情況 ``` //方式一 > ps -ef | grep UpAntbizServer > perf top -p 6704 方式二 > perf top --comms UpAntbizServer ``` 輸出內容 ``` 0.23% UpAntbizServer [.] runtime.netpoll 0.23% [kernel] [k] tcp_v4_rcv 0.22% UpAntbizServer [.] fmt.(*pp).doPrintf 0.21% UpAntbizServer [.] github.com/astaxie/beego.(*ControllerRegister).ServeHTTP 0.21% [kernel] [k] clear_page 0.21% [kernel] [k] sock_has_perm 0.21% [kernel] [k] enqueue_to_backlog 0.21% UpAntbizServer [.] runtime.readvarint ``` ### 查看某個服務的函數調用關系圖[常用] ``` + 7.09% 0.00% UpAntbizServer [.] runtime.call32 + 7.08% 0.00% UpAntbizServer [.] antbiz/controllers.(*ListController).ApiFunc - 3.64% 0.00% UpAntbizServer [.] antbiz/controllers.GetRoleIdByUserId - antbiz/controllers.GetRoleIdByUserId - 1.99% antbiz/model.GetRoleIdIdByUserId - 1.74% xorm.io/xorm.(*Session).Fin + 1.73% xorm.io/xorm.(*Session).find ``` ### record 并 report 性能數據 在當前目錄生成 data.perf 數據,并通過report 進行分析 ``` > perf record -a -g -p 23315 -p參數為pid > perf report [-i perf.data ] ``` ### 查看CPU過高的堆棧信息 ``` > perf top -e cycles -g -p 5745 Samples: 89K of event 'cycles:u', 4000 Hz, Event count (approx.): 38012908527 Children Self Shared Object Symbol - 55.56% 4.26% BigAnt5 [.] _ZN26StyleDocumentLayoutPrivate10layoutFlowEN10QTextFrame8iteratorEP17QTextLayoutStructii6QFixed ◆ + 46.39% _ZN26StyleDocumentLayoutPrivate10layoutFlowEN10QTextFrame8iteratorEP17QTextLayoutStructii6QFixed ? - 13.03% 3.26% BigAnt5 [.] _ZN26StyleDocumentLayoutPrivate11layoutBlockERK10QTextBlockiRK16QTextBlockFormatP17QTextLayoutStru? + 6.85% _ZN26StyleDocumentLayoutPrivate11layoutBlockERK10QTextBlockiRK16QTextBlockFormatP17QTextLayoutStructiiPS4_ ? + 3.23% _ZN26StyleDocumentLayoutPrivate10layoutFlowEN10QTextFrame8iteratorEP17QTextLayoutStructii6QFixed ? + 6.88% 6.88% libQt5Gui.so.5 [.] _ZN10QTextFrame8iteratorppEv ? + 6.02% 6.02% libQt5Gui.so.5 [.] _ZNK11QTextFormat11intPropertyEi ? + 5.33% 5.33% libQt5Gui.so.5 [.] _ZNK10QTextFrame13firstPositionEv ? + 4.51% 4.51% libQt5Gui.so.5 [.] _ZNK10QTextBlock8positionEv ? + 3.79% 3.79% libQt5Gui.so.5 [.] _ZNK10QTextBlock13textDirectionEv ? + 3.76% 0.28% BigAnt5 [.] _ZL10markFramesP10QTextFrameiii ? + 2.98% 2.98% libQt5Gui.so.5 [.] _ZNK20QTextDocumentPrivate14objectForIndexEi ? + 2.27% 2.27% libQt5Core.so.5 [.] _ZNK8QVariant8userTypeEv ? + 2.22% 2.22% libQt5Gui.so.5 [.] _ZNK11QTextObject6formatEv ? + 2.13% 1.89% BigAnt5 [.] _ZN6QFixed9fromFixedEi ? + 1.95% 1.95% libQt5Gui.so.5 [.] 0x00000000002f32a8 ? + 1.94% 1.40% BigAnt5 [.] _ZNK5QListIP10QTextFrameE2atEi ? + 1.87% 0.23% BigAnt5 [.] _ZN26StyleDocumentLayoutPrivate11layoutFrameEP10QTextFrameii6QFixedS2_S2_ ? + 1.79% 1.79% libQt5Gui.so.5 [.] _ZNK10QTextFrame12lastPositionEv ? + 1.77% 1.77% libQt5Gui.so.5 [.] _ZNK21QTextFormatCollection6formatEi ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看