Linux Perfの使用
Linux Perfは、JavaScript、ネイティブ、およびOSレベルのフレームを使用した低レベルの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
生の出力は少し理解しにくい場合があるため、通常、生のファイルはより良い視覚化のためにフレームグラフを生成するために使用されます。
この結果からフレームグラフを生成するには、手順6からこのチュートリアルに従ってください。
perf
出力はNode.js固有のツールではないため、Node.jsでJavaScriptコードが最適化される方法に問題がある可能性があります。詳細については、perf出力の問題を参照してください。