run キューで待たされた時間は CPU Time にはカウントされない

門外不出のOracle現場ワザ (DB Magazine SELECTION)

門外不出のOracle現場ワザ (DB Magazine SELECTION)

P.54

Elapsed time と CPU Time の差分は、OS の run キューで待たされた時間を表します。

Linux の場合、実行可能状態のタスクがCPUを使っているか run キューで待たされているか区別されていないと思うので、run キュー待ちが長くなると CPU Time が長くなる気がする。OSの実装を意識して考えないといけないですね。

と思ったが、定期的に割込みが入り、コア単位でチェックしたときにその瞬間どのプロセスがCPUを使っていたかチェックしてそのプロセスにだけCPU時間を加算してそうな気がします。


追記(2014.02.17):
Linux でランキュー待ち時間がCPU時間にカウントされないことを確認した - ablog に検証結果を書いてます。