2009-04-18 6 views
2

私は、システム内の多くのアプリケーションで使用されている単一のライブラリの使用状況をプロファイルしたいとしましょう。私は統計的なプロフィールだけではなく、正確なものではないですが(しかし、それも素晴らしいかもしれません)。システム全体の連続したlinuxライブラリのプロファイリング

私がしたくないのは、実行中のすべてのプログラムをプロファイリングサポートで再コンパイルすることです。プロファイリング情報を定期的または必要に応じていくつかのファイルにダンプすることをお勧めします。統計情報がアプリケーション名またはpidを使用して分割されていれば、本当にうまくいくでしょう。

これを達成する方法はありますか?

使用例:実行中のシステムからのデータを使用してglibライブラリをプロファイリングする。

答えて

5

oprofileをご覧ください。私はそれがまさにあなたが望むものだと思う。

Oprofileはハードウェアカウンタサンプリングを使用してコードをプロファイリングし、サンプリングするカウンタをカスタマイズすることができます(例:時間プロファイルが不要な場合は浮動小数点命令カウンタでサンプリングし、最も多くのFP作業を行うコードの部分)。時間プロファイルの場合、レートは〜2000サンプル/秒であるため、オーバーヘッドは非常に低くなります。

生成された要約データは、ほとんどの時間を費やしたアプリケーション、ロードモジュール、およびシンボル(シンボル情報がある場合)を示します。また、カーネルスペースとユーザースペースを別々にプロファイルすることもできます。必要に応じて、コールパス情報を利用できます。 oprofileの最新バージョンはJITedコードのプロファイリングをサポートしているので、かなり包括的です。

+0

素晴らしい!私はoprofileについて知っていましたが、そのように使用しようとはしませんでした。私が必要とするライブラリのシンボルをフィルタリングするだけで、必要なデータが得られます。 – viraptor