读取和解析perf.data

Moh*_*him 5 linux performance parsing profiling performancecounter

我正在使用命令perf record来记录性能计数器frm linux。

我想将结果perf.data用作其他编程应用程序的输入。您知道如何读取和解析其中的数据perf.data吗?有没有办法将其转换为.text文件或.csv

osg*_*sgx 5

带有子命令“script”的linux工具的工具中有内置的perf.data解析器和打印机perf

转换perf.data文件

perf script > perf.data.txt
Run Code Online (Sandbox Code Playgroud)

要在其他文件 ( perf record -o filename.data) 中转换 perf 记录的输出,请使用-i选项:

perf script -i filename.data > filename.data.txt
Run Code Online (Sandbox Code Playgroud)

perf script记录在man perf-script,可在http://man7.org/linux/man-pages/man1/perf-script.1.html在线获得

   perf-script - Read perf.data (created by perf record) and display
   trace output

   This command reads the input file and displays the trace recorded.

       'perf script' to see a detailed trace of the workload that was
       recorded.
Run Code Online (Sandbox Code Playgroud)

  • `perf script` 的输出是文本并且是可读的,但是用 python/perl/awk/something 脚本解析它可能并不容易。 (2认同)
  • `perf script` 特别允许使用 python 和 perl 脚本处理 pref 事件。见[`man perf-script-python`](https://github.com/torvalds/linux/blob/master/tools/perf/Documentation/perf-script-python.txt) (2认同)

小智 -3

下面显示了将服务检查性能数据重定向到文本文件以供其他应用程序稍后处理的示例命令定义:

define command{

    command_name    store-service-perfdata

    command_line    /bin/echo -e "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$" >> /usr/local/nagios/var/service-perfdata.dat

    }
Run Code Online (Sandbox Code Playgroud)