perf

perf 是 Linux 系统中的一个性能分析工具,全称为 Performance Analysis Tool,是 Linux 内核自带的一个强大的性能调试和诊断工具,用于分析应用程序和系统的性能瓶颈。
perf 可以帮助开发者和系统管理员跟踪 CPU、内存、I/O 等系统资源的使用情况,并找出性能问题的根源。
perf 的主要功能
性能事件采样:
跟踪 CPU 使用情况、上下文切换、分支预测等性能事件。
通过硬件性能计数器和内核事件收集数据。
热点分析:
分析代码中的热点区域(如函数、代码块),确定哪部分代码最耗时。
调用栈分析:
捕获函数调用栈,找出程序的性能瓶颈。
系统概况:
显示整个系统的性能概况,帮助优化全局性能。
I/O 和内存分析:
监控内存分配、缓存命中率、I/O 读写等指标。
跟踪和分析特定进程:
对指定的进程进行性能跟踪,分析其运行情况。
安装 perf
在大多数现代 Linux 发行版中,perf 是内核的一部分,可以通过包管理器安装。例如:
Ubuntu/Debian:
sudo apt update
sudo apt install linux-tools-common linux-tools-$(uname -r)
perf 的基本用法

  1. 查看帮助
    perf help
  2. 系统性能概览
    显示系统性能的总体情况:perf stat ls
    示例输出:
    Performance counter stats for 'ls':
    0.0012908 task-clock (msec)
    1 context-switches
    0 cpu-migrations
    75 page-faults
  3. 记录和分析程序性能
    记录性能数据:
    perf record ./my_program
    这会生成一个默认名为 perf.data 的文件,记录性能事件。
    分析记录的数据:
    perf report
    输出程序的性能热点,比如哪个函数或代码段占用了最多时间。
  4. 监控特定事件
    监控 CPU 缓存、分支预测等事件:
    perf stat -e cache-misses,branch-misses ./my_program
  5. 函数调用栈
    捕获程序的函数调用栈:
    perf record -g ./my_program
    perf report
    输出包含调用关系的性能数据,帮助分析调用栈中的性能问题。
  6. 实时监控系统性能
    实时监控系统性能指标:
    perf top
    类似 top 命令,但显示的是性能热点。
    perf 的优势
    内核支持:直接集成到 Linux 内核,支持硬件性能计数器。
    强大功能:可以分析从应用程序到内核的各种性能问题。
    细粒度分析:能够深入到函数、代码块级别进行分析。
posted @ 2025-01-16 15:23  苏为末~  阅读(99)  评论(0)    收藏  举报