私が最も好きなトレーシングツール集: eBPF、QEMU、Perfetto
(thume.ca)トレーシングツール紹介
- トレーシングへの情熱と経験をもとに、さまざまなトレーシング手法を紹介
- 新しくて興味深いトレーシングツールを2つ含む
- トレーシングの核心: システムで発生したタイムスタンプデータの収集とタイムラインUIでの可視化
データをタイムラインUIで簡単に可視化する
- Chromium Event JSON Formatを使った、シンプルなJSON形式のイベントデータ可視化
- GoogleのPerfettoまたはCatapultビューアーによるトレーシングファイルの確認
- Pythonユーティリティを活用して、トレースファイルをクリック可能なリンクに変換して共有
高度なフォーマット: Fuchsia Trace FormatとPerfetto Protobuf
- Fuchsia Trace Format (FTF): サイズの大きいトレースファイル向けの、シンプルでコンパクトなバイナリ形式
- Perfetto Protobuf: より多くの機能をサポートするコンパクト形式で、Protobufライブラリを通じて生成可能
さまざまなトレーシングツール
- Speedscope、pprof、Rerunなど、さまざまなトレース可視化ツールを紹介
- Trace Compass、Firefox Profilerなどのプロファイラビューアーにも言及
トレーシング手法
- ハードウェアブレークポイント、perf、GDBスクリプティングなど、低レベルのトレーシング手法を紹介
- Intel Processor Traceを活用したプログラム実行トレース
- magic-trace: 関数呼び出しを可視化するトレースファイル生成ツール
計測ベースのトレーシングプロファイラ
- Tracy、Optick、Perfettoなどの計測ベースのトレーシングプロファイラを比較
- 追加情報を含むイベントデータの重要性を強調
eBPF
- Linuxカーネルを利用したトレーシングのためのeBPFサブシステムを紹介
- BCC、bpftrace、plyなどのeBPFトレーシングツールを紹介
eBPFの例: AnthropicのPerfettoベースのパケットおよびユーザーイベントトレーシング
- ネットワーキングコードのテールレイテンシ分析のために、BCCとPerfetto可視化を組み合わせる
- eBPFを使ったユーザー空間イベントトレーシングと、Cヘルパーによるイベント処理最適化
バイナリ計測
- ソースコードにアクセスできないときに使われるバイナリ計測手法を紹介
- bpftime、E9Patch、Fridaなどのツールを説明
分散トレーシング
- サービス間トレーシングのためのOpenTelemetry、Zipkin、Odigosなどのソリューションに言及
サンプリングプロファイラ
- 定期的にプログラム全体のコールスタックをサンプリングするプロファイラを紹介
- Speedscope、Samplyなど、時間軸を含むUIを使用
QEMU計測
- すべてのトレーシングツールが失敗したときに使う、QEMUの完全エミュレーションとフック
- Cannoli、QEMU TCG Plugins、usercornなどのツールを紹介
GN⁺の意見
この記事で最も重要なのは、さまざまな種類の問題を解決するために使えるトレーシング手法の幅広いカタログを提供している点だ。初級ソフトウェアエンジニアにも理解しやすいレベルで多様なトレーシングツールと手法を紹介しており、トレーシングに関心のある人にとって非常に有益で興味深い内容になっている。特に、実例を通じてeBPFトレーシングとPerfetto可視化を組み合わせた例は、実務での適用可能性を示しており、読者に新たなインサイトを提供できるだろう。
1件のコメント
Hacker Newsのコメント
Spall開発者のコメント:
Windowsアプリケーション開発者へのETWの推薦:
オープンソースソリューションの概要:
Anthropicでの採用の進め方:
Pythonプログラムとパケットの相関付け技術:
IDEプラグイン開発チームの経験:
JavaScript実行コストのプロファイリングに対する業界のニーズ:
dtraceへの言及とbcantrillのラント:
便利なツールへの感謝: