hotspot - Linux perf プロファイル用 GUI チートシート
hotspot (KDAB) は Linux perf プロファイラー用 Qt GUI。いつもどおり perf record で記録してから、hotspot の結果 perf.data を開いてインタラクティブ フレームグラフ、トップダウン・ボトムアップ コール木、呼び出し元/被呼び出し者ビュー、スレッドタイムライン、オフ CPU 分析として探索。perf report の読みづらい出力をビジュアル、ナビゲート可能なプロファイル — perf を起動し記録することさえできます。
インストール
| プラットフォーム | コマンド |
|---|
| Debian/Ubuntu | sudo apt install hotspot |
| Fedora | sudo dnf install hotspot |
| Arch Linux | sudo pacman -S hotspot |
| AppImage | GitHub Releases ページからダウンロード (ポータブル) |
| 要件 | linux-perf / perf インストール済み |
記録 (2 つの方法)
# オプション A: perf で記録、その後 hotspot で開く
perf record --call-graph dwarf -F 999 ./my-program args
hotspot perf.data
# オプション B: hotspot に記録させる (GUI 「Record」タブ)
hotspot # バイナリ、オプション選択、Record 実行
| perf フラグ | 目的 |
|---|
--call-graph dwarf | 最高スタック アンワインド (デバッグ情報必要) |
--call-graph fp | フレームポインター アンワインド (高速、-fno-omit-frame-pointer 必要) |
-F 999 | 999 Hz でサンプル |
-p PID | 実行中プロセスを記録 |
-g | コール グラフを有効化 |
ビュー
| ビュー | 表示 |
|---|
| サマリー | サンプルカウント、スレッド、最もホット記号 |
| フレームグラフ | 集約スタック; 幅 = 時刻 |
| トップ ダウン | ルートからリーフへのコール木 |
| ボトム アップ | ホット リーフ関数とそのコーラー |
| 呼び出し元/被呼び出し者 | 記号ごとのインバウンド/アウトバウンド コスト |
| タイムライン | スレッドごとの時刻を超えた活動 |
ナビゲート
| アクション | 使用 |
|---|
| フレームをクリック | フレームグラフをそのサブツリーにズーム |
| 検索 | 記号名でフィルター |
| 時刻範囲を選択 (タイムライン) | 分析を段階にフォーカス |
| 反転 (ボトムアップ) | 高額リーフ関数を見つける |
| スレッド/プロセスでフィルター | ワーカーを分離 |
オフ CPU 分析
hotspot はスレッドが ブロック (待機) されていた場所を可視化可能 — CPU 焼却だけでなく、遅延問題向け有用。
# スケジューラー スイッチをオフ CPU インサイト向けに記録
perf record --call-graph dwarf -e cycles \
-e sched:sched_switch --switch-events ./my-program
hotspot perf.data
良好スタックを取得
| 必要 | 実行 |
|---|
| 読み取り記号 | デバッグ情報で構築 (-g)、ストリップしない |
| 深いスタック | --call-graph dwarf |
| 低コスト スタック | フレームポインター + --call-graph fp |
| カーネル記号 | sysctl kernel.kptr_restrict=0, perf を root で実行 |
| perf パーミッション | sysctl kernel.perf_event_paranoid=1 (またはより低い) |
一般的なワークフロー
# CPU バウンドプログラムをプロファイルしてフレームグラフを探索
perf record --call-graph dwarf -F 999 ./app
hotspot perf.data
# リクエストが遅い理由を調査 (ブロック/オフ CPU 時刻)
perf record --call-graph dwarf -e sched:sched_switch --switch-events ./server
hotspot perf.data # オフ CPU フレームグラフを検査
hotspot vs その他の perf フロントエンド
| アスペクト | hotspot | perf report | FlameGraph スクリプト | samply |
|---|
| UI | Qt GUI | TUI/テキスト | 静的 SVG | Firefox Profiler |
| オフ CPU | あり | 限定的 | マニュアル | 限定的 |
| 記録担当 | あり | N/A (perf) | いいえ | あり |
| 最適な用途 | インタラクティブ perf 分析 | クイック テキストビュー | 共有可能 SVG | クロスプラットフォーム |
リソース