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


(4/34)
4.新スケジューラの処理構造

 数値風洞では、スケジューラの機能を実現するための新たな関数を作成し、既存のNQSの関数から必要に応じて呼び出し、使用している。

4.1 NQSの初期化処理

 NQSプログラムの実行開始時には以下の処理を行う。

(1) スケジューラ時刻のセット
 現在の日時を調べ、スケジューラ時刻をセットする。スケジューラには、時刻に応じて変化させるべきテーブルがあり、それらのテーブルがいつの時点で更新されたものかを示すためにスケジューラ時刻を使用する。

(2) システム状態情報の初期化
 スケジューラでは、FEPが正常に稼働中でない場合や運用切替え中には新たなリクエストを起動しないため、FEPの状態と運用切替え中か否かの情報をもつ。システム状態情報の初期化処理では、両方の状態に起動可能を示す1をセットする。

(3) 運用パラメータの読み込み
 スケジューリングパラメータの内、運用時間帯ごとに設定する必要のない以下の変数を運用パラメータとして読み込む。

 @ リクエスト管理用パラメータ[第3章で述べたWT1F,WT2F,WTSPF,WTUTF の値を指す。]   
 A 起動リクエスト制限値(1PE使用リクエストの同時実行数、同一ユーザリクエストの同時実行数、最大CPU時間、最大PE台数)[このうち、最大CPU時間、最大PE台数は、運用時間帯で同項目の制限値が設定されていない場合に使用する。]   
 B 経過時間予測ファクタ[この値はリクエストの経過時間をCPU時間から予測するために使用する。]   
 C 数値風洞内投入リクエスト数のユーザ制限値   

(4) PCG情報の読み込み
 ファイルからPCG情報と呼ぶ運用PE電源グループを構成するPE番号の情報を読み込む。

(5) 使用可能運用PE台数の設定
 設置されているPEの状態と故障PEの情報を調べ、電源が投入されていて使用できる状態にあり、かつ、故障PE情報に登録されていないPE台数を調べ、現在の使用可能運用PE台数を設定する。また、運用PE電源グループを構成するPE番号と故障PE情報を照合することによりPE電源グループごとの使用可能PE台数を設定する。

(6) 運用スケジュールの読み込み
 @ 運用スケジュールファイルから、運用変更日時、起動リクエストの最大CPU時間、最大PE台数、ユーザタイムユーザ名から構成される運用情報を読み込む。数値風洞では、1週間の運用方式がほぼ一定であり、祭日等に特別な運用方法を指定することが多いため、運用時間開始日時は、日付と時刻または曜日と時刻の指定を可能とし、日付情報がある日は日付情報を優先し、日付情報がない日は曜日情報を使用する。   
 A 運用情報から、自動化情報の最初のイベント発生時刻における運用情報の値を決定する。これを運用情報初期値と呼ぶ。   
 B 自動化スケジュールファイルのイベント情報から、自動化スケジュール変更日時、運用PE電源グループ番号、キュー毎の多重度を読み込む。また、先に求めたPE電源グループごとの使用可能PE台数から各時間帯の使用可能運用PE台数を算出する。これらの情報から自動化情報を作成する。   
 C 自動化情報に運用情報を追加し、運用変更日時、使用可能運用PE台数、キューごとの多重度、起動リクエスト制限値(最大CPU時間、最大PE台数)、ユーザタイムユーザ名から成る運用スケジュールを作成する。なお、運用情報のキュー毎の多重度情報や、自動化情報の起動リクエスト制限等、各情報の未設定の項目は直前の情報により補う。   

(7) 運用スケジュールの更新
 @ 前項で作成した運用スケジュール情報を参照して現時点での運用情報をスケジューリングパラメータにセットし、将来の情報をリクエスト起動時等に参照可能な運用テーブルに格納する。   
 A ユーザタイムユーザ名の変更のみの運用切替えの事象の予定時刻とその時に呼び出す関数名をセットする。これは、自動化プログラムの認識する運用切替えの場合には、第4.7項に述べる qcall コマンドを介してスケジューラに制御が渡るが、それ以外はスケジューラに制御が渡らないので、その時刻にNQSから呼び出される様にするためである。すでにセット済の事象予定時刻がある場合には予約を取消し、新たな時刻をセットし直す。  

(8) 優先度調整データの読み込み
 ユーザ優先度ファイルから優先度を調整するユーザのユーザ名と調整値を読み込む。

(9) 管理キューの初期化

 @ 既存のwaitキュー、execキュー、rtime キューの情報をすべてクリアする。   
 A ファイルに格納されている高優先度リクエスト情報を読み込む。   
 B NQSに登録されている全てのリクエストを、実行待ちリクエストはwaitキューへ、実行中リクエストはexecキューおよびrtime キューへ登録する。ここで、高優先度リクエストか否かは高優先度リクエスト情報により判定し、ユーザタイムリクエストか否かはユーザタイムリクエト判定関数により判定する。本処理により高優先度リクエスト情報が変更された場合には、これらの情報がシステムダウン時でも損失する恐れのないように、ファイルへ書き込む。   

4.2 リクエスト受付処理

(1) リクエストの受付可否判定
 NQSには、投入可能なユーザ名や要求システム資源量制限値を指定し、これにより投入時にリクエストの受付をリジェクトする機能がある。数値風洞では、この機能の他に、ユーザ毎のシステム内投入可能リクエスト数の制限、グループ毎の使用可能ユーザの制限を行っているため、リクエスト投入時にはこれらの制限に基づき受付可否を判定する。受付可能を判断したリクエストのみ以下の受付処理を行う。

(2) リクエストの登録処理
 数値風洞におけるリクエスト受付に必要な処理を行い、さらにwaitキューへの登録処理を行う。

(3) 受付リクエストの通知処理
 リクエスト情報表示用TVへ受付リクエスト情報を通知する。

4.3 リクエストのスケジューリングと実行

 NQSでは、システムへの新たなリクエスト投入等によりNQSのキューの状態が変化した場合をスケジューリング契機とみなし、スケジューリング用の関数が呼び出される。

(1) 空きPE台数設定処理
 NQSの実行中キューを参照し、実行中であることが確認されたrtime キューのリクエストのPE台数から現在の空きPE台数を設定する。リクエスト終了時にはリクエスト終了処理に先立ってスケジューリング用の関数が呼び出されるため本処理を行う。

(2) スケジューラ時刻更新処理
 スケジューラ内のテーブルは直前に呼ばれた時刻での状態になっている。そのため、現在の日時との差を求め、waitキュー、execキュー、rtime キューのように時刻で変化するテーブルおよびスケジューラ内の時刻を更新する。

(3) 登録キューの見直し処理
 前項の処理によりリクエストの優先度が変化するため、各リクエストの所属キューを見直す。本処理では、リクエストがより上位のキューへの遷移条件を満たしたか否かを調べ、条件を満たしたリクエストをつなぎ直す。

(4) スケジュール処理
 本処理では、最初にシステムの状態を調べスケジュール可能か否かを判定する。可能と判定した場合には、NQSの全グループに対し、優先度の高いグループから順に実行多重度に余裕があるキューのリクエストの起動処理を以下のように行う。なお、起動条件およびPEリザーブ条件は前章で述べた条件を使用する。

 @ 起動条件を満たすリクエストの中で最も優先度の高いリクエストを起動リクエストとして選択する。ここで、PP方式の場合には優先度順に並んでいるwaitキューを、FCFS方式の場合には先着順に並んでいるNQSのキューをそれぞれ利用するために、計算機(FEPかCP)やキューにより使用する関数を変えている。なお、数値風洞を使用するリクエストの実行可否を判定する際、本処理においてPP方式の起動優先リクエストが起動不可能と判定された場合には、そのジョブに対してPEリザーブ処理を行う。  
 A 前項で、起動可能リクエストが選択された場合には、選択リクエストを起動する。また、当該リクエストをwaitキューからexecキューへ移し、さらにrtime キューに登録する。   
 B リクエスト情報表示用TVへ起動リクエストの情報を通知する。   

4.4 リクエスト終了処理(リクエストの終了時)

(1) リクエスト登録削除処理
 正常終了したリクエストの場合には、execキューおよびrtime キューから削除する。また、システム障害等により再実行が必要なリクエストの場合には、execキューおよびrtime キューから削除し、waitキューにつなぎ直す。

(2) 高優先度リクエスト情報の削除処理
 正常終了したリクエストの情報が高優先度リクエストテーブルにある場合には削除する。

(3) 終了リクエストの通知
リクエスト情報表示用TVに、正常終了または再実行リクエストの情報を通知する。

4.5 リクエスト削除処理(リクエストキャンセル時)

(1) リクエスト登録削除処理
 実行待ちリクエストの場合にはwaitキューから、実行中リクエストの場合にはexecキューおよびrtime キューから、当該リクエストの情報を削除する。

(2) 高優先度リクエスト情報の削除処理
 キャンセルリクエストの情報が高優先度リクエストテーブルの中にある場合には削除する。

(3) キャンセルリクエストの通知  リクエスト情報表示用TVに、キャンセルリクエストの情報を通知する。

4.6 スケジュール事象処理(運用切替えの事象発生時)

(1) 運用スケジュールテーブルの更新処理
 運用情報を再入力し、運用スケジュールテーブルの更新処理を行う。

(2) キューの初期化処理
 NQS初期化処理と同様の処理により管理キューを初期化する。

4.7 qcall コマンド処理(運用管理者のコマンド投入時)

(1) システム状況の表示
 システムの状態、リクエストの状態の変化に伴い出力された大量の情報の中から、それぞれの最新情報を探し、指定されたファイルへまとめて出力する。

(2) リクエストの高優先度化処理
 指定された既存のリクエストを高優先度化する。指示されたリクエストの情報は高優先度リクエストテーブルに追加し、高優先度リクエストとしてwaitキューまたはexecキューにつなぎ直す。

(3) リクエストの非高優先度化処理
 指定された既存のリクエストを非高優先度化する。指定リクエストがユーザタイムリクエストの場合には、高優先度リクエストテーブルの当該リクエストの情報の属性を高優先度リクエストからユーザタイムリクエストに替え、ユーザタイムリクエストとしてwaitキューまたはexecキューにつなぎ直す。ユーザタイムリクエストでない場合には、指示されたリクエストの情報を高優先度リクエストテーブルから削除し、非高優先度リクエストとしてwaitキューまたはexecキューにつなぎ直す。

(4) ユーザ優先度情報変更処理
 スケジューラのユーザ優先度情報を更新する。この場合、システム内のすべてのリクエストをこの優先度情報を使用して再登録する。なお、システム内のすべてのリクエストの再登録のみを実行することもできる。これらの処理は、ユーザの優先度情報の更新時に使用する。

(5) 運用パラメータ変更処理
 スケジューラの運用パラメータを更新する。この処理は、運用パラメータを変更時に使用する。

(6) 運用スケジュール変更処理
 運用スケジュールを更新する。この処理は、運用スケジュールの変更時に使用する。

(7) 故障PE変更処理
運用可能PE台数の設定、運用スケジュールの読み込み、運用スケジュールの更新、キューの初期化処理を行う。これらの処理は、故障PEの発生、故障PEの回復等、故障PEの情報が変化した場合に使用する。

(8) システム状態変更処理
 FEPの状態を起動不可を示す0または、起動可を示す1をセットする。なお、起動可の1を指定した場合には運用切替え処理終了とみなし、故障PE変更処理と同様の処理を行う。


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