コンテンツにスキップ

heaptrack - Linux ヒープメモリプロファイラー チートシート

heaptrack - Linux ヒープメモリプロファイラー チートシート

heaptrack (KDE) は Linux 用 ヒープメモリプロファイラー。すべてのメモリアロケーションをトレースし、各をスタックトレースで注釈するため、リーク、アロケーション ホットスポット、過剰一時アロケーション、ピークメモリ使用法を見つけられます。プログラム実行中にデータファイルを記録してから、heaptrack_gui (リッチフレームグラフとチャート) または heaptrack_print (コマンドライン) でアナライズ。オーバーヘッドは現実的なワークロード用に低い。

インストール

プラットフォームコマンド
Debian/Ubuntusudo apt install heaptrack heaptrack-gui
Fedorasudo dnf install heaptrack heaptrack-gui
Arch Linuxsudo pacman -S heaptrack heaptrack-qt
ソースからKDE/heaptrack リポから構築 (CMake)
確認heaptrack --version

記録

コマンド説明
heaptrack ./my-program args開始からコマンドをプロファイル
heaptrack -p PID実行中プロセスにアタッチ (GDB ベース)
heaptrack -o out.zst ./prog特定出力ファイルに書き込み
出力カレントディレクトリで heaptrack.PROG.PID.zst を作成

終了時、heaptrack はサマリーと記録データファイルへのパスをプリント。

分析 (GUI)

heaptrack_gui heaptrack.my-program.12345.zst
GUI ビュー表示
サマリーピーク RSS、全アロケーション、リークバイト
フレームグラフコール スタックに属するアロケーション
トップダウン / ボトムアップアロケーション別コール木
呼び出し元/被呼び出し者アロケーション リレーション内で記号ナビゲート
チャート時刻を超えたアロケーション/リーク/一時的

分析 (CLI)

# トップアロケーション ホットスポットをターミナルにプリント
heaptrack_print heaptrack.my-program.12345.zst | less
メトリック意味
peak最大ヒープメモリ一度に保管
leakedアロケートされたが決して解放されないメモリ
allocationsアロケーション総数 (チャーン)
temporaryほぼ即座に解放されたアロケーション (ウェイスト)
オプション説明
-a, --print-peakピークメモリコンシューマーでソート
-l, --print-leaksリークを表示
-t, --print-temporary一時的アロケーション ホットスポットを表示
-d, --diff FILE2 つの記録を diff

実行を比較 (Diff)

# ビルド/実行間で変わったことを見る
heaptrack_print -d before.zst after.zst

各メトリックが伝える内容

症状確認先
プロセス RSS は増加し続けるleaked — アロケーション決して解放
高アロケーター CPU コストallocations / temporary — チャーン多い
負荷下で OOMpeak — 最大同時メモリ削減
スタートアップメモリ スパイク関連時刻範囲でフレームグラフ

一般的なワークフロー

# サービスのリークを見つける
heaptrack ./myservice --run-workload
heaptrack_print -l heaptrack.myservice.*.zst | head -30

# 重い操作中のピークメモリを属性化 (GUI が最も簡単)
heaptrack ./batch-job
heaptrack_gui heaptrack.batch-job.*.zst   # 「peak」フレームグラフを検査

# ホットループ内での一時的アロケーション チャーン削減
heaptrack_print -t heaptrack.*.zst | head

heaptrack vs その他のメモリツール

アスペクトheaptrackValgrind (massif/memcheck)組み込みアロケーター
オーバーヘッド低い高い (memcheck 非常に高い)様々
リーク検出ありあり (memcheck)部分的
アロケーション チャーンあり (一時的)massif はピークにフォーカスいいえ
UIリッチ GUI + CLIテキスト / massif-visualizerなし
最適な用途現実的実行でのファスト ヒープ プロファイリング深い正確性チェッククイックチェック

リソース