Native Image 中对 Linux Perf 性能分析器的支持

perf 性能分析器是 Linux 中的一款性能分析工具,可用于收集和分析各种性能相关数据,例如 CPU 利用率、内存使用情况等。它对于分析和理解应用程序的行为特别有用。

安装 #

Perf 是一款用于 Linux 系统的性能分析工具。大多数发行版都预装了 perf,但如果未预装,您可以使用包管理器进行安装。

要在 Oracle Linux/Red Hat/CentOS 上安装 perf,请运行此命令

sudo yum install perf

要在 Debian/Ubuntu 上安装 perf,请逐一运行以下命令

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

安装 perf 后,备份以下选项的默认值

cat /proc/sys/kernel/perf_event_paranoid > perf_event_paranoid.backup
cat /proc/sys/kernel/kptr_restrict > kptr_restrict.backup

然后将它们设置为新的所需值

echo -1 > /proc/sys/kernel/perf_event_paranoid
echo 0 > /proc/sys/kernel/kptr_restrict

在上述示例中,使用 -10 作为值,这是限制最少的,因此不建议在生产代码中使用。您可以根据需要自定义这些值。

perf_event_paranoid 有四种不同的级别(值)

  • -1:允许所有用户使用(几乎)所有事件。
  • >=0:禁止没有 CAP_SYS_ADMIN 权限的用户使用 ftrace 函数跟踪点。
  • >=1:禁止没有 CAP_SYS_ADMIN 权限的用户访问 CPU 事件。
  • >=2:禁止没有 CAP_SYS_ADMIN 权限的用户进行内核分析。

kptr_restrict 有三种不同的级别(值)

  • 0:所有用户均可读取内核指针。
  • 1:内核指针仅对特权用户(具有 CAP_SYS_ADMIN 功能的用户)可访问。
  • 2:内核指针对所有用户隐藏。

使用完 perf 后,恢复原始值

cat perf_event_paranoid.backup > /proc/sys/kernel/perf_event_paranoid
cat kptr_restrict.backup > /proc/sys/kernel/kptr_restrict

构建原生可执行文件 #

以下命令假定 native-image 已在系统路径中并可用。如果未安装,请参考“入门”指南。

native-image -g <entry_class>

-g 选项指示 Native Image 为生成的二进制文件生成调试信息。例如,perf 可以利用此调试信息在跟踪中为类型和方法提供正确的名称。

基本操作 #

CPU 性能分析 #

  1. 列出所有可用事件

    perf list
    

    此命令显示可用于性能分析的所有可用事件列表。

  2. 记录 CPU 事件

    perf record -e <event> -o perf.data <your_executable>
    

    <event> 替换为列表中所需的事件。此命令分析您的可执行文件并将数据保存到名为 perf.data 的文件中。

  3. 生成报告

    perf report
    

    此命令根据收集的数据生成报告。您可以使用各种选项来自定义输出。

内存性能分析 #

  1. 记录内存事件

    perf record -e memory:<event> -o perf.data <your_executable>
    

    <event> 替换为特定的内存事件。此命令分析内存相关事件。

  2. 生成内存报告

    perf report --sort=dso
    

    此命令生成一份专注于内存相关事件的报告,按动态共享对象 (DSO) 排序。

跟踪 #

  1. 记录系统范围的跟踪

    sudo perf record -a -g -o perf.data
    

    此命令记录系统范围的跟踪(包括调用图信息),并将数据保存到名为 perf.data 的文件中。系统范围跟踪请使用 sudo。

  2. 生成跟踪报告

    perf script
    

    此命令生成一个可用于分析记录的跟踪数据的脚本。

联系我们