perf
perf ツールはハードウェアパフォーマンスカウンターとカーネルトレースポイントを使ってシステムの他のコマンドやアプリケーションの影響を追跡
もともと PCL(Performance Counter for Linux)と呼ばれていたが、その後プロファイリングとトレーシングのためのツールコレクションに発展し、現在は LPE(Linux Performace Events)と呼ばれている
Performance analysis tools for Linux
サブコマンド
システムプロファイリング
CPU コールパスをプロファイリングして、カーネル空間とユーザー空間のどこで CPU 時間が使われたかの集計を表示できる
record コマンドを使うと、一定間隔でキャプチャされたサンプルが perf.data ファイルに書き込まれる
そのあとで report コマンドを使うと、ファイルの内容が見られる
execute profile
# perf record -ag
analyze
# perf report -g -G --stdio
プロセスのプロファイリング
個々のプロセスを対象にすることもできる
command を実行して perf.data ファイルを作る
# perf record -g command
- 詳解システムパフォーマンス P260
- perf使ってみた
install
# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) # uname -a Linux master 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux # yum install perf
使用例
システム全体を測定
# perf top Samples: 96 of event 'cpu-clock', Event count (approx.): 19718250 Overhead Shared Object Symbol 18.06% [kernel] [k] _raw_spin_unlock_irqrestore 16.74% [kernel] [k] finish_task_switch 7.94% [kernel] [k] run_timer_softirq 7.30% [kernel] [k] __do_softirq 5.17% [kernel] [k] ata_sff_pio_task 4.04% [kernel] [k] tick_nohz_idle_exit 3.09% libslang.so.2.2.4 [.] SLtt_smart_puts 2.24% libc-2.17.so [.] vfprintf 2.24% libpython2.7.so.1.0 [.] PyEval_EvalFrameEx 2.12% libslang.so.2.2.4 [.] SLsmg_write_chars