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

生の出力は少し理解しにくい場合があるため、通常、生のファイルはより良い視覚化のためにフレームグラフを生成するために使用されます。

Example nodejs flamegraph

この結果からフレームグラフを生成するには、手順6からこのチュートリアルに従ってください。

perf出力はNode.js固有のツールではないため、Node.jsでJavaScriptコードが最適化される方法に問題がある可能性があります。詳細については、perf出力の問題を参照してください。

読書時間
2分
貢献する
このページを編集
目次
  1. 方法
  2. 役に立つリンク