[目次] [1ページ目に戻る] [次ページ] [質疑応答]


(2/24)
2.現システムにおけるジョブスケジューリング

2.1 九州大学大型計算機センターのシステム構成

 現在、本センターでは、富士通の分散メモリ型並列計算機VPP700/56が稼働している。このモデルは、56台のPE(processing element)で構成されている。本センターのユーザーは、この56台のPEを利用して、1PEのみを用いる逐次処理、及び複数のPEを用いる並列処理を行うことができる。
 このうち並列処理については、バッチシステムを介した利用に制限されている。この並列処理を行うために32PEと8PEのパーティションが確保されており、利用可能PE数の上限が8、16及び32のキューに投入されたジョブに割り当てられる。このうち8PEまで利用できるキューは32PEもしくは8PEのパーティションで実行される。すなわち32PEのパーティションでは、利用可能PE数の上限が8、16及び32のキューに投入されたバッチ処理が実行される。さらにVPP700/56は、各PEでプロセスの多重実行が可能である。本センターの場合、並列処理については、各PEについて主記憶のユーザー領域を超えない限り、最大2多重の実行を許している。

2.2 NQS

 NQSはUNIXシステムのバッチ運用を支援するシステムである[1,2]。本センターのスーパーコンピュータや汎用計算機のように多数のユーザーが同時に利用する可能性のあるシステムでは、ユーザーから要求される処理が短時間に集中する場合がある。この場合、従来のTSS(会話処理)による運用では、一時的に応答時間が長くなったり、資源不足で処理を拒否されたりする。これに対してNQSは、ユーザーに要求された処理をシステムの資源量に合わせて実行する。そのため、負荷を分散し、効率的にシステムを運用することができる。
 NQSでは、ユーザーによって投入されたコマンドやシェルスクリプトをジョブという単位で扱う。投入されたジョブは、まずキューと呼ばれる待ち行列に格納される。NQSが動作しているシステムに投入されたジョブはバッチキューへネットワーク上の他の計算機に転送するジョブはパイプキューへ格納される。本稿では、NQSが動作しているシステムに対して投入されたジョブのみを扱う。

 キューの状態に変化があるとNQSはバッチキューに格納された全ジョブを探索し、現在利用可能な計算機資源で実行できる最も優先順位の高いものを実行する。ジョブの優先順位は以下の4個のパラメータを用いて決定される。

ジョブ優先度
  バッチキュー内でのそのジョブの相対的な優先度。     

バッチキュー優先度
  複数のバッチキューが存在する場合、どのバッチキューから検索するかを決定する優先度。     

キュー内のジョブ走行制限値
  あるバッチキューから同時に実行できるジョブの数     

NQS全体のジョブ走行制限値
  NQS全体で同時に実行できるジョブの数     

2.3 NQS−JM

 NQS−JMは、主にユーザー毎の制限を行うための機能を提供することにより、NQSと連携してより細かい運用を可能にする[3]。このNQS−JMの機能は、主に全てのユーザーに公平に計算機資源を割り当てるために用いられる。NQS−JMの提供する機能は下記の通りである。

受付制御
   投入されたジョブに対して、それを受け付けるか否かを決定する。受付の可否はジョブ受付数制限値、ジョブ重み制限値、ランク値制御によって行う。これらの制限はユーザー毎に設定できるため、同一ユーザーによるバッチキューの占有を防止できる。     

資源設定
   投入されたジョブについて、資源制限値が設定されていない場合や、NQS−JMで設定された最大値を超えている場合に、そのジョブの制限値をNQS−JMで予め設定された制限値に変更する。これにより、ジョブに必要以上の資源が割り当てられたり、バッチキューの制限値を超えているためにジョブの受付が拒否されたりすることを防ぐことができる。     

実行制御
   実行待ちのジョブに対して、システム内同時実行数制限、キュー内同時実行数制限及びキュー内連続実行制限機能により、その実行を許可するか否かを決定する。これにより、同一ユーザーによるシステム内の計算機資源の占有を防止できる。ただし、バッチキューに他ユーザーの実行待ちジョブが無いときに限り、システム内同時実行数制限を超えているジョブの実行を許可する機能も提供されている。     

2.4 NQS−JS

 NQS−JSは、NQSからリクエスト選択依頼を受け、ジョブの優先順位の評価をし、最も優先順位の高いものを返す[4]。評価の際には、すべてのリクエストが評価の対象になるわけではなく、NQS−JSにチェックを依頼し、制限にふれるものは除く空き資源をチェックし、空き資源以上の資源を要するものは除くという二つのチェックを行なう。NQSやNQS−JMとNQS−JSとの関係を図1に示す。

図1: NQS−JS

 優先順位の評価値Eは、各パラメータ i の値 vi とパラメータの重みri によって、

で決定される。 可能なパラメータを表1にしめす。

表 1: ファクタの種類
ファクタ 評価定義パラメタ 関連コマンドとオプション
実行時に必要な仮想プロセッサ数 required pe qsub-lpオプション
リクエストのメモリ優先度 memory priority qsub-cmオプション
リクエストの最長実行時間 elapse time qsub-cpオプション
リクエストが使用できるCPUの最大時間 cpu time qsub-lTオプション
リクエストが使用できるPMメモリの最大量 pm memory qsub-lMオプション
リクエストの実行優先度 request priority qsub-pオプション
リクエストの実行属性 type qsub-lPmオプション
キューの優先度 queue priority qmgrset priorityサブコマンド
リクエストの経過時間 wait time NQS-JSが計算
 
 例えば、required pe には qsub コマンド1のオプション -lp で指定した値が代入される2。オプションの指定がない場合にはデフォルトの値が使用される。
 例えばスケジューリングポリシとして、実行時間が短かく、使用する仮想プロセッサ数が少ないものを先に実行させたい場合には、required pe と elapse time の重み付けを上げればよい。
 これらのファクタが依存するパラメータがいくつかあるが、特に重要なものとして、max waittime がある。これは、リクエストが長時間待つことのないようにするためのもので、待ち時間がこのパラメータの値を越えたときに、このリクエストを優先的に実行できるようにする。

 優先順位が評価されるタイミングの主なものは、以下のとおりである。

   ・バッチリクエスト受付時
   ・バッチリクエスト終了時
   ・キューの多重度の変更時
   ・キューの開始時
   ・qmove, qrlsコマンド実行時

 NQS−JSの各パラメータについての重み付けは、NQSが動作しているシステムのファイルで設定されており、動作中に変更することが可能である。

 

----------------------------------------------
1 NQSへの実行依頼コマンド
2 パラメータには指定された値からの関数で指定するので、実際には指定した値そのものが代入されるわけではない。


[目次] [1ページ目に戻る] [次ページ] [質疑応答]