- 適用於 JDK 23 的 GraalVM (最新)
- 適用於 JDK 24 的 GraalVM (搶先體驗)
- 適用於 JDK 21 的 GraalVM
- 適用於 JDK 17 的 GraalVM
- 封存
- 開發版本
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
在上面的範例中,-1
和 0
被用作值,它們是限制最少的,因此不建議在生產程式碼中使用它們。您可以根據您的需求自訂這些值。
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 分析 #
-
列出所有可用的事件
perf list
此命令會顯示可用於分析的所有可用事件的清單。
-
記錄 CPU 事件
perf record -e <event> -o perf.data <your_executable>
將
<event>
替換為清單中所需的事件。此命令會分析您的執行檔,並將資料儲存到名為 perf.data 的檔案中。 -
產生報告
perf report
此命令會根據收集的資料產生報告。您可以使用各種選項自訂輸出。
記憶體分析 #
-
記錄記憶體事件
perf record -e memory:<event> -o perf.data <your_executable>
將
<event>
替換為特定的記憶體事件。此命令會分析與記憶體相關的事件。 -
產生記憶體報告
perf report --sort=dso
此命令會產生一份專注於與記憶體相關事件的報告,並依動態共用物件 (DSO) 排序。
追蹤 #
-
記錄全系統追蹤
sudo perf record -a -g -o perf.data
此命令會記錄全系統追蹤,包括呼叫圖資訊,並將資料儲存到名為 perf.data 的檔案中。對於全系統追蹤,請使用 sudo。
-
產生追蹤報告
perf script
此命令會產生一個可用於分析記錄的追蹤資料的腳本。