Red Hat Training
A Red Hat training course is available for RHEL 8
第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 disabled
3 つ目の端末で、制御ファイルを使用してトレースポイントを有効にします。
# 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