11.3.優先度スケジューリング規律(1):Quantitative System Performance

11.2.密結合マルッチプロセッサ」の続きです。(目次はこちら

11.3.優先度スケジューリング規律


 現在の大部分のオペレーティング・システムでは、プロセッサ・スケジューリング規律は優先度に基づいている。これらの優先度は静的(ある作業負荷要素に他に対する一貫した優先をあたえる)かもしれないし、あるいはそれらは動的(作業負荷特性の変化する評価を反映して)かもしれない。優先度スケジューリング規律は分離可能モデルと両立可能ではない。これらの規律は性能にかなりの影響を与え得るので、それらを表現出来ることは重要である。これまで多くの方法が考案されてきた。
 ひとつの方法が第8章に一例として記述された。まず、I/Oサブシステムはそれ自身は分離可能であったが、分離して解析され、複数クラス・フロー等価サービス・センターが構築された。次に2つのセンター、つまり、このFESCと優先スケジュールのCPUからなる高レベル・モデルが定義された。最後に、このモデルを評価するために大域バランス技法が使われた。この方法は全く正確である。その欠点は、第1に、それが特定目的大域バランス・ソフトウェアを要求することで、第2に、大域バランス解析の複雑さのために、数クラスあるいは数個の客以上を持つモデルについて、そして複数の優先度スケジュールのセンターを持つモデルについてそれは実行不可能になるということである。
 今、最後の段落で説明した技法を用いることの難しさのため、他の方法が要求される。我々がここで紹介するものは、平均値解析技法に基づいている。実際、それは受入れ可能な程度の精度であることを示してきたし、非常に大きなモデルであっても適用可能である。C種の客クラスをもち、その各々が区別される優先度をCPUで持っているようなモデルを考察しよう。(同じ優先度を持ついくつかのクラスへの一般化は単純である。) 記法を簡単にするために、クラスはより大きい数のクラスがより小さい数のクラスより優先権があるように並んでいると仮定しよう。我々はクラスc客のCPUでの滞在時間の近似を、クラスcより低い、と等しい、より高いジョブの効果を続けて考察することによって開発する。

  • より優先度の低い客(クラス1からc-1まで)
    • クラスcはクラス1からc-1までに対して割込み優先度を持っているので、これらのクラスの客はクラスc客を邪魔しない。これらのより低いクラスだけを考慮して我々はクラスcのCPU滞在時間の以下の近似を得る。
      • R_{c,CPU}(\vec{I})\approx{D}_{c,CPU}
  • 優先度の等しい客(クラスc
    • CPUに到着する個々のクラスc客はすでにそこにいる全ての他のクラスc客のうしろに待たなければならない。それ以降到着したクラスc客はそれ以上の遅れを引き起こさない。より低い優先度と等しい優先度の両方のクラスを考慮することにより我々は、
      • R_{c,CPU}(\vec{I}){\approx}D_{c,CPU}\left[1+Q_{c,CPU}(\vec{I-1_c})\right]
    • ただし\vec{I-1_c}は、もしクラスcトランザクション・タイプでなければ(つまり、もしクラスcがクローズドであれば)、1個のクラスc客を除いた負荷強度のベクトルであり、さもなければ(つまり、もしクラスcがオープンであれば)完全な負荷強度である。
  • より優先度の高い客(クラス c+1からCまで)
    • 到着するクラスc客は、すでにキューにいる全てのより高い優先度の客を待たなければならない。それはまた、それがCPUにいる間に到着する全てのより高い優先度の客をも待たなければならない。この複雑さのために、クラスc客が待たなければならないような、より高い優先度の客の数を正確に見積もることは可能ではない。その代わり我々は、より高い優先度の客へのサービスがクラスc客へ充てられるサービスに関してプロセッサの分解であると考える。これらの分解のため、サービス中のクラスc客がD_{c,CPU}時間単位を積み上げるためにD_{c,CPU}時間単位以上が要求される。特に、CPUは時間の \Bigsum_{j=c+1}^CU_{j,CPU}(\vec{I})の割合、より高い優先度の客でビジーなので、現在選ばれたクラスc客が完了するのに\frac{D_{c,CPU}}{1-\Bigsum_{j=c+1}^CU_{j,CPU} (\vec{I})}時間単位かかる。(例えば、一旦サービスが始まったら、より高い優先度の客で50%ビジーのプロセッサ上で完了するのはFCFSプロセッサ上でよりも2倍の長さだけかかる。) より低い、等しい、より高い優先度クラスを考慮した、クラスc の滞在時間についての最終近似は、よって
      • R_{c,CPU}(\vec{I})\approx\frac{D_{c,CPU}\left[1+Q_{c,CPU}(\vec{I-1_c})\right]}{1-\Bigsum_{j=c+1}^CU_{j,CPU}(\vec{I})} (11.1)
    • である。


 式(11.1)をアルゴリズム7.17.2における標準滞在時間方程式に代入することにより平均値解析からひとつの解法を構築することが出来るであろう。しかし、我々がモデル化技法を拡張する度にこれらの基本アルゴリズムをさらに複雑にするよりもむしろ、我々の拡張したアルゴリズム内のサブルーチンとして基本アルゴリズムを用いて、それらを足場にして進めるほうがよい。(我々は第16章でこの層構造実装のコンセプトに戻る。)
 優先度スケジューリングの場合、シャドウCPU技法を用いて滞在時間方程式を置き換えることによって得られるのと同じ結果を得ることが出来る。この技法は、実際のシステムでの1台の優先度スケジュールCPUは、各々に1つのクラスが訪問するようなC個のFCFSサービス・センターによってモデル内に表現されるという事実からその名を得ている。CPU_cが、クラスcにのみが訪問する c番目のシャドウCPUを示しているとしよう。CPU_cでのサービス要求時間を

  • \frac{D_{c,CPU}}{1-\Bigsum_{j=c+1}^CU_{j,CPU}(\vec{I})}

に等しく設定する。そのシャドウCPUでのクラスcの滞在時間は式(11.1)で与えられることは明白であるはずであろう。より高い優先度クラスによって引き起こされたサービス要求時間の水増しはシャドウCPUでのサービス要求時間の再定義において捉えられ、他のクラスではなくクラスcの客を待つことはシャドウCPUで使用されるFCFSスケジュールの結果、プラス、クラスcだけがそこを訪問するという事実の結果である。よって、我々は第7章の解析技法に素直に従う、優先度スケジューリングの効果を表現する待ち行列ネットワークを構築した。


11.3.優先度スケジューリング規律(2)」に続きます。