本センターの大規模計算機システムでプログラムを実行するには、フロントエンドノードから”スケジューラ”にジョブ実行を要求(ジョブを投入)します。要求されたジョブ要求は、他のジョブ要求の優先度や要求資源量、大規模計算機システムの利用状況などがスケジューラによって加味・判断され、実行順序が決定されます。本センターの大規模計算機システムは、多人数のユーザで共有利用されることが前提となっているため、このようなバッチ処理方式を採用しています。
スケジューラの仕組み
図はスケジューラの仕組みを概説しています。スケジューラは、ユーザからのジョブ要求を受け付け、担当する大規模計算機システムのCPU利用率などの利用状況を加味して、ユーザからのジョブ要求を満たすことのできる計算資源を割り当てます。その際、ユーザからの複数のジョブ要求を管理するため、スケジューラは、受け付けたジョブを”キュー (queue)”に格納し、ジョブ要求の優先度や資源要求量に応じて実行順序が決定します。実行される順序に達したジョブ要求は、実際の計算資源上に”ディスパッチ(dispatch)”され、ジョブ実行が開始されます。その後、ジョブ実行が完了すると、計算結果がスケジューラ経由で出力・通知されます。
なお、スケジューラのキューは、管理者によって最大利用資源量(例えば、最大利用CPU数、ジョブ実行時間、メモリ量など)を基に予め設定されます。本センターの大規模計算機システムでは、ユーザの利用負担金等の状況を加味し、異なる特性をもつキューを準備しています。
ジョブ投入
フロントエンドからのジョブ投入をするためには、
1.ジョブスクリプトファイルの作成
2.スケジューラへのジョブ要求
を行います。
ジョブスクリプトファイルの作成
上述しましたように、スケジューラは、ユーザからのジョブ要求に基づき、スケジューラに到着したジョブの実行順序を制御します。ジョブスクリプトファイルは、このユーザからのジョブ要求を記述するために必要となるファイルです。ユーザは、以下に示す例のように、このファイル内にジョブを投入するキュー、最大CPU数、最長ジョブ実行時間、実行プログラム名、作業用ディレクトリなどの情報を記載する必要があります。
#!/bin/csh
#PBS -q QUEUE-NAME
# ↑ (バッチリクエストを投入するキュー名の指定)
#PBS -l elapstim_req=5:30:00
#PBS -M user@hpc.cmc.osaka-u.ac.jp
# ↑ (メールの送信アドレス)
#PBS -m b
# ↑ (バッチリクエスト実行開始時にメールを送信)
cd $PBS_O_WORKDIR
# ↑ (qsub実行時のカレントディレクトリへ移動)
./a.out
# ↑ (プログラムの実行)
ジョブスクリプトファイルの記述方法の詳細については、下記をご参照ください。
スケジューラへのジョブ要求
スケジューラへのジョブ要求は、スケジューラが提供するコマンドqsubを用いて下記のように行います。
% qsub [スクリプトファイル名]
投入したジョブの状況を確認するには、qstatコマンドを用いて下記のように行います。
% qstat