使用 Linux Perf

Linux Perf 提供了針對 JavaScript、原生和作業系統層面的低階 CPU 分析。

重要提示:本教程僅適用於 Linux。

操作方式

Linux Perf 通常透過 linux-tools-common 套件提供。透過 --perf-basic-prof--perf-basic-prof-only-functions 我們能夠啟動支援 perf_events 的 Node.js 應用程式。

--perf-basic-prof 將始終寫入檔案 (/tmp/perf-PID.map),這可能導致磁碟空間無限擴展。如果這是一個問題,請使用模組:linux-perf--perf-basic-prof-only-functions

兩者之間的主要區別在於 --perf-basic-prof-only-functions 產生的輸出較少,這是一個適合生產環境分析的選擇。

# Launch the application an get the PID
$ node --perf-basic-prof-only-functions index.js &
[1] 3870

然後根據所需的頻率記錄事件

$ sudo perf record -F 99 -p 3870 -g

在此階段,您可能希望對應用程式進行負載測試,以生成更多記錄以進行可靠的分析。完成工作後,通過向命令發送 SIGINT (Ctrl-C) 來關閉 perf 進程。

perf 將在 /tmp 資料夾內生成一個檔案,通常稱為 /tmp/perf-PID.map(在上面的示例中:/tmp/perf-3870.map),其中包含每個被調用的函數的跟蹤。

要將這些結果聚合到特定檔案中,執行

$ sudo perf script > perfs.out

原始輸出可能有點難以理解,因此通常將原始檔用於生成火焰圖以進行更好的可視化。

Example nodejs flamegraph

要從此結果生成火焰圖,請按照此教程的第6步進行操作。

因為 perf 輸出並不是一個特定於 Node.js 的工具,它可能在處理 Node.js 中的 JavaScript 代碼優化時出現問題。請參閱 perf 輸出問題 進一步了解。

閱讀時間
2 分鐘閱讀
貢獻
編輯此頁面
目錄
  1. 操作方式
  2. 有用的連結