そうとも言い切れない
というのは知られた事実だが、改めて、詳細を踏まえたくて、本から抜粋してみる。
詳解 システムパフォーマンス より
p.235 6.3 コンセプト
6.3.10 飽和
ほかのリソースタイプと比べて、CPUは飽和状態になってもあまり大きな問題と考えなくてよい。優先度の高い仕事は、現在のスレッドにプリエンプションをかけることができる。
ほかのリソースタイプと比べて、CPUは飽和状態になってもあまり大きな問題と考えなくてよい。
プリエンプション?
このようなものらしい。
つまりOSがうまくやってくれる、というある種楽観的な見方。
使用率100%のCPUは飽和(saturated)しており、スレッドがon-CPUになるのを待つスケジューラレイテンシの影響を受けて、全体としてのパフォーマンスが下がる。スケジューラレイテンシとは、CPUランキュー、その他スレッド管理のために使われる構造のなかでスレッドが待機のために費やす時間である。
スレッドが待機のために費やす時間はよりかかるようになる。
つまりWebリクエストを返すとかでは時間がかかるようになって問題になりうる(応答が遅い、と言われることになる)。
このデメリットはCPU使用率100%だと発生しうる。
100%が悪ではないのは、バッチ処理などの、できるだけ多くのCPUを使って(遊ばせておくCPUをなくして)早く終わらせるという場合。
CPUの飽和には、クラウドのマルチテナント環境などで設定されるCPUリソースコントロールによるものもある。CPUの使用率が100%にならなくても、設定された限界に達すると、実行可能状態のスレッドは自分の順番が来るのを待たなければならなくなる。これがシステムのユーザーからどこまで見えるかは、仮想化のタイプによって異なる。
マルチテナント環境などで設定されるCPUリソースコントロール
これは、AWSでいうと、t系インスタンスで見られるものなどのことと思われる。
ベースラインの CPU パフォーマンスを提供しながら、いつでも必要な時間だけ、能力をベースライン以上にバーストさせる機能を備えています。
この部分は、逆に、100%じゃないから、OK、というわけでもない、という話である。
引用元
以上