使用率と飽和
🐱 この章の目次
使用率とレスポンスタイムの関係
リソースの 使用率(utilization) が上がると、レスポンスタイムは線形ではなく指数的に悪化します。 これは待ち行列理論から導かれる性質で、『詳解システムパフォーマンス』第 2.3.11 節で詳しく解説されています。 使用率 70% を超えたあたりから急激にレイテンシが増大する「ホッケースティック曲線」が現れます。
M/M/1 キューモデル
M/M/1 キュー は、到着がポアソン過程・サービス時間が指数分布・サーバーが 1 台の待ち行列モデルです。 平均レスポンスタイム R は次の式で表されます。
R = S / (1 - ρ)
ここで S はサービスタイム、ρ は使用率(0 ≤ ρ < 1)です。 ρ が 0.9(90%)のとき R は S の 10 倍、ρ が 0.99 なら 100 倍になります。
ホッケースティック曲線
レスポンスタイム
│ ╱
│ ╱
│ ╱
│ ╱
│ ╱
│___╱______________
0% 50% 100%
使用率
この曲線は「余裕を残して運用すべき理由」を端的に示しています。 本番環境では使用率 70% 前後をアラート閾値に設定するのが一般的です。
飽和のシグナル
飽和(saturation) は、リソースが処理能力を超えた状態を指します。 飽和が起きると、リクエストはキューに溜まり、レイテンシが急増します。
飽和を検知するための典型的なシグナルは以下のとおりです。
- CPU: ランキュー長 > CPU コア数
- メモリ: スワップ発生、OOM killer 発動
- ディスク: I/O キュー長の増大(
avgqu-szの上昇) - ネットワーク: TCP 再送率の上昇、パケットドロップ
飽和が恒常的に発生している場合は、スケールアップ(リソース増強)またはスケールアウト(台数追加)が必要です。