27.2. perf 循環バッファーを使用したパフォーマンスのボトルネックを監視するための特定のデータの収集
perf ツールを使用すると、関心のあるデータのみを収集するために指定したイベントによってトリガーされる循環バッファーを作成できます。イベント固有のデータを収集する循環バッファーを作成するには、perf に --overwrite および --switch-output-event オプションを使用します。
前提条件
-
perf のインストール で説明されているように、
perfユーザー領域ツールがインストールされている。 プロセスまたはアプリケーション内の関心のある場所に、監視したいプロセスまたはアプリケーションに uprobe を配置している。
# perf probe -x /path/to/executable -a function Added new event: probe_executable:function (on function in /path/to/executable) You can now use it in all perf tools, such as: perf record -e probe_executable:function -aR sleep 1
手順
トリガーイベントとして uprobe を使用して循環バッファーを作成します。
# perf record --overwrite -e cycles --switch-output-event probe_executable:function ./executable [ perf record: dump data: Woken up 1 times ] [ perf record: Dump perf.data.2021021012231959 ] [ perf record: dump data: Woken up 1 times ] [ perf record: Dump perf.data.2021021012232008 ] ^C[ perf record: dump data: Woken up 1 times ] [ perf record: Dump perf.data.2021021012232082 ] [ perf record: Captured and wrote 5.621 MB perf.data.<timestamp> ]この例では、実行可能ファイルを開始し、
-eオプションの後に指定された CPU サイクルを、perfが--switch-output-eventオプションの後に指定されたトリガーイベントである uprobe を検出するまで収集します。この時点で、perfは循環バッファーにあるすべてのデータのスナップショットを取得し、タイムスタンプで識別される一意のperf.dataファイルに保存します。この例では、合計 2 つのスナップショットが生成され、最後のperf.dataファイルは Ctrl+c を押すことによって強制されました。