LinuCレベル3 プラットフォームスペシャリスト 仮想化基盤の構築 問29
仮想化基盤の構築/仮想化技術の動作原理と最適化Linuxのスケジューリングポリシーに関する説明として、正しいものをすべて選べ。
当サイトのオリジナル問題(LinuCレベル3 プラットフォームスペシャリストの出題範囲「仮想化基盤の構築」に対応。実際の試験問題ではありません)
- ASCHED_DEADLINEは、実行時間(runtime)・デッドライン・周期のパラメータを持ち、EDF(最早デッドライン優先)にもとづいてスケジューリングされる
- BSCHED_OTHERのタスクは、chrtで1〜99の静的優先度を個別に指定することで、同じポリシーのタスクどうしの実行の優先度を調整する
- CSCHED_BATCHは、Fairスケジューリングクラスに属し、CPUを多く使う非対話的な処理向けに、起床時のスケジューリングの扱いを少し不利にする
- DSCHED_RRは、同じ優先度のタスクどうしでもタイムスライスを使わず、タスクが自らCPUを手放すかブロックするまで実行を続けさせる
正解:A、C
解説
SCHED_DEADLINEはDEADLINEスケジューリングクラスのポリシーで、タスクごとに実行時間・デッドライン・周期を与え、EDFのアルゴリズムでデッドラインの近いものから実行します。SCHED_BATCHはSCHED_OTHERと同じFairスケジューリングクラス(CFS/EEVDF)に属し、スケジューラが常にCPUを多く使う処理とみなして起床時にわずかに不利に扱うため、バッチ処理のように対話性の要らない処理に向きます。SCHED_OTHERの静的優先度は常に0で、同じクラス内の優先度はnice値で調整します。SCHED_RRはSCHED_FIFOにタイムスライスを加えたもので、同じ優先度のタスク間ではタイムスライスを使い切ると列の末尾へ回されます。chrtコマンドでは -d・-b・-o・-r・-f 等でこれらのポリシーを指定できます。
選択肢ごとの解説
- A正しい。SCHED_DEADLINEは実行時間・デッドライン・周期を持ち、EDFにもとづいてデッドラインの近いタスクから実行します。
- B誤り。SCHED_OTHERの静的優先度は0に固定で、1〜99の静的優先度はSCHED_FIFOやSCHED_RRのものです。SCHED_OTHERどうしの優先度はnice値で調整します。
- C正しい。SCHED_BATCHはFairクラスのポリシーで、CPUを多く使う処理とみなされて起床時にわずかに不利に扱われるため、非対話的な処理に向きます。
- D誤り。タイムスライスを使わず自らCPUを手放すまで実行を続けるのはSCHED_FIFOです。SCHED_RRは同じ優先度のタスク間でタイムスライスを使って順番に実行します。