【りそーすりみっと】

リソースリミット とは?

最終更新:
💡 CPUやメモリの使用に、上限を設ける

処理が使用する資源に設ける上限。KubernetesのCPU・メモリを例に、requestsとの違い、制限時の挙動と単位を解説します。

📌 このページのポイント
資源制限:要求量と上限は別requests配置等の要求量条件が許せば超えて使えるlimits使用量の上限CPUCPU時間を制限するスロットリングメモリOOMで終了する場合即時・必ずとは限らないKubernetesのCPU・メモリの例要求量・上限・実使用量を区別する
下段は資源ごとの制限方法の比較です。CPU上限だけでメモリ不足のように終了するとはせず、実際の負荷・ピーク・遅延や終了の記録から調整します。
ひよこ ひよこ
リソース制限は、何を止めるの?
ペンギン先生 ペンギン先生
処理が使うCPUやメモリ等に上限を設けるんだ。Kubernetesでは、コンテナの設定にrequestsとlimitsを書くことがある。名前が似ていても、役割は違うよ。
ひよこ ひよこ
requestsも上限?
ペンギン先生 ペンギン先生
requestsは、必要とする資源の要求量だよ。スケジューラーはこれを使って配置先の余力を判断する。条件が許せば、コンテナは要求量を超えて使えるので、上限とは別なんだ。
ひよこ ひよこ
CPUのlimitを超えようとしたら終了?
ペンギン先生 ペンギン先生
CPUでは、使えるCPU時間を制限するスロットリングで抑えるよ。処理が遅くなることはあるけれど、CPUの上限に達しただけでメモリ不足のように終了する、とは説明できないんだ。
ひよこ ひよこ
メモリも、同じように少し遅くなるだけ?
ペンギン先生 ペンギン先生
違うよ。メモリの制限はOOMによる終了で適用される場合がある。検出と処理は反応的なので、超えた瞬間に必ず終了するわけではない。再起動するかは、再起動の設定等にもよるね。
ひよこ ひよこ
どうやって数値を決める?
ペンギン先生 ペンギン先生
実際の負荷とピーク、遅延や終了の記録を見て調整しよう。一律に何倍と決めるのではなく、処理に必要な量と同じ場所で動くほかの処理への影響を確かめるんだ。
もっと詳しく知りたい人へ

500mというCPUの設定は、何を表す?

CPUのmはミリCPUで、1000mが1 CPU、500mが0.5 CPUです。1 CPUは実行環境に応じて物理コアまたは仮想コアに相当します。ノード全体の50%という意味ではありません。

メモリのMiとMは同じ?

Miは2の累乗、Mは10の累乗の単位です。メモリのmはミリバイトで、CPUのミリCPUと意味が違います。CPUの設定をまねてメモリに400m等を書くと、意図した容量になりません。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「リソース制限」って出てきたら「CPUやメモリ等の使用量に設ける上限」と思えばだいたいOK!
📖 おまけ:英語の意味
「Resource Limit」 = 資源の使用量の上限
💬 資源の種類や実行環境で制限の方法は変わります。このページではKubernetesのコンテナでよく使うCPUとメモリを例にします。

参考資料

← 用語集にもどる