第29章 perf を停止または再起動せずに、実行中の perf コレクターからトレースポイントを追加および削除する
コントロールパイプインターフェイスを使用して、実行中の perf コレクターで異なるトレースポイントを有効化および無効化することで、perf を停止または再起動せずに、収集するデータを動的に調整できます。これにより、プロセスの停止または再起動中に記録されたはずのパフォーマンスデータが失われることはありません。
29.1. perf を停止または再起動せずに、実行中の perf コレクターにトレースポイントを追加する リンクのコピーリンクがクリップボードにコピーされました!
コントロールパイプインターフェイスを使用して実行中の perf コレクターにトレースポイントを追加し、perf を停止してパフォーマンスデータを損失することなく録画中のデータを調整します。
前提条件
-
perf のインストール で説明されているように、
perfユーザー領域ツールがインストールされている。
手順
制御パイプインターフェイスを設定します。
# mkfifo control ack perf.pipeコントロールファイル設定と、有効にするイベントで
perf recordを実行します。# perf record --control=fifo:control,ack -D -1 --no-buffering -e 'sched:*' -o - > perf.pipeこの例では、
-eオプションの後に'sched:*'を宣言すると、スケジューラーイベントでperf recordが開始されます。2 つ目の端末で、制御パイプの読み取り側を起動します。
# cat perf.pipe | perf --no-pager script -i -コントロールパイプの読み取り側を起動すると、最初の端末で以下のメッセージがトリガーされます。
Events disabled3 つ目の端末で、制御ファイルを使用してトレースポイントを有効にします。
# echo 'enable sched:sched_process_fork' > controlこのコマンドは
perfをトリガーし、宣言されたイベントについて制御ファイル内の現在のイベントリストをスキャンします。イベントが存在する場合は、トレースポイントが有効になり、次のメッセージが最初の端末に表示されます。event sched:sched_process_fork enabledトレースポイントを有効にすると、2 つ目の端末は、トレースポイントを検出した
perfの出力を表示します。bash 33349 [034] 149587.674295: sched:sched_process_fork: comm=bash pid=33349 child_comm=bash child_pid=34056