LatencyTOP

Linux には LatencyTOP や PowerTOP といったツールがありシステムグローバルでどんな処理に時間がかかっているか、あるいはブロックされているかがわかるそうだ。実際には触っていないので詳細はわからないが、ベンチマーク、プロファイラーが主に CPU が回っている時を対象にしているのに対して、これらは処理が進まない要因を明らかにしてくれる。実際のシステム運用ではレスポンスタイムに現実的な期待値が求められるので、所々ブロックされて遅延の元になる要因を明らかにするのは重要なこと。

たしか H*-UX には G*ancePlus というツールがあって、待ちの要因をグローバル、プロセス単位で出せたけど、いかんせんベースがオフコン時代のもので、メトリックが古すぎてあまり役に立たなかった。スレッドに関しても見かけだけちょこっと対応して、とても残念なものだった。後に、Caliper というフリーのツールが出て、こちらはもう少し踏み込んだデータを出せるようになってる。

"Walking directory tree" って page directory の検索時間のことだろうか? メモリアクセスのディレイとか出せるのだろうか? バスの状態しだいでは何サイクルも待たされることが出てくるし、キャッシュヒット効率も聞いてくるので、この辺まで、プロセス、スレッドレベルで出せるといいのだけど。それに mutex, semaphore などの同期待ち、wait block も出せるといい。(このあたりはむしろ pthread, glibc の機能か)

VMWareVirtualBox でクライアント OS がもっさりとしか動かないのも、この種の情報から明らかにできそうだし、仮想化ソフトの特性ももっとわかりやすくなるかも知れない。

時間があれば試してみよう。