過去問ドリル

LinuCレベル3 プラットフォームスペシャリスト 仮想化基盤の構築 問29

仮想化基盤の構築/仮想化技術の動作原理と最適化

Linuxのスケジューリングポリシーに関する説明として、正しいものをすべて選べ。

当サイトのオリジナル問題(LinuCレベル3 プラットフォームスペシャリストの出題範囲「仮想化基盤の構築」に対応。実際の試験問題ではありません)

正解: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は同じ優先度のタスク間でタイムスライスを使って順番に実行します。
LinuCレベル3 プラットフォームスペシャリストの問題を演習モードで解く