linux

linux perf命令分析结果

小樊
88
2024-11-30 22:12:57
栏目: 智能运维

perf 是一个用于分析 Linux 系统性能的强大工具

  1. perf record:用于记录性能事件。它会在指定的时间间隔内收集系统中的性能事件数据,并将它们写入一个名为 perf.data 的文件中。例如,要记录 CPU 使用率、内存访问和磁盘 I/O 事件,可以使用以下命令:
sudo perf record -e cpu-clock -e memory-access -e disk-io -- sleep 60

这将记录 60 秒内的性能事件数据。

  1. perf report:用于分析 perf.data 文件中的性能事件数据。它会生成一个易于理解的报告,显示各种性能事件的计数、百分比和耗时等信息。例如,要分析刚刚记录的 perf.data 文件,可以使用以下命令:
sudo perf report -n --stdio

这将显示一个类似于以下的报告:

# Overhead   Command  Shared Object  Symbol
# ........  ........  .............  ......
#
    50.00%  myprog    myprog          [.] my_function
             |
             |--50.00%-- main
             |          start_thread
             |
             |--50.00%-- main
             |          clone

这个报告表示 my_function 函数占用了 50% 的 CPU 时间,而 main 函数也占用了 50% 的 CPU 时间。

  1. perf stat:用于收集和报告系统性能统计信息。它可以帮助您了解系统的整体性能,例如 CPU 使用率、内存访问次数和磁盘 I/O 操作等。例如,要收集系统性能统计信息,可以使用以下命令:
sudo perf stat -I 1000

这将每 1000 毫秒收集一次性能统计信息。

  1. perf diff:用于比较两个 perf.data 文件之间的性能差异。它可以帮助您了解在两个不同版本之间的性能变化。例如,要比较两个版本的 perf.data 文件,可以使用以下命令:
sudo perf diff --stdio file1.perf.data file2.perf.data

这将显示一个类似于以下的报告:

# Diff: myprog-0.1 vs myprog-0.2
#
# Overhead Command  Shared Object Symbol
# ........  ........  .............  ......
#
     -5.00%  myprog    myprog          [.] my_function
             |
             |--5.00%-- main
             |          start_thread
             |
             |--5.00%-- main
             |          clone

这个报告表示 my_function 函数在 myprog-0.2 版本中比 myprog-0.1 版本慢了 5%。

这些只是 perf 命令的一些基本用法。您可以通过查看手册页(man perf)和在线文档来了解更多关于 perf 的信息。

0
看了该问题的人还看了