PBSジョブ投入システムとは
ジョブ投入システムとは、多くのユーザが同じ計算サーバ(計算をメインとするコンピュータ)を共有し、メモリやCPUなどの
リソース(計算資源)を公平に利用するためのシステムです。
スーパーコンピュータシステムでは、ジョブ投入システムとして代表的なもののひとつである
PBS(Portable Batch System)を導入しています。
ユーザのジョブをqsubコマンドというコマンドを使って計算サーバへ投入されると、PBSはジョブを一旦保留します。
リソースが空いている場合にはすぐにジョブが実行されますが、多くのユーザがジョブを投入していることで計算サーバが
混み合っている場合、あるいはすでにユーザが多くのジョブを実行していることで、ユーザごとに割り当てられたリソースを
使い切ってしまった場合などは、他のジョブが終了するまで保留し続けることになります。
このような処理(バッチ処理と呼びます)を行うことで、一度に大量のジョブが実行されることを防ぐとともに、
多くのユーザが公平に共有リソースを利用することが可能になります。
以下では、特に断らない限り、バッチ処理によって実行されるジョブ(バッチジョブ)を単にジョブと呼びます。また、バッチジョブではないジョブをインタラクティブジョブと呼びます。
投入するジョブの制限値
バッチジョブは利用できる演算時間や利用メモリ容量などにより、複数のキューと呼ばれるクラスに分類されており、
ジョブが必要とする計算リソースに応じて使い分けます。
バッチジョブは利用できるコア数・メモリ容量・演算時間・実行の優先度(プライオリティ)により、複数のキューと呼ばれるクラスに分類されています。
原則として、多くの計算リソースを必要とするキューほど計算サーバ上での実行優先順位は低くなりますので、
可能であれば計算リソースの制限が少ないキューを利用することをお勧めします。
キュー |
SMALL |
MEDIUM |
LARGE |
HUGE |
ジョブの特徴 |
小規模ジョブ |
中規模ジョブ |
超並列ジョブ |
大規模メモリジョブ |
キュー待ちから の実行順位 |
高 |
やや高 |
中 |
低 |
ジョブ実行の優先 順位(nice値) |
高 |
やや高 |
中 |
低 |
(ジョブあたりの) 演算時間 |
224 days |
896 days |
3584 days |
672 days |
(ジョブあたりの) 最大メモリ容量 |
32 GB (4 GB) |
128 GB (16 GB) |
512 GB (64 GB) |
1536 GB (192 GB) |
(ジョブあたりの) 最大コア数 |
8 core (2 core) |
32 core (8 core) |
128 core (32 core) |
12 core (3 core) |
(キューあたりの) 最大ジョブ数 |
制限なし |
制限なし |
制限なし |
4 |
実行アプリケーション |
・すべて(DS は SMALLのみ)
(MS からのジョブ投入は16coreまで)
|
"キュー待ちからの実行順位"とは、キュー待ち状態から実行状態となるジョブの順位を表します。
つまり、この実行順位が高いほど、実行状態になりやすいといえます。
"ジョブ実行の優先順位(nice値)"とは、実行状態となったジョブがどれほど優先的に実行されるかを
表します。同じジョブを異なるキューで実行した場合、この優先順位が高いほど、より高速に処理される
といえます。
CASTEP計算を行った時の各キューでの経過時間は次の通りでした。
SMALLキューの優先順位が高いために、経過時間は最も短くなっています。
(8coreによるCASTEP(6.0)の構造最適化計算。実行時のload averageはおよそ250。)
| SMALL | MEDIUM | LARGE |
| 17.8h | 19.3h | 21.1h |
"ジョブあたりの演算時間"とは、CPU が実際に動作した時間です。並列ジョブの場合には、各コアでの CPU時間の合計が演算時間となります。
例えば 12 コア使用したジョブで、各コアあたりの演算時間が 1日の場合には、演算時間は 12 日となります。
最大メモリ容量および最大コア数に示されたカッコ内の数値はデフォルト値(ユーザ側で何も指定しない場合の設定値)です。
必要に応じてバッチオプションを利用して適切な値を指定してください。
なお、実行ジョブが指定されたメモリサイズを超えた場合、強制的にジョブが停止されることとなりますので、メモリについては少し大きめの値を
設定されることをお勧めします。
HUGEキューは最大ジョブ数に制限がありますので、LARGEではメモリ容量が足りない場合にのみご利用いただくよう
お願いします。
新システムでは、キューごとに実行可能なジョブ数の制限はなくなりました。(HUGEは除く)
その代わりとして、同時実行可能なジョブに対する制限を、”ユーザあたり”および"システム全体"に対して
以下のように設けています。
同時実行ジョブのリソース合計値 |
同一ユーザに対する制限 |
システム全体に対する制限 |
同時実行ジョブのメモリ合計値 |
2 TB |
12 TB |
同時実行ジョブのコア数合計値 |
128 core |
1024 core |
同時実行ジョブ数合計値 |
32ジョブ |
制限なし |
ユーザあたりのコア数やメモリサイズの制限以内であれば、どのキューに
ジョブを投入・実行しても構いません。(ただし、同一キューに、
ある一定数以上ジョブを投入すると、それらジョブの優先度は他のユーザの
ジョブよりも低下します。)
ただし、同時実行ジョブ数の合計値に制限があり、それ以上のジョブを投入した場合には
保留状態(キューイング状態)となります。
また、実行ジョブが多く、システム全体の制限にかかる場合には、
新たなジョブは実行されず、保留状態(キューイング状態)となります。
インタラクティブ・ジョブ |
ジョブあたりの演算時間 |
ジョブあたりの最大使用メモリ容量 |
30 min |
1 GB |
キューに投入されたジョブの実行順序
ジョブの実行順序は様々な基準に従って決定されるため、必ずしも投入した順にしたがって実行されるとは限りません。
大まかなジョブ実行の実行順位は以下にしたがって決定されます。
- 各キューごとに、キューへの到着時間によって待機ジョブが順序付けされます。
- さらに、各キューの優先度にしたがって、すべての待機ジョブが順序付けされます。
- 順序づけられたジョブのうち、すでに使用可能なリソースをすべて消費(コア数では100、メモリ容量は2TB)
してしまったユーザのジョブはリストから除外され、使用可能なリソースが生じない限り、キュー内で待機し続けます。
- 1日以上キュー内で待機していたジョブは、その実行を促すために、特別に高い優先度が設定されます。
- あるキューにおいて、あるユーザのジョブがすでに、ある一定数以上実行されている場合には、キュー内で待機しているそのユーザのジョブの優先度は低くなります。
- 前半2つの基本ルールをベースに、後半の3つのルールで補正を行い、キュー内のジョブの優先度が最終的に決まります。
その優先度にしたがって、次に実行されるジョブが決まります。
|