perf?命令詳解

?perf 命令詳解?

perf?是 Linux 系統中最強大的 ?性能分析工具?,基于內核的?perf_events?子系統實現,支持硬件性能計數器(PMC)、軟件事件跟蹤等功能,用于定位 CPU、內存、I/O 等性能瓶頸。以下是其核心用法與實戰指南:

一、安裝與基礎配置?
  1. ?安裝

# Debian/Ubuntu
sudo apt install linux-tools-common linux-tools-$(uname -r)# CentOS/RHEL
sudo yum install perf# 驗證安裝
perf --version

?? ? 2.?內核符號支持?

  • 安裝調試符號包(如?linux-image-$(uname -r)-dbgsym),以便?perf?解析內核函數名。
  • 臨時允許非特權用戶使用性能監控(可選):
sudo sysctl kernel.perf_event_paranoid=-1
二、核心功能與子命令?
子命令功能描述
perf stat統計程序運行的硬件事件(如緩存命中率)
perf record記錄性能數據(生成?.data?文件)
perf report分析?record?生成的數據
perf top實時監控系統或進程的性能熱點
perf trace跟蹤系統調用(類似?strace
perf probe動態添加內核或用戶空間探針
三、常用場景與實戰示例?
?1. 統計程序性能事件
# 統計命令執行期間的 CPU 周期、緩存命中等
perf stat -e cycles,cache-misses,branch-misses ./my_program

輸出示例:

 Performance counter stats for './my_program':2,356,789      cycles                    # 3.801 GHz45,678      cache-misses              # 2.123 % of all cache refs12,345      branch-misses             # 0.56% of all branches0.001234567 seconds time elapsed
?2. 采樣 CPU 熱點函數
# 記錄進程的 CPU 使用(采樣頻率 99Hz)
perf record -F 99 -g -- ./my_program  # -g 記錄調用棧
perf report --stdio                   # 文本報告
perf report --gui=gtk                 # 圖形化分析(需安裝 gtk 支持)

輸出解讀?:

  • ?Overhead?:函數占用的 CPU 時間比例。
  • ?Command?:進程名。
  • ?Shared Object?:所屬動態庫或可執行文件。
?3. 生成火焰圖(Flame Graph)
# 1. 記錄性能數據
perf record -F 99 -g -- ./my_program
# 2. 生成折疊堆棧
perf script > out.perf
stackcollapse-perf.pl out.perf > out.folded
# 3. 生成火焰圖
flamegraph.pl out.folded > flamegraph.svg

火焰圖直觀展示函數調用棧的 CPU 占用分布,橫向寬度表示耗時比例。

?4. 跟蹤系統調用
# 類似 strace,但性能更高(記錄所有線程)
perf trace -e 'syscalls:sys_enter_*' ./my_program

過濾特定系統調用:

perf trace -e 'syscalls:sys_enter_open,syscalls:sys_enter_read'
?5. 動態添加探針
# 在內核函數 add_to_page_cache_lru 添加探針
perf probe --add add_to_page_cache_lru
# 跟蹤探針事件
perf record -e probe:add_to_page_cache_lru -a
四、高級功能?
  1. ?硬件性能計數器?
    使用?perf list?查看支持的事件(如?instructionsbranch-misses):

perf stat -e instructions,L1-dcache-load-misses ./my_program

?? ? 2.?用戶空間靜態探針?
在代碼中插入靜態探針(需編譯時支持):

#include <sys/sdt.h>
int main() {DTRACE_PROBE("myapp", "operation_start");  // 探針點// ...
}

跟蹤探針:

perf buildid-cache --add ./my_program  # 注冊程序
perf probe --exec=./my_program --add 'myapp:operation_start'
perf record -e 'probe_myapp:*' ./my_program
五、注意事項?
  1. ?權限要求?
    • 部分功能(如硬件計數器)需要?root?權限或?CAP_PERFMON?能力。
  2. ?性能開銷?
    • perf record?高頻采樣可能導致目標程序變慢,生產環境慎用。
  3. ?符號解析?
    • 若函數名顯示為十六進制地址,需安裝調試符號(如?-dbgsym?包)。

?六、與其他工具對比?
工具特點適用場景
perf內核級支持,硬件級性能分析CPU/內存瓶頸、調用鏈分析
strace系統調用跟蹤文件/網絡操作調試
gdb源碼級調試程序崩潰、邏輯錯誤

掌握?perf?可快速定位性能問題,尤其在高并發、低延遲場景中作用顯著。結合火焰圖和動態探針,能實現從宏觀到微觀的全方位分析。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/900024.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/900024.shtml
英文地址,請注明出處:http://en.pswp.cn/news/900024.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【大模型基礎_毛玉仁】6.4 生成增強

目錄 6.4 生成增強6.4.1 何時增強1&#xff09;外部觀測法2&#xff09;內部觀測法 6.4.2 何處增強6.4.3 多次增強6.4.4 降本增效1&#xff09;去除冗余文本2&#xff09;復用計算結果 6.4 生成增強 檢索器得到相關信息后&#xff0c;將其傳遞給大語言模型以期增強模型的生成能…

Leetcode 合集 -- 排列問題 | 遞歸

題目1 子集2 思路 代碼 題目2 全排列2 思路 代碼 題目3 排列總和 思路 代碼 題目4 排列總和2 思路 代碼

vue-office 支持預覽多種文件(docx、excel、pdf、pptx)預覽的vue組件庫

官網地址&#xff1a;https://github.com/501351981/vue-office 支持多種文件(docx、excel、pdf、pptx)預覽的vue組件庫&#xff0c;支持vue2/3。也支持非Vue框架的預覽。 1.在線預覽word文件&#xff08;以及本地上傳預覽&#xff09; 1.1&#xff1a;下載組件庫 npm inst…

【trino】trino配置證書https tls/ssl訪問

trini版本470 一、官方文檔 doc 在Security/TLS and HTTPS、Security/PEM files和Security/JKS files下 openssl文檔 二、配置trino 2.1 創建server.cnf文件 [ req ] distinguished_name req_distinguished_name req_extensions v3_req[ req_distinguished_name ] coun…

ZCC8702,LED驅動芯片的“六邊形戰士”可替代SY8707

在LED照明的璀璨舞臺上&#xff0c;驅動芯片猶如幕后英雄&#xff0c;默默掌控著燈光的閃耀與變幻。ZCC8702作為一款集大成的LED驅動芯片&#xff0c;憑借其卓越的性能、廣泛的應用范圍和出色的穩定性&#xff0c;成為了這個領域中當之無愧的“六邊形戰士”。今天&#xff0c;就…

Vue 數據傳遞流程圖指南

今天&#xff0c;我們探討一下 Vue 中的組件傳值問題。這不僅是我們在日常開發中經常遇到的核心問題&#xff0c;也是面試過程中經常被問到的重要知識點。無論你是初學者還是有一定經驗的開發者&#xff0c;掌握這些傳值方式都將幫助你更高效地構建和維護 Vue 應用 目錄 1. 父…

Git Restore 命令詳解與實用示例

文章目錄 Git Restore 命令詳解與實用示例1. 恢復工作區文件到最后一次提交的狀態基本命令示例恢復所有更改 2. 恢復某個文件到特定提交的狀態基本命令示例 3. 恢復暫存區的文件基本命令示例恢復所有暫存的文件 git restore 的常見選項git restore 與 git checkout 比較總結 Gi…

AI 防口誤指南_LLM 輸出安全實踐

在數字化轉型的浪潮中&#xff0c;大語言模型(以下統稱LLM)已成為企業技術棧中不可或缺的智能組件&#xff0c;這種強大的AI技術同時也帶來了前所未有的安全挑戰。它輸出的內容如同雙面刃&#xff0c;一面閃耀著效率與創新的光芒&#xff0c;另一面卻隱藏著"幻覺"與不…

程序化廣告行業(55/89):DMP與DSP對接及數據統計原理剖析

程序化廣告行業&#xff08;55/89&#xff09;&#xff1a;DMP與DSP對接及數據統計原理剖析 大家好呀&#xff01;在數字化營銷的大趨勢下&#xff0c;程序化廣告已經成為眾多企業實現精準營銷的關鍵手段。上一篇博客我們一起學習了程序化廣告中的人群標簽和Look Alike原理等知…

運維之 Centos7 防火墻(CentOS 7 Firewall for Operations and Maintenance)

運維之 Centos7 防火墻 1.介紹 Linux CentOS 7 防火墻/端口設置&#xff1a; 基礎概念&#xff1a; 防火墻是一種網絡安全設備&#xff0c;用于監控和控制網絡流量&#xff0c;以保護計算機系統免受未經授權的訪問和惡意攻擊。Linux CentOS 7操作系統自帶了一個名為iptables的…

第十五屆藍橋杯大賽軟件賽省賽Python 大學 C 組題目試做(下)【本期題目:砍柴,回文字符串】

okk&#xff0c;大伙&#xff0c;這一期我們就把C組的題目刷完。 本期題目&#xff1a;砍柴&#xff0c;回文字符串 文章目錄 砍柴題目思路分析舉個栗子思路總結 代碼 回文字符串題目思路分析代碼 感謝大伙觀看&#xff0c;別忘了三連支持一下大家也可以關注一下我的其它專欄&a…

Design Compiler:庫特征分析(ALIB)

相關閱讀 Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482 簡介 在使用Design Compiler時&#xff0c;可以對目標邏輯庫進行特征分析&#xff0c;并創建一個稱為ALIB的偽庫&#xff08;可以被認為是緩存&#xff09;&…

MySQL索引原理:從B+樹手繪到EXPLAIN

最近在學后端&#xff0c;學到了這里做個記錄 一、為什么索引像書的目錄&#xff1f; 類比&#xff1a;500頁的技術書籍 vs 10頁的目錄缺點&#xff1a;全表掃描就像逐頁翻找內容優點&#xff1a;索引將查詢速度從O(n)提升到O(log n) 二、B樹手繪課堂 1. 結構解剖&#xff0…

全連接RNN反向傳播梯度計算

全連接RNN反向傳播梯度計算 RNN數學表達式BPTT(隨時間的反向傳播算法)參數關系網絡圖L對V的梯度L對U的梯度L對W和b的梯度 RNN數學表達式 BPTT(隨時間的反向傳播算法) 參數關系網絡圖 L對V的梯度 L對U的梯度 L對W和b的梯度

C++高效讀取大規模文本格式點云(windows)

需使用VS2017及以上版本&#xff0c;C語言標準選擇C17&#xff0c;支持OpenMP。 執行效率明顯優于ifstream stof。 // 點云數據結構 struct PointXYZ {std::array<float, 3> coord; };float string_to_float_fast(const std::string& str) {float value;auto [p…

【Linux】進程信號的捕捉處理

個人主頁~ 進程信號的捕捉處理 一、信號捕捉處理的概述1、信號捕捉處理全過程2、用戶態和內核態的區別&#xff08;一&#xff09;用戶態&#xff08;二&#xff09;內核態&#xff08;三&#xff09;用戶態與內核態的切換&#xff08;四&#xff09;硬件條件 二、再談進程地址…

Nyquist內置函數-概述

1 Nyquist內置函數-概述 本章提供奈奎斯特&#xff08;Nyquist&#xff09;語言參考。操作按功能和抽象級別分類。奈奎斯特在兩個重要級別上實現&#xff1a;“高級”級別支持行為抽象&#xff0c;這意味著像 stretch 和 at 這樣的操作可以應用。這些函數是典型用戶期望使用的…

數據驅動防災:AI 大模型在地質災害應急決策中的關鍵作用。基于DeepSeek/ChatGPT的AI智能體開發

全球氣候變化加劇了滑坡、泥石流等地質災害的發生頻率與不確定性&#xff0c;傳統基于統計與物理模型的預測方法常受限于?數據稀疏性?與?動態耦合復雜性?。近年來&#xff0c;AI智能體&#xff08;AI Agents&#xff09;與大型語言模型&#xff08;LLMs&#xff09;的突破為…

光譜相機在工業中的應用

光譜相機&#xff08;多光譜、高光譜、超光譜成像技術&#xff09;在工業領域通過捕捉物質的光譜特征&#xff08;反射、透射、輻射等&#xff09;&#xff0c;結合化學計量學與人工智能算法&#xff0c;為工業檢測、質量控制和工藝優化提供高精度、非接觸式的解決方案。以下是…

Dify工作流中如何去除deepseek-r1思考內容

在工作流中deepseek-r1的think標簽內部的內容&#xff0c;很容易讓工作流其他的llm產生幻覺&#xff0c;導致不能良好的生成目標效果。 我們通過代碼的方式讓deepseek-r1既有think思考鏈的效果&#xff0c;又不傳遞思考鏈。 工作流的邏輯為上圖 去除think中的代碼為 import re…