サーバ関連:slurm

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
サーバ関連:slurm [2018/12/10 12:51] – 作成 mumeiyamibitoサーバ関連:slurm [2019/03/01 15:53] (現在) – 削除 mumeiyamibito
行 1: 行 1:
-====== Slurm ====== 
-===== 概要 ===== 
-  * Torque や Sun Grid Engine のようなジョブ管理ツール。 
-  * 現状、ドキュメントは Torque の方が多く、Slurm は圧倒的にドキュメントが少なく、日本語ドキュメントはさらに少ない…。 
-  * Ubuntu のデフォルトリポジトリには登録されている。 
  
-===== プログラム ===== 
-  * ''slurmctl'': ノード管理デーモン (マスターノード (親機) にインストール) 
-  * ''slurmd'': 計算管理デーモン (各計算ノードにインストール) 
-  * 参考サイト: [[https://slurm.schedmd.com/quickstart.html | Slurm Workload Manager]] 
- 
-===== インストール方法 ===== 
-  * ここでは、Ubuntu 16.04 ベースで、ソースからコンパイルする方法を紹介する。 
- 
-<note warning>書きかけ</note> 
- 
-  - 認証システム munge をインストールする。\\ <code bash> 
-$ sudo apt-get install libmunge-dev libmunge2 munge 
-</code> 
-    * 通常はインストール時に認証鍵が生成されるが、されない場合は以下のコマンドをマスターノードでのみ行う (マスターノードの認証鍵を計算機ノードが参照するため)。\\ <code bash> 
-$ sudo create-munge-key 
-</code> 
-  - インストール時にスタートアップの問題で失敗するので、修正する。\\ <code bash> 
-$ sudo systemctl edit --system --full munge 
-</code> 
-    - ''ExecStart=/usr/sbin/munged'' を ''ExecStart=/usr/sbin/munged --syslog'' にする。 
-    - 再度インストールする。\\ <code bash> 
-$ sudo apt-get install -f 
-</code> 
-  - slurm を https://www.schedmd.com/downloads.php からダウンロードする。 
-    * ここでは、''SLURM-17.02.1-2.TAR.BZ2'' をダウンロードする。 
-    * ダウンロードしたファイルは ''/tmp'' にあるものとする。 
-  - 展開する。\\ <code bash> 
-$ cd /tmp 
-$ tar axvf slurm-17.02.1-2.tar.gz 
-</code> 
-  - インストールする。\\ <code bash> 
-$ cd slurm-17.02-1.2 
-$ ./configure 
-$ make -j 4 
-$ sudo make install 
-</code> 
-  - 設定ファイルをコピーする。\\ <code bash> 
-$ sudo cp etc/slurm.conf.example /usr/local/etc/slurm.conf 
-</code> 
-  - 設定ファイルを編集する。 
-    * 詳しくはシステムの設定を参照 
-  - 必要なディレクトリを作成する。\\ <code bash> 
-$ sudo mkdir -p /var/spool/slurm/ctld 
-$ sudo mkdir -p /var/spool/slurm/d 
-</code> 
-    * ''slurm.conf.example'' をベースに設定ファイルを作成した場合は、''fatal: _create_clustername_file: failed to create file /var/spool...'' というエラーが出るため、この作業が必要である。''slurmctld'' が起動できないのは、このディレクトリがなく、このディレクトリ以下にファイルを作成できないためである。 
-    * 設定を容易に行う別の方法として、''doc/html/configurator.easy.html'' を用いる方法があり、こちらで設定ファイルを作成した場合は、''StateSaveLocation'' や ''SlurmdSpoolDir'' が既に存在しているディレクトリを指しているため、このエラーは起こらない。 
-  - 自動起動するようにする。 
-    * マスターノード (マスターノードで計算させない場合は ''slurmd.service'' の行は不要)\\ <code bash> 
-$ sudo cp etc/slurmctld.service /etc/systemd/system 
-$ sudo cp etc/slurmd.service /etc/systemd/system 
-$ sudo systemctl enable slurmctld.service 
-$ sudo systemctl enable slurmd.service 
-</code> 
-    * 計算ノード\\ <code bash> 
-$ sudo cp etc/slurmd.service /etc/systemd/system 
-$ sudo systemctl enable slurmd.service 
-</code> 
-  - サービスを起動する。 
-    * マスターノード (マスターノードで計算させない場合は ''slurmd.service'' の行は不要)\\ <code bash> 
-$ sudo systemctl start  slurmctld.service 
-$ sudo systemctl start  slurmd.service 
-</code> 
-    * 計算ノード\\ <code bash> 
-$ sudo systemctl start  slurmd.service 
-</code> 
-  - 起動しているかを確認する。 
-    * マスターノード  (マスターノードで計算させない場合は ''slurmd.service'' の行は不要)\\ <code bash> 
-$ sudo systemctl status slurmctld.service 
-$ sudo systemctl status slurmd.service 
-</code> 
-    * 計算ノード\\ <code bash> 
-$ sudo systemctl status slurmd.service 
-</code> 
-  - ジョブを投入してテストする。\\ <code bash> 
-$ srun -l sleep 60 & 
-$ srun -l sleep 60 & 
-$ srun -l sleep 60 & 
-$ srun -l sleep 60 & 
-$ srun -l sleep 60 & 
-$ squeue 
-JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON) 
-   29       ALL    sleep mumeiyam PD       0:00      1 (Resources) 
-   25       ALL    sleep mumeiyam  R       0:05      1 master 
-   26       ALL    sleep mumeiyam  R       0:04      1 master 
-   27       ALL    sleep mumeiyam  R       0:04      1 master 
-   28       ALL    sleep mumeiyam  R       0:03      1 master 
-</code> 
- 
-===== システムの設定 ===== 
-  * マスターノード (master)、計算ノード (calc01, calc02, calc03) の例.\\ <code conf slurm.conf> 
-ControlMachine=master 
-ControlAddr=192.168.1.254 
- : 
-SlurmUser=root 
-SlurmdUser=root 
- : 
-SelectType=select/cons_res 
-SelectTypeParameters=CR_CPU 
- : 
-PreemptType=preempt/partition_prio 
-PreemptMode=SUSPEND,GANG 
- : 
-# Node configuration 
-# Configure support for our four GPUs 
-GresTypes=gpu,bandwidth 
- 
-# COMPUTE NODES 
-NodeName=master  Procs=8 NodeAddr=192.168.1.254 RealMemory=16016 State=UNKNOWN 
-NodeName=calc01  Procs=8 NodeAddr=192.168.1.1   RealMemory=16016 State=UNKNOWN 
-NodeName=calc02  Procs=4 NodeAddr=192.168.1.2   RealMemory=1969  State=UNKNOWN 
-NodeName=calc03  Procs=4 NodeAddr=192.168.1.3   RealMemory=3921  State=UNKNOWN 
- 
-# Partition configuration 
-PartitionName=ALL    Nodes=master,calc01,calc02,calc03Default=YES MaxTime=UNLIMITED PriorityTier=1 State=UP 
-PartitionName=CPU1   Nodes=master MaxTime=UNLIMITED PriorityTier=1 State=UP 
-PartitionName=CPU2   Nodes=calc01 MaxTime=UNLIMITED PriorityTier=1 State=UP 
-PartitionName=CPU3   Nodes=calc02,calc03 MaxTime=UNLIMITED PriorityTier=1 State=UP 
-PartitionName=CPU1_h Nodes=master MaxTime=UNLIMITED PriorityTier=2 State=UP 
-PartitionName=CPU2_h Nodes=calc01 MaxTime=UNLIMITED PriorityTier=2 State=UP 
-PartitionName=CPU3_h Nodes=calc02,calc03 MaxTime=UNLIMITED PriorityTier=2 State=UP 
-</code> 
-    * ''ControlMachine'': ジョブ管理ノード名 
-    * ''ControlAddr'': ジョブ管理ノードの IP アドレス 
-    * ''SlurmUser'': 管理者ユーザ 
-    * ''SelectType'': ジョブの投入方法 (''select/liner''|''select/cons_res''|''select_cray'') 
-        * ''select/liner'': nodes (シングル CPU?) の場合 
-        * ''select/cons_res'': socket/core/CPU (複数 CPU?) の場合 
-        * ''select_cray'': Cray systems without ALPS の場合 
-    * ''SelectTypeParameters'': ''SelectType'' のパラメータ (詳細は [[https://slurm.schedmd.com/cons_res_share.html | Slurm Workload Manager]] や [[https://slurm.schedmd.com/cons_res.html | Slurm Workload Manager]] を参照) 
-        * ''CR_Memory'': ''select/liner'' 時のおすすめパラメータ (メモリの状況で判断?) 
-        * ''CR_CPU'': 複数 CPU の場合に CPU が空き次第投入する (CPU の状況で判断?) 
-        * ''CR_Core_Memory'': ''select/cons_res'' 時のおすすめパラメータ (CPU あたりのメモリの状況で判断?) 
-    * ''PreemptType'': 割り込みタイプ 
-        * ''preempt/none'': 割り込まない 
-        * ''preempt/partition_prio'': 特定のパーティションのジョブが割り込む 
-    * ''PreemptMode'': 割り込み時の優先度が低いジョブの挙動 
-        * ''SUSPEND'': 低優先度のジョブを止める (終了はさせない) 
-        * ''CANCEL'': 低優先度のジョブを終了させる 
-        * ''CHECKPOINT'': チェックポイントを作成して低優先度のジョブを終了させる 
-        * ''REQUEUE'': 低優先度のジョブを終了させて、再度キューに投入する (ジョブは別リソースでスタートする可能性がある) 
-        * ''GANG'': ジョブ復帰のために必要なオプションで、他のオプションを組み合わせて使う 
-    * ''NodeName'': 各計算機ノードのノード名 
-        * ''NodeAddr'': 計算機ノードの IP アドレス 
-        * ''Procs'' or ''CPUs'': CPU 数 
-        * ''RealMemory'': 実メモリ (MiB) 
-        * ''Gres'': GPU の設定 
-            * 1つ目のフィールド: ''grep.conf'' 内の名前 
-            * 2つ目のフィールド: GPU のアーキテクチャ 
-            * 3つ目のフィールド: GPU 数 
-    * ''PartitionName'': パーティション (キュー) 名 
-        * ''Nodes'': キューがサブミットできるノード (カンマでノード名を区切る; デフォルトはすべてのノード) 
-        * ''Default'': デフォルトのキューか? (''YES''|**''NO''**) 
-        * ''MaxTime'': 計算時間の上限 (''mm''|''mm:ss''|''hh:mm:ss''|''dd-hh''|''dd-hh:mm''|''dd-hh:mm:ss''|''UNLIMITED'') 
-            * root や slurmUser に指定されているユーザは適用されない 
-        * ''PriorityTier'': パーティションの優先度 (デフォルトは 1) 
-        * ''MaxCPUsPerNode'': パーティションで使えるノードごとの CPU 数 (このパーティションで同時に実行できるジョブ数を制限する際に使うと良い) 
-        *         * ''State'': キューの有効/無効 (**''UP''**|''DOWN''|''DRAIN''|''INACTIVE'') 
-            * ''UP'': 有効 
-            * ''DOWN'': ジョブは受け付けるが、実行しない 
-            * ''DRAIN'': ジョブを受け付けない (キューに既にあるジョブは実行する) 
-            * ''INACTIVE'': ジョブを受け付けない (キューに既にあるジョブは実行しない) 
-    * 参考サイト:  
-       * slurm.conf: [[https://slurm.schedmd.com/slurm.conf.html | Slurm Workload Manager]] 
-       * GPU: [[https://slurm.schedmd.com/gres.html | Slurm Workload Manager]] 
-       * 割り込み: [[https://slurm.schedmd.com/preempt.html | Slurm Workload Manager]] 
- 
- 
-{{tag>Linux サーバ}} 
  • サーバ関連/slurm.1544413863.txt.gz
  • 最終更新: 2018/12/10 12:51
  • by mumeiyamibito