リソース最適化クイズ
関連ドキュメント: リソース最適化
選択式問題
1. Kubernetes における resource requests と limits の違いは何ですか?
- A) Requests は CPU 専用で、limits は memory 専用である
- B) Requests はスケジューリングのために保証されるリソースで、limits は許可される最大値である
- C) Requests と limits は同じものである
- D) Limits は保証され、requests は任意である
回答を表示
回答: B) Requests はスケジューリングのために保証されるリソースで、limits は許可される最大値である
解説: Requests は Kubernetes が container に保証するリソースであり、スケジューリングの判断に使用されます。Limits は container が使用できる最大リソースです。CPU limits を超えると throttling が発生し、memory limits を超えると OOM kill が発生する可能性があります。
2. node のリソース逼迫時に最も高い優先度を得る QoS class はどれですか?
- A) BestEffort
- B) Burstable
- C) Guaranteed
- D) すべての class の優先度は同じである
回答を表示
回答: C) Guaranteed
解説: Guaranteed pods(CPU と memory の両方で requests=limits)は最も高い優先度を持ち、リソース逼迫時に最後に evict されます。BestEffort pods(requests/limits なし)が最初に evict され、その次に Burstable pods が続きます。
3. Kubernetes containers で CPU throttling が発生する原因は何ですか?
- A) memory が不足している
- B) container が CFS period 中に CPU limit を超えている
- C) ネットワーク輻輳
- D) ディスク I/O ボトルネック
回答を表示
回答: B) container が CFS period 中に CPU limit を超えている
解説: Linux CFS (Completely Fair Scheduler) は 100ms の period ごとに CPU limits を強制します。container が period の早い段階で quota を使い切ると、次の period が始まるまで throttled(一時停止)されます。これは cpu.cfs_throttled_us で追跡されます。
4. containers に推奨される JVM MaxRAMPercentage 設定は何ですか?
- A) 100%
- B) 90%
- C) 75%
- D) 50%
回答を表示
回答: C) 75%
解説: MaxRAMPercentage を 75% に設定すると、container memory の 25% を non-heap 用途(metaspace、thread stacks、native memory、OS overhead)に残せます。より高い値を使用すると、non-heap memory が予期せず増えた場合に OOM kill のリスクがあります。
5. VPA で "Initial" update mode は何をしますか?
- A) pods を継続的に更新する
- B) pods が最初に作成されるときにのみ resources を設定する
- C) 既存の pods をすべて削除する
- D) VPA を完全に無効化する
回答を表示
回答: B) pods が最初に作成されるときにのみ resources を設定する
解説: "Initial" mode は VPA の推奨値を pod 作成時にのみ適用し、実行中の pods には適用しません。これは HPA と併用する場合に有用です。VPA が初期サイズを設定し、HPA が scaling を処理し、既存の pods は中断されないためです。
6. container CPU limits に基づいて設定すべき Go runtime 設定は何ですか?
- A) GOGC
- B) GOMAXPROCS
- C) GOPATH
- D) GOROOT
回答を表示
回答: B) GOMAXPROCS
解説: GOMAXPROCS は Go code を実行する OS threads の数を制御します。デフォルトでは、Go は container limits ではなく host CPUs をすべて使用します。GOMAXPROCS を container CPU limits に合わせて設定する(automaxprocs library を使用する)ことで、過剰な context switching を防げます。
7. Go applications で GOMEMLIMIT は何に使用されますか?
- A) 最小 memory allocation を設定する
- B) garbage collector に soft memory limit のヒントを提供する
- C) goroutines の数を制限する
- D) swap memory を設定する
回答を表示
回答: B) garbage collector に soft memory limit のヒントを提供する
解説: GOMEMLIMIT は Go garbage collector に目標 memory ceiling を伝えます。memory がこの limit に近づくと GC が早めに実行され、利用可能な memory を効率的に活用しながら OOM kill のリスクを低減します。
8. containers 内の Python Gunicorn workers について、推奨される worker 数の計算式は何ですか?
- A) 2 * CPU_CORES + 1
- B) host cores ではなく、container CPU limit に基づく
- C) 常に 1 worker を使用する
- D) 最大 throughput のために 100 workers を使用する
回答を表示
回答: B) host cores ではなく、container CPU limit に基づく
解説: 古典的な計算式 (2*cores+1) は host CPU count を使用するため、containers では過剰割り当てになります。worker 数は resource contention と OOM issues を避けるため、container CPU limits(例: CPU limit あたり 2〜4 workers)に基づく必要があります。
9. memory limit を超えた container には何が起きますか?
- A) CPU throttled される
- B) kernel によって OOM killed される
- C) 自動的に水平 scaling される
- D) memory が他の containers から借用される
回答を表示
回答: B) kernel によって OOM killed される
解説: CPU(throttled される)とは異なり、memory limits は厳格に強制されます。container が memory limit を超えると、Linux OOM killer が container 内の processes を終了します。その後 Kubernetes は restart policy に基づいて container を再起動します。
10. VPA Recommender component の目的は何ですか?
- A) 新しい resources で pods を再起動する
- B) resource usage を分析して resource recommendations を生成する
- C) node scaling を管理する
- D) resource configurations を検証する
回答を表示
回答: B) resource usage を分析して resource recommendations を生成する
解説: VPA Recommender は時間の経過に伴う containers の実際の resource usage を監視し、requests と limits の推奨値を生成します。CPU と memory の usage patterns、peaks、variance を考慮して、適切な値を提案します。