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
    

    此命令會產生一個可用於分析記錄的追蹤資料的腳本。

與我們聯繫