パフォーマンス計測ツールがどこから情報を取得しているのか

詳解システム・パフォーマンス4.2には各パフォーマンス計測ツールの情報ソースについてまとめられています。

www.amazon.co.jp

基本的にLinuxを前提とし、Solarisシステムに関しては省略します。

カウンタのための情報ソース

  • /procディレクトリ:プロセスごとおよびシステム全体に関するデータが格納されています。取得できるデータの例として、プロセスごとにはリソース制限、メモリの使用状況、CPU実行時間など、システム全体としてはディスクI/O統計、メモリ使用状況、ネットワーク関連、ロードアベレージなどがあります。
  • /sysディレクトリ:デバイスドライバに関する情報ソースで、デバイスごとのデータを取得することができます。(拡張され、カーネル全体に関する統計も取得できるようになっています。)

トレーシングのための情報ソース

プロセスごとのトレーシングにptraceシステムコール、uprobeがあり、カーネルレベルのトレーシングにtracepoint、kprobeが提供されています。またネットワークのスニッフィング(tcpdumpの情報ソース)としてlibpcapライブラリと/proc/net/devが用意されています。

その他

スレッドごとの各種レイテンシを取得するための遅延アカウンティングというソースがあります。