SLURMリソース管理システム
本文は本人の簡書のブログから同期して来ます
前編ではLSFジョブ管理システムについて簡単に説明したが,以下ではSLURMリソース管理システムについて説明する.
概要
SLURM(Simple Linux Utility for Resource Management)は、大規模なコンピューティングノードクラスタに使用できる高度な伸縮性とフォールトトレランスのクラスタマネージャとジョブスケジューリングシステムであり、世界的なスーパーコンピュータとコンピューティングクラスタで広く採用されている.SLURMは、処理対象のジョブのキューを維持し、そのジョブの全体的なリソース利用を管理します.リソースのニーズに応じて、使用可能なコンピューティングノードを共有または非共有で管理し、ユーザーが作業を実行できます.SLURMは、タスクキューにリソースを適切に割り当て、完了するまでジョブを監視します.現在、SLURMはすでに多くの最も強力なスーパーコンピュータで使用されているリードリソースマネージャとなっており、天河2号ではSLURMリソース管理システムが使用されています.
共通コマンド
次に、最も一般的なSLURMコマンドを示します. sacct:履歴ジョブ情報の表示 salloc:リソースの割り当て sbatch:バッチジョブの発行 scancel:ジョブのキャンセル scontrol:システム制御 sinfo:ノードとパーティションのステータスを表示する squeue:キューステータスの表示 srun:実行ジョブ 共通環境変数
次の表は、SLURM環境変数です.
変数#ヘンスウ#
説明
SLURM_NPROCS
ロードするプロセスの数
SLURM_TASKS_PER_NODE
ノードごとにロードするタスクの数
SLURM_JOB_ID
ジョブのジョブID
SLURM_SUBMIT_DIR
ジョブの発行時の作業ディレクトリ
SLURM_JOB_NODELIST
ジョブ割当のノードリスト
SLURM_JOB_CPUS_PER_NODE
各ノードに割り当てられたジョブのCPU数
SLURM_JOB_NUM_NODES
ジョブに割り当てられたノード数
HOSTNAME
バッチ・ジョブの場合、この変数はバッチ・スクリプトが実行するノードのノード名に設定されます.
リソース管理システムエンティティ
SLURMリソース管理システムの管理対象は、ノード、パーティション、ジョブおよびジョブステップを含む.ノード:Node とは、計算ノード を指す.は、プロセッサ、メモリ、ディスク領域などのリソース を含む.は、アイドル、アサイメント、障害等の状態 を有する.ノード名ID を使用
パーティション:Partition ノードの論理パケット は、リソースの制限、アクセス権、優先度などを設定できる管理メカニズムを提供する .パーティションはオーバーラップ可能であり、キューと同様の機能 を提供する.パーティション名ID を使用
ジョブ:Job 一次資源配分 は1つのパーティションにあり、ジョブはパーティション にまたがることができない.キュースケジューリング後割当リソース実行 は、ジョブID識別子 を通過する.
作業ステップ:Jobstep srunによるタスクロード ジョブステップは、ジョブの一部のノード のみを使用することができる. 1ジョブは、複数のジョブステップを含むことができ、 を同時に実行することができる.ジョブ内でジョブステップID識別子 を通過する.
ジョブ実行モード
SLURMシステムには、3つのジョブ実行モードがあります.インタラクティブモードで、srunコマンドで実行します. バッチモードで、sbatchコマンドで実行します. はモードを割り当て、sallocコマンドで実行します.
インタラクティブモード
インタラクティブモードジョブの使用手順は、次のとおりです.端末でリソース割当要求を提出し、リソースの数と制限を指定する. リソースの割り当てを待つ. リソースを取得した後、計算タスクをロードします. 運転中、タスクI/Oは端末に伝達される. は、I/O、信号などを含むタスクと対話することができる. タスクの実行が完了すると、リソースが解放されます.
たとえば、srunを使用して4つのプロセスを申請してジョブステップを生成します.
バッチ・モード
バッチ・モード・ジョブの使用手順は、次のとおりです.ユーザーはジョブスクリプトを作成します. 宿題を提出する. ジョブキュー待ちリソース割り当て; リソースを割り当てた後、ジョブを実行する. スクリプトの実行が終了し、リソースが解放されます. 実行結果は、指定されたファイルに記録されます.
ジョブ・スクリプトの例を次に示します.
バッチ・ジョブを次のコマンドで発行します.
割当てモード
割当てモード・ジョブの使用手順は、次のとおりです.リソース割当要求を送信する. ジョブキュー待ちリソース割り当て; は、ユーザが指定したコマンドを実行する. コマンド実行が終了し、リソースが解放されます.
割り当てモードはsallocコマンドで実行されます.たとえば、2つのノード、4つのプロセス、推定実行時間100秒を使用します.
リソース割り当て要求が成功するとbash shell端末に入り、srunを使用してジョブタスクをインタラクティブに実行できます.端末にexitコマンドまたはCtrl+Dを入力して割当てモードを終了します.
天河2号上のSLURM管理システム
天河2号ではSLURM資源管理システムが使用されているが、天河2号で使用されているSLURMコマンドはいずれも標準的なSLURMコマンドの先頭のsをyhに変更しており、以下のようになっている. yhacct:履歴ジョブ情報の表示 yhalloc:リソースの割り当て yhbatch:バッチジョブの発行 yhcancel:ジョブのキャンセル yhcontrol:システム制御 yhinfo/yhi:ノードとパーティションのステータスを表示する yhqueue/yhq:キューステータスの表示 yhrun:実行ジョブ 以上、SLURMリソース管理システムについて説明したが、次の記事ではMPI-3の新機能について説明する.
前編ではLSFジョブ管理システムについて簡単に説明したが,以下ではSLURMリソース管理システムについて説明する.
概要
SLURM(Simple Linux Utility for Resource Management)は、大規模なコンピューティングノードクラスタに使用できる高度な伸縮性とフォールトトレランスのクラスタマネージャとジョブスケジューリングシステムであり、世界的なスーパーコンピュータとコンピューティングクラスタで広く採用されている.SLURMは、処理対象のジョブのキューを維持し、そのジョブの全体的なリソース利用を管理します.リソースのニーズに応じて、使用可能なコンピューティングノードを共有または非共有で管理し、ユーザーが作業を実行できます.SLURMは、タスクキューにリソースを適切に割り当て、完了するまでジョブを監視します.現在、SLURMはすでに多くの最も強力なスーパーコンピュータで使用されているリードリソースマネージャとなっており、天河2号ではSLURMリソース管理システムが使用されています.
共通コマンド
次に、最も一般的なSLURMコマンドを示します.
次の表は、SLURM環境変数です.
変数#ヘンスウ#
説明
SLURM_NPROCS
ロードするプロセスの数
SLURM_TASKS_PER_NODE
ノードごとにロードするタスクの数
SLURM_JOB_ID
ジョブのジョブID
SLURM_SUBMIT_DIR
ジョブの発行時の作業ディレクトリ
SLURM_JOB_NODELIST
ジョブ割当のノードリスト
SLURM_JOB_CPUS_PER_NODE
各ノードに割り当てられたジョブのCPU数
SLURM_JOB_NUM_NODES
ジョブに割り当てられたノード数
HOSTNAME
バッチ・ジョブの場合、この変数はバッチ・スクリプトが実行するノードのノード名に設定されます.
リソース管理システムエンティティ
SLURMリソース管理システムの管理対象は、ノード、パーティション、ジョブおよびジョブステップを含む.
ジョブ実行モード
SLURMシステムには、3つのジョブ実行モードがあります.
インタラクティブモード
インタラクティブモードジョブの使用手順は、次のとおりです.
たとえば、srunを使用して4つのプロセスを申請してジョブステップを生成します.
$ srun -n 4 ./example
バッチ・モード
バッチ・モード・ジョブの使用手順は、次のとおりです.
ジョブ・スクリプトの例を次に示します.
#!/bin/env bash
# file: example.sh
# set the number of nodes
#SBATCH --nodes=2
# set the number of tasks (processes) per node
#SBATCH --ntasks-per-node=4
# set partition
#SBATCH --partition=example-partition
# set max wallclock time
#SBATCH --time=2:00:00
# set name of job
#SBATCH --job-name=example-mpi4py
# set batch script's standard output
#SBATCH --output=example.out
# mail alert at start, end and abortion of execution
#SBATCH --mail-type=ALL
# send mail to this address
#SBATCH [email protected]
# run the application
srun python example-mpi4py.py
バッチ・ジョブを次のコマンドで発行します.
$ sbatch example.sh
割当てモード
割当てモード・ジョブの使用手順は、次のとおりです.
割り当てモードはsallocコマンドで実行されます.たとえば、2つのノード、4つのプロセス、推定実行時間100秒を使用します.
$ salloc -N 2 -n 4 -p example-partition -t 100 /bin/bash
リソース割り当て要求が成功するとbash shell端末に入り、srunを使用してジョブタスクをインタラクティブに実行できます.端末にexitコマンドまたはCtrl+Dを入力して割当てモードを終了します.
天河2号上のSLURM管理システム
天河2号ではSLURM資源管理システムが使用されているが、天河2号で使用されているSLURMコマンドはいずれも標準的なSLURMコマンドの先頭のsをyhに変更しており、以下のようになっている.