PIDを含む「リアルタイム」でトラッキングポイントを表示できるコマンドはありますか?

PIDを含む「リアルタイム」でトラッキングポイントを表示できるコマンドはありますか?

「参照」のコマンドのリストを含むperf scriptperf traceおよびに関するドキュメントを見ました。trace-cmd

sched:sched_process_execたとえば、「リアルタイム」を使用して追跡できますperf trace -a --no-syscalls -e sched:sched_process_exec。しかし、プロセスを示すだけです名前(例えばls)。トレースポイントに特定のパラメータがない場合、PIDは表示されません。 perf script常にPIDを表示しますが、リアルタイム出力は表示しません。ファイルの内容を表示しますperf.data

btraceforなどの単一コマンドでは必要ありませんblktraceblktrace -d /dev/sda -o - | blkparse -i -.

(上記の両方のコマンドはPIDを表示します:-).blktraceトレースイベントも使用する一連のコマンドが、記録されたトレースを印刷するのと同じ形式でリアルタイム出力を印刷できることを見ると、残念です。ユニバーサルトラッキングツールでこのような素晴らしい機能を見つけたことはありません! )

答え1

perf record -a --no-syscalls -e sched:sched_process_exec sh -c read | perf script

sh -c readこのトレースを停止する方法があります。Enterキーを押します。このコマンドを省略してctrl + Cを使用してパイプを中断しようとすると、出力も失われます。おそらく中断されるためですperf script)。

ただし、バッファリングのため、この出力は「リアルタイム」ではありません。たとえば、上記のコマンドを実行すると何も表示されませんが、Enterキーを押すとコマンドが停止し、のexec()行が表示されますshblktrace持つ特別なケースコードデフォルトのC stdioバッファリングの無効化を含むパイプの出力を処理します。コマンドperf recordで実行しようとすると、unbuffer「互換性のないファイル形式」エラーが発生します。エラーはperf script


man perf-report

...

オプション

-i, --input=ファイル名を入力してください。 (既定値: perf.datastdinがfifoでない限り)

関連情報