perf 命令

yum install perf -y
[root@k8s bin]# perf -h

 usage: perf [--version] [--help] [OPTIONS] COMMAND [ARGS]

 The most commonly used perf commands are:
   annotate        Read perf.data (created by perf record) and display annotated code
   archive         Create archive with object files with build-ids found in perf.data file
   bench           General framework for benchmark suites
   buildid-cache   Manage build-id cache.
   buildid-list    List the buildids in a perf.data file
   c2c             Shared Data C2C/HITM Analyzer.
   config          Get and set variables in a configuration file.
   data            Data file related processing
   diff            Read perf.data files and display the differential profile
   evlist          List the event names in a perf.data file
   ftrace          simple wrapper for kernel's ftrace functionality
   inject          Filter to augment the events stream with additional information
   kallsyms        Searches running kernel for symbols
   kmem            Tool to trace/measure kernel memory properties
   kvm             Tool to trace/measure kvm guest os
   list            List all symbolic event types
   lock            Analyze lock events
   mem             Profile memory accesses
   record          Run a command and record its profile into perf.data
   report          Read perf.data (created by perf record) and display the profile
   sched           Tool to trace/measure scheduler properties (latencies)
   script          Read perf.data (created by perf record) and display trace output
   stat            Run a command and gather performance counter statistics
   test            Runs sanity tests.
   timechart       Tool to visualize total system behavior during a workload
   top             System profiling tool.
   version         display the version of perf binary
   probe           Define new dynamic tracepoints
   trace           strace inspired tool

 See 'perf help COMMAND' for more information on a specific command.
perf 是一个用于性能分析的工具,主要用于 Linux 系统。以下常用命令的简要解释:

annotate: 读取 perf.data 文件,并显示带注释的代码,帮助你查看性能数据与源代码的对应关系。
archive: 创建一个包含 perf.data 文件中找到的对象文件及其构建ID的归档文件。
bench: 提供一个通用框架,用于基准测试套件。
buildid-cache: 管理构建ID缓存,帮助快速查找对象文件。
buildid-list: 列出 perf.data 文件中的所有构建ID。
c2c: 共享数据C2C/HITM分析工具,分析缓存一致性问题。
config: 获取和设置配置文件中的变量。
data: 处理与数据文件相关的操作。
diff: 比较两个 perf.data 文件,并显示差异化的性能分析。
evlist: 列出 perf.data 文件中事件的名称。
ftrace: 简单的内核 ftrace 功能的包装工具,用于跟踪函数调用。
inject: 过滤器,用于增强事件流,添加额外信息。
kallsyms: 在运行中的内核中搜索符号。
kmem: 工具,用于跟踪和测量内核内存属性。
kvm: 工具,用于跟踪和测量 KVM 客户操作系统的性能。
list: 列出所有符号事件类型。
lock: 分析锁事件,帮助识别性能瓶颈。
mem: 分析内存访问情况,帮助优化内存性能。
record: 运行命令并将其性能数据记录到 perf.data 文件中。
report: 读取 perf.data 文件并显示性能分析报告。
sched: 跟踪和测量调度程序的属性(如延迟)。
script: 读取 perf.data 文件并显示跟踪输出,便于分析。
stat: 运行命令并收集性能计数器统计信息。
test: 运行一些基本的自检测试。
timechart: 可视化工作负载期间系统的整体行为。
top: 系统性能分析工具,实时显示系统性能。
version: 显示 perf 二进制文件的版本信息。
probe: 定义新的动态跟踪点,允许用户在特定位置插入跟踪。
trace: 类似于 strace 的工具,用于跟踪系统调用。

# 1. 记录性能数据
perf record -e cpu-cycles ./my_application
# 记录 my_application 的 CPU 周期数据。

# 2. 查看记录的性能报告
perf report
# 显示上一次记录的性能数据报告。

# 3. 分析内存访问
perf mem record ./my_application
# 记录 my_application 的内存操作数据。

# 4. 显示内存访问报告
perf mem report
# 显示内存访问的分析报告。

# 5. 监控特定 CPU
perf stat -C 0,1 ./my_application
# 在 CPU 0 和 1 上运行 my_application 并收集统计信息。

# 6. 记录特定事件
perf record -e cache-misses ./my_application
# 记录 my_application 的缓存未命中事件。

# 7. 生成时间图表
perf timechart record ./my_application
# 生成 my_application 的时间图表。

# 8. 显示事件列表
perf list
# 列出所有可用的性能事件。

# 9. 查看特定事件的统计信息
perf stat -e instructions,cycles ./my_application
# 统计 my_application 的指令和周期数。

# 10. 记录并显示内核事件
perf record -e irq:irq_handler_entry ./my_kernel_module
perf report
# 记录内核中 IRQ 处理程序的入口事件,并显示报告。

# 11. 过滤特定符号
perf report --symbol-filter=my_function
# 仅显示与 my_function 相关的性能数据。

# 12. 导出原始样本
perf mem -D ./my_application
# 将原始内存访问样本导出到屏幕。

# 13. 监控系统调用
perf trace
# 实时跟踪系统调用。

# 14. 进行对比分析
perf diff perf.data.old perf.data.new
# 比较两个性能数据文件之间的差异。

# 15. 记录用户空间和内核空间事件
perf record -K -U ./my_application
# 同时记录用户空间和内核空间的事件。

# 16. 使用自定义的事件类型
perf record -e cycles:u ./my_application
# 仅记录用户空间的 CPU 周期事件。

# 17. 监控特定的内存操作类型
perf mem -t load ./my_application
# 仅记录内存加载操作。

# 18. 查看特定 CPU 的性能统计
perf stat -C 0 ./my_application
# 仅在 CPU 0 上运行并收集统计信息。

# 19. 记录特定线程的性能数据
perf record -p <pid>
# 记录特定进程 ID(PID)对应的线程的性能数据。

# 20. 监控系统的 CPU 使用情况
perf stat -a ./my_application
# 在系统范围内监控 my_application 的 CPU 使用情况。

# 21. 记录内存使用情况
perf record -e page-faults ./my_application
# 记录 my_application 的页面错误事件。

# 22. 生成调用图
perf record -g ./my_application
perf report --stdio
# 生成调用图并在终端显示报告。

# 23. 记录并显示上下文切换
perf record -e context-switches ./my_application
perf report
# 记录上下文切换事件并显示报告。

# 24. 监控特定的文件 I/O 操作
perf record -e block:block_rq_issue ./my_application
perf report
# 记录块设备请求发起事件。

# 25. 记录程序的执行时间
perf stat -e task-clock ./my_application
# 统计程序的执行时间。

# 26. 监控系统调用的延迟
perf record -e syscalls:sys_enter_* ./my_application
perf report
# 记录所有系统调用的入口事件。

# 27. 记录内存带宽使用情况
perf record -e bus-cycles ./my_application
# 记录总线周期事件,分析内存带宽。

# 28. 使用过滤器仅显示特定模块的数据
perf report --dsos=my_module.so
# 仅显示与 my_module.so 相关的性能数据。

# 29. 监控特定的 CPU 核心
perf stat -C 1 -e cycles,instructions ./my_application
# 在 CPU 核心 1 上统计周期和指令数。

# 30. 记录并显示硬件事件
perf record -e L1-dcache-load-misses ./my_application
perf report
# 记录 L1 数据缓存加载未命中事件。

# 31. 以 JSON 格式导出报告
perf script -i perf.data > output.json
# 将性能数据导出为 JSON 格式。

# 32. 监控内存访问延迟
perf mem record -t load ./my_application
perf mem report
# 记录内存加载的访问延迟。

# 33. 生成火焰图
perf script | ./stackcollapse-perf.pl | ./flamegraph.pl > flamegraph.svg
# 生成火焰图,分析性能瓶颈。

# 34. 设置采样频率
perf record -F 99 ./my_application
# 以 99 Hz 的频率进行采样。

# 35. 记录所有线程的性能数据
perf record -e cpu-cycles -a
# 记录系统中所有线程的 CPU 周期数据。

# 36. 监控内存分配
perf record -e malloc ./my_application
perf report
# 记录内存分配事件。

# 37. 仅显示未解析符号
perf report --hide-unresolved
# 仅显示已解析符号的性能数据。

# 38. 监控 CPU 缓存命中
perf stat -e cache-references,cache-misses ./my_application
# 统计缓存引用和未命中事件。

# 39. 记录并分析用户空间的 CPU 使用
perf record -e cpu-clock -U ./my_application
perf report
# 记录用户空间的 CPU 使用情况。

# 40. 监控特定的内核函数
perf record -e kmalloc ./my_kernel_module
perf report
# 记录内核模块中的 kmalloc 函数调用。

# 41. 记录并分析上下文切换
perf record -e context-switches ./my_application
perf report
# 记录上下文切换事件并生成报告。

# 42. 监控 CPU 频率
perf stat -e cpu-clock,task-clock ./my_application
# 统计 CPU 时钟和任务时钟。

# 43. 记录特定事件并输出到文件
perf record -o output.data -e cycles ./my_application
# 将性能数据输出到 output.data 文件中。

# 44. 监控特定的系统调用
perf trace -e sys_enter_open ./my_application
# 监控 open 系统调用的执行情况。

# 45. 记录并显示硬件性能事件
perf record -e instructions,cache-misses ./my_application
perf report
# 记录指令和缓存未命中事件。

# 46. 监控线程的 CPU 使用情况
perf stat -p <pid>
# 监控特定进程的 CPU 使用情况。

# 47. 记录内存分配和释放
perf record -e malloc,free ./my_application
perf report
# 记录内存分配和释放事件。

# 48. 监控 I/O 操作
perf record -e block:block_rq_complete ./my_application
perf report
# 记录块设备请求完成事件。

# 49. 监控系统调用的返回值
perf trace -e sys_exit_* ./my_application
# 监控所有系统调用的返回情况。

# 50. 监控特定的用户空间函数
perf record -g -e my_function ./my_application
perf report
# 记录特定用户空间函数的调用情况。

# 51. 生成详细的调用图
perf record -g ./my_application
perf script > out.txt
# 生成详细的调用图并输出到 out.txt 文件。

# 52. 监控特定的内存区域
perf mem record -a -t load ./my_application
# 记录所有内存加载操作。

# 53. 记录并分析 CPU cache 事件
perf record -e cache-misses,cache-references ./my_application
perf report
# 记录和分析缓存未命中和引用事件。

# 54. 监控特定的内核事件
perf record -e irq:irq_handler_exit ./my_application
perf report
# 记录 IRQ 处理程序退出事件。

# 55. 监控特定的进程
perf top -p <pid>
# 实时监控特定进程的性能数据。

# 56. 记录并分析系统级性能
perf record -a ./my_application
perf report
# 在系统级别记录性能数据并生成报告。

# 57. 监控 CPU 负载
perf stat -a -e cpu-load ./my_application
# 监控 CPU 负载情况。

# 58. 监控内存访问模式
perf mem record -t store ./my_application
# 记录内存存储操作。

# 59. 监控上下文切换的频率
perf stat 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值