萌えハッカーニュースリーダー

2025/10/31 11:54 Perfetto: Swiss army knife for Linux client tracing

出典: https://lalitm.com/perfetto-swiss-army-knife/
hakase
博士

やあ、ロボ子。今日はPerfettoというツールについて話すのじゃ。

roboko
ロボ子

Perfettoですか?初めて聞きました。どんなツールなんですか?

hakase
博士

Perfettoは、Linuxカーネル、システム、組み込み開発者向けのデバッグとパフォーマンス分析ツールじゃ。複数のツールが連携して動作するスイートなのじゃ。

roboko
ロボ子

なるほど。デバッグやパフォーマンス問題の根本原因を特定するのに役立つんですね。

hakase
博士

そうじゃ!Perfetto UIは、AndroidやChromeのトレース表示用に構築されているけど、他の用途にも使えるぞ。

roboko
ロボ子

構成要素にはどんなものがあるんですか?

hakase
博士

記録ツール、protobuf形式、トレースプロセッサがあるのじゃ。記録ツールはC++アプリ用SDKや、ftraceとか/procとか/sysからデータを集めるデーモンじゃ。

roboko
ロボ子

protobuf形式というのは?

hakase
博士

高パフォーマンスなトレース形式で、書き込み効率が高いのじゃ。トレースプロセッサは、protobuf形式や他のトレース形式を解析するC++ライブラリで、SQLクエリインターフェースを介してデータを提供するのじゃ。

roboko
ロボ子

SQLクエリで分析できるのは便利ですね!

hakase
博士

じゃろ?Perfetto UIやPython APIでも使えるぞ。perf.data、ftraceテキスト形式、Firefoxプロファイラ形式、Chrome JSON形式とか、色々なトレース形式をサポートしているのじゃ。

roboko
ロボ子

Perfetto UIはWebベースのトレースビジュアライザーなんですね。タイムライン表示やSQLクエリを統合していると。

hakase
博士

そうじゃ。ブラウザ内で動くから、トレースデータがシステム外に出る心配もないぞ。静的サーバーでホストもできるし。

roboko
ロボ子

記事では、Julia集合を生成するRustプログラムを使ってデモをしているんですね。VulkanによるGPUレンダリングとマルチスレッドCPU計算を使用していると。

hakase
博士

そうそう。わざとパフォーマンスのバグを仕込んで、フレームレートが落ちる状況を再現しているのじゃ。GitHubでコードとトレースが公開されているから、試してみると良いぞ。

roboko
ロボ子

CPU問題の疑いがある場合は、perfを使ってプロファイルを取得し、FlameGraphで可視化するんですね。

hakase
博士

その通り!Perfetto UIでperfプロファイルを可視化して、タイムスタンプ情報を確認するのじゃ。インタラクティブなFlameGraphで、特定の時間範囲を選んで分析もできるぞ。

roboko
ロボ子

スケジューラトレースも重要ですね。trace-cmdで収集して、Perfetto UIで可視化すると。

hakase
博士

CPUスケジューリングトラックやスレッド状態を見て、スリープ状態の原因を特定するのじゃ。

roboko
ロボ子

アプリケーションレベルの可視性も確保できるんですね。tracingクレートとtracing-perfettoクレートを使うと。

hakase
博士

そうじゃ。ユーザースペースのインストルメンテーションを表示して、プログラムの動作を分析するのじゃ。フローを使って、異なる処理間の因果関係を可視化することもできるぞ。

roboko
ロボ子

perf、ftrace、アプリケーションのトレースをマージして、Perfetto UIで統合的に可視化できるのは強力ですね。

hakase
博士

じゃろ?異なるデータソースからの情報を組み合わせて、問題の根本原因を特定するのじゃ。

roboko
ロボ子

エリア選択、FlameGraphの機能、クエリインターフェース、デバッグトラックの表示など、Perfetto UIには色々な機能があるんですね。

hakase
博士

そうじゃ。SQLクエリを使ってトレースデータを分析したり、ピボットテーブルやフィルターオプションを使ったりできるぞ。

roboko
ロボ子

記事のデモでは、動的な品質更新がフレームレートの低下を引き起こしていたんですね。

hakase
博士

そう。ロック競合を解消しても問題が解決しなくて、バックグラウンドスレッドに処理を移動することで改善したのじゃ。

roboko
ロボ子

Mesa、VizTracer、pthread_traceなど、オープンソースコミュニティでもPerfettoが利用されているんですね。

hakase
博士

そうじゃ。Perfettoプロジェクトへの貢献やプルリクエストも歓迎されているぞ。

roboko
ロボ子

Perfetto、奥が深いですね。私も使いこなせるように頑張ります。

hakase
博士

よし、ロボ子。Perfettoマスターへの道は遠いぞ。まずは、Perfettoを使って、ロボ子の隠されたバグを見つけてみようかの?

roboko
ロボ子

えっ、私にバグがあるんですか!?

hakase
博士

冗談じゃ!ロボ子にバグがあったら、私が一番困るわ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search