デバッグ/プロファイリング

提供: ArchWiki
2024年8月14日 (水) 18:47時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (英語版より新規作成)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

パフォーマンスのリグレッション、最適化されていない新機能、または単に不明な要因がパフォーマンスに影響を与える場合、アプリケーションをプロファイルする必要があるかもしれません。Wikipediaによると:

ソフトウェアエンジニアリングにおいて、プロファイリング(「プログラムプロファイリング」、「ソフトウェアプロファイリング」)は、動的プログラム解析の一種であり、プログラムの空間(メモリ)または時間の複雑さ、特定の命令の使用、または関数呼び出しの頻度と持続時間を測定します。最も一般的には、プロファイリング情報はプログラムの最適化、さらに具体的にはパフォーマンスエンジニアリングに役立ちます。

インストール

perfインストールします。

デバッグシンボルの取得

解釈可能な結果を得るためには、デバッグするアプリケーションのデバッグシンボルが必須です。手動でのデバッグ情報取得を参照してください。perf はまだ debuginfod をサポートしていないため、デバッグシンボルは手動で取得する必要があります。

デバッグシンボルなしでアプリケーションをプロファイルまたはデバッグしようとすると、実際の関数名の代わりにポインタしか表示されず、ほとんど役に立ちません。

使用方法

gdb と同様に、アプリケーションは perf 内で実行されます。

ノート: -F を使用してプロファイリング頻度を調整する必要があるかもしれません。2012-05-22 以降、デフォルトは 4000 に設定されています。より高い値は負荷を増加させます。デフォルト設定はほとんどのケースで問題ありませんが、実行時間が非常に短いプログラムには値をさらに上げたり、長時間実行するプログラムには値を下げたりすることを検討してください。また、システムの負荷も考慮する必要があります。高負荷はサンプリングのオーバーヘッドを引き起こし、デバッグ中の実際のボトルネックを隠してしまうことがあります。perf-record(1)を参照してください。
$ perf record -g -- command

これにより、データが perf.data に記録されます。プログラムが終了したら、次のコマンドで結果を表示します:

$ perf report --stdio

より見やすい表示を希望する場合は、cargo-flamegraph を使用することを検討してください。

バグをアップストリームに報告する場合は、perf.data ファイルを提出してください。

関連項目