33.perf工具使用

文章目錄

    • 基本介紹
    • `perf`命令使用
      • reference


歡迎訪問個人網絡日志🌹🌹知行空間🌹🌹


基本介紹

Perf(Performance Counters for Linux,性能計數器子系統)是一個Linux性能分析工具,用于分析系統和應用程序的運行時性能。這個工具位于 Linux 內核源代碼樹中,具體位置在 tools/perf 目錄下。雖然它是一個用戶空間的應用程序,但卻是唯一一個被包含在 Linux 內核源碼中的復雜用戶軟件。

Perf可以幫助開發人員和系統管理員進行函數級和指令級的熱點查找,可以用來分析程序中熱點函數的CPU占用率,了解CPU性能計數器、內核跟蹤點和硬件事件等信息,從而找到性能瓶頸,優化軟件性能并診斷問題。

通過 perf 命令,我們可以獲得系統在運行過程中的各種性能數據,例如 CPU 利用率、內存使用情況、磁盤 I/O 等。perf 可以用于多個方面的性能分析,以下是一些常用的用途:

  • CPU 性能分析,通過 perf命令,可以監測 CPU 的使用率、上下文切換次數、緩存命中率等指標,可以幫助開發者找出 CPU 性能瓶頸,優化程序的運行效率。
  • 內存性能分析perf 命令可以監測內存的使用情況,例如內存泄漏、內存碎片等問題,可以幫助開發者優化內存的管理,提高系統的穩定性。
  • 函數級別采樣perf可以對程序進行函數級別的采樣,從而了解程序的性能瓶頸在哪里。其基本原理是每隔一個固定時間,CPU 會產生一個中斷,記錄當前是哪個進程、哪個函數,然后給對應的進程和函數加一個統計值,從而知道 CPU 在某個進程或某個函數上花費了多少時間。

如果系統沒有安裝Perf,安裝方式為:

sudo apt install linux-tools-common linux-tools-generic

查看是否安裝成功:

perf --version
# perf version 5.15.148

權限設置,默認運行perf命令需要sudo權限,可以通過修改/etc/sysctt.conf文件進行設置

sudo vi /etc/sysctl.conf
# add line
kernel.perf_event_paranoid = 0

perf命令使用

命令格式為:

perf <options> subcommand <options/arguments>

perf支持很多subcommand選項,常用的子命令有:

  • annotate讀取perf.data,展示帶注釋代碼,實際使用發現展示的匯編代碼
sudo perf annotate -f# Percent│       xor    %r15d,%r15d
#        │       lea    0x9(%rsp),%rbp
#        │       testb  $0x3,0x90(%rsp)
#        │     ↓ je     96
#        │       swapgs
#        │       nop
#        │       xchg   %ax,%ax
#        │       mov    %cr3,%rax
#        │       bts    $0x3f,%rax
#        │       and    $0xffffffffffffe7ff,%rax
#        │       mov    %rax,%cr3
#        │       xchg   %ax,%ax
#        │       mov    $0x48,%ecx
  • list,展示perf命令可以用來評估程序性能的事件
sudo perf list -h# Usage: perf list [<options>] [hw|sw|cache|tracepoint|pmu|sdt|metric|metricgroup|event_glob]

通過上面的命令可以查看事件類型,hwhardware硬件相關事件,PMUPerformance Monitoring Unit相關事件等

  • record,記錄程序運行時的數據
sudo perf record -e cpu-clock -aR sleep 10# [ perf record: Woken up 1 times to write data ]
# [ perf record: Captured and wrote 0.002 MB perf.data (~150 samples) ]
  • report,展示perf命令記錄的數據
sudo perf report -i perf.data
  • stat查看具體某個事件相關的統計結果
sudo perf stat -e cpu-clock -aR sleep 10#  Performance counter stats for 'sleep 10':#               1.13 msec cpu-clock                 #    0.000 CPUs utilized          #       10.002228914 seconds time elapsed#        0.001793000 seconds user
#        0.000000000 seconds sys

statrecord子命令的主要區別是record會將結果保存到perf.data文件中,而stat是直接展示結果。

  • top是直接展示整個系統的CPU內存等使用情況
  • script讀取perf.data數據,并展示跡輸出trace out
子命令作用
annotate匯編代碼及注釋
list查看所有事件
stat查看某事件相關的性能數據
record錄制某事件相關的性能數據,并保存perf.data文件
report加載perf.data文件
top系統相關的性能數據
scriptperf.data相關的trace out

使用perf命令追蹤一個正在運行的進程:

sudo perf stat --pid <pid>

reference

1.https://phoenixnap.com/kb/linux-perf#:~:text=The%20Linux%20perf%20tool%20is,and%20analyzing%20CPU%20event%20data.
2.https://cloud.tencent.com/developer/article/2228048

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

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

相關文章

分析 Base64 編碼和 URL 安全 Base64 編碼

前言 在處理數據傳輸和存儲時&#xff0c;Base64 編碼是一種非常常見的技術。它可以將二進制數據轉換為文本格式&#xff0c;便于在文本環境中傳輸和處理。Go 語言提供了對標準 Base64 編碼和 URL 安全 Base64 編碼的支持。本文將通過一個示例代碼&#xff0c;來分析這兩種編碼…

前端開發-添加公用的ts文件,并在Vue文件中引用

一般我們把頁面要用的公用函數寫在一個ts文件中 通過調用這個ts文件讓我們可以在vue文件中使用函數 Eg&#xff1a;我們現在創建一個formRules.ts文件 然后在我們需要調用該函數體的vue文件中 import { required } from "/utils/formRules";有可能語法一開始會提示…

Phobos勒索病毒:最新變種phobos襲擊了您的計算機?

一、導言 在數字化浪潮中&#xff0c;網絡安全問題日益凸顯&#xff0c;而.Phobos勒索病毒無疑是其中的隱形殺手。它潛伏在網絡的每一個角落&#xff0c;等待著合適的時機對目標發動致命一擊。本文將深入探討.Phobos勒索病毒的新特點、傳播途徑&#xff0c;并提出一系列創新的…

C++面試題記錄(網絡)

TCP與UDP區別 1. TCP面向連接&#xff0c;UDP無連接&#xff0c;所以UDP數據傳輸效率更高 2.UDP可以支持一對一、一對多、多對一、多對多通信&#xff0c;TCP只能一對一 3. TCP需要在端系統維護連接狀態&#xff0c;包括緩存&#xff0c;序號&#xff0c;確認號&#xff0c;…

防火墻——域網絡、專用網絡、公用網絡

在防火墻設置中&#xff0c;域網絡、專用網絡和公用網絡是指計算機連接到網絡時所處的不同環境。每種環境都有不同的安全級別和配置。 1、域網絡&#xff08;寬松&#xff09; 域網絡是指計算機加入了一個Windows域&#xff08;Domain&#xff09;環境&#xff0c;這通常在企業…

程序員的那些經典段子

哈嘍&#xff0c;大家好&#xff0c;我是明智&#xff5e; 本周咱們已經解決了在面試中經常碰到的OOM問題&#xff1a; 《美團一面&#xff0c;發生OOM了&#xff0c;程序還能繼續運行嗎&#xff1f;》 《美團一面&#xff1a;碰到過OOM嗎&#xff1f;你是怎么處理的&#xff1…

白嫖的在線工具類寶藏網站清單,快點擊進來收藏一波

簡單整理了一下自己日常經常使用的10個免費工具網站&#xff0c;建議點贊關注收藏&#xff0c;快點分享給小伙伴們&#xff01; 1.奶牛快傳:用戶體驗更好的網盤工具。 https://cowtransfer.com/ 今年開始使用的一款網盤工具&#xff0c;和百度網盤類似,叫奶牛快傳&#xff0c;如…

【設計模式】——裝飾模式(包裝器模式)

&#x1f4bb;博主現有專欄&#xff1a; C51單片機&#xff08;STC89C516&#xff09;&#xff0c;c語言&#xff0c;c&#xff0c;離散數學&#xff0c;算法設計與分析&#xff0c;數據結構&#xff0c;Python&#xff0c;Java基礎&#xff0c;MySQL&#xff0c;linux&#xf…

數據結構--二叉搜索樹

目錄 二叉搜索樹的概念 二叉樹的實現 結點類 函數接口總覽 實現二叉樹 二叉搜索樹的應用 K模型 KV模型 二叉搜索樹的性能分析 二叉搜索樹的概念 二叉搜索樹&#xff08;Binary Search Tree&#xff0c;簡稱BST&#xff09;是一種特殊的二叉樹&#xff0c;其具有以下幾…

數據庫(6)——數據類型

SQL標準常用的數據類型有&#xff1a; 數據類型含義CHAR(n),CHARACTER(n)長度為n的定長字符串VARCHAR&#xff08;n&#xff09;最大長度為n的變長字符串CLOB字符串大對象BLOB二進制大對象SMALLINT2字節 短整數INT , INTEGER4字節 整數BIGINT8字節 大整數FLOAT(n)精度為n的浮點…

6818 android 修改開機 logo, 編譯腳本分析

問題&#xff1a; 客戶需要去掉 android5.1 的開機logo. 說明&#xff1a; 對于Android5.1 來說&#xff0c;uboot 與kernel 的logo 是一個。 過程&#xff1a; 其實對于開機logo 的修改很簡單&#xff0c;直接參考廠家手冊就可以了。 這是 android4.4 的開機logo 的修改&…

設計一個代辦功能模塊

目錄 1. 需求分析2. 數據庫設計用戶表&#xff08;Users Table&#xff09;代辦任務表&#xff08;Tasks Table&#xff09;訂單表&#xff08;Orders Table&#xff09;評價表&#xff08;Reviews Table&#xff09; 3. 功能實現創建代辦任務前端部分后端部分 接受代辦任務前端…

產品經理-需求收集(二)

1. 什么是需求 指在一定的時期中&#xff0c;一定場景中&#xff0c;無論是心理上還是生理上的&#xff0c;用戶有著某種“需要”&#xff0c;這種“需要”用戶自己不一定知道的&#xff0c;有了這種“需要”后用戶就有做某件事情的動機并促使達到其某種目的&#xff0c;這也就…

FPGA實現多路并行dds

目錄 基本原理 verilog代碼 仿真結果? 基本原理 多路并行dds&#xff0c;傳統DDS的局限性在于輸出頻率有限。根據奈奎斯特采樣定理&#xff0c;單路DDS的輸出頻率應小于系統時鐘頻率的一半。但是在很多地方&#xff0c;要使采樣率保持一致&#xff0c;所以&#xff0c;為了…

【CTF Web】CTFShow web7 Writeup(SQL注入+PHP+進制轉換)

web7 1 阿呆得到最高指示&#xff0c;如果還出問題&#xff0c;就卷鋪蓋滾蛋&#xff0c;阿呆心在流血。 解法 注意到&#xff1a; <!-- flag in id 1000 -->攔截很多種字符&#xff0c;連 select 也不給用了。 if(preg_match("/\|\"|or|\||\-|\\\|\/|\\*|\…

路徑規劃算法的復雜度

通常通過以下指標來衡量&#xff1a; 時間復雜度&#xff1a;這是評估算法執行所需時間的量度。它通常用大O符號表示&#xff0c;給出了算法運行時間隨著輸入規模增長的增長率。例如&#xff0c;一個時間復雜度為O(n^2)的算法在處理大規模輸入時會比時間復雜度為O(n log n)的算…

PostgreSQL的擴展(extensions)-常用的擴展之pg_plan_advsr

PostgreSQL的擴展&#xff08;extensions&#xff09;-常用的擴展之pg_plan_advsr pg_plan_advsr 是 PostgreSQL 社區中的一個擴展&#xff0c;用于分析和改進查詢執行計劃。它能夠自動識別哪些查詢執行緩慢&#xff0c;并提供優化建議&#xff0c;以提高查詢性能。pg_plan_ad…

AI時代存儲大戰,NAND閃存市場風云再起!

隨著人工智能&#xff08;AI&#xff09;相關半導體對高帶寬存儲&#xff08;HBM&#xff09;需求的推動&#xff0c;NAND閃存市場也感受到了這一趨勢的影響。 據《Business Korea》援引行業消息來源稱&#xff0c;NAND閃存市場的競爭正在加劇&#xff0c;而存儲巨頭三星和SK海…

CSP俄羅斯方塊(簡單易懂)

開始將題目理解成了&#xff0c;開始的列應該是從輸入圖案的最左端開始計算&#xff0c;將前面所有的空列都刪掉&#xff0c;代碼如下&#xff1a; #include<bits/stdc.h> using namespace std; const int N 1e410; const int M 1e510; int a[20][20]; int b[5][5];int…

Redis的持久化方式:

Redis提供了兩種數據持久化的方式&#xff1a; RDB 該機制是指在指定的時間間隔內將內存中的數據集快照寫入磁盤。 AOF 該機制將以日志的形式記錄服務器所處理的每一個寫操作。 在Redis服務器啟動之初會讀取文件來重新構建數據庫&#xff0c;以保證啟動后數據庫中的數據是完…