差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
サーバ関連:slurm [2018/12/17 10:17] – mumeiyamibito | サーバ関連:slurm [2019/03/01 15:53] (現在) – 削除 mumeiyamibito | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== Slurm ====== | ||
- | ===== 概要 ===== | ||
- | * Torque や Sun Grid Engine のようなジョブ管理ツール。 | ||
- | * 現状、ドキュメントは Torque の方が多く、Slurm は圧倒的にドキュメントが少なく、日本語ドキュメントはさらに少ない…。 | ||
- | * Ubuntu のデフォルトリポジトリには登録されている。 | ||
- | ===== プログラム ===== | ||
- | * '' | ||
- | * '' | ||
- | * 参考サイト: | ||
- | |||
- | ===== インストール方法 ===== | ||
- | * ここでは、Ubuntu 16.04 ベースで、ソースからコンパイルする方法を紹介する。 | ||
- | |||
- | - 認証システム munge をインストールする。\\ <code bash> | ||
- | $ sudo apt-get install libmunge-dev libmunge2 munge | ||
- | </ | ||
- | * 通常はインストール時に認証鍵が生成されるが、されない場合は以下のコマンドをマスターノードでのみ行う (マスターノードの認証鍵を計算機ノードが参照するため)。\\ <code bash> | ||
- | $ sudo create-munge-key | ||
- | </ | ||
- | - インストール時にスタートアップの問題で失敗するので、修正する。\\ <code bash> | ||
- | $ sudo systemctl edit --system --full munge | ||
- | </ | ||
- | - '' | ||
- | - 再度インストールする。\\ <code bash> | ||
- | $ sudo apt-get install -f | ||
- | </ | ||
- | - slurm を https:// | ||
- | * ここでは、'' | ||
- | * ダウンロードしたファイルは ''/ | ||
- | - 展開する。\\ <code bash> | ||
- | $ cd /tmp | ||
- | $ tar axvf slurm-17.02.1-2.tar.gz | ||
- | </ | ||
- | - インストールする。\\ <code bash> | ||
- | $ cd slurm-17.02-1.2 | ||
- | $ ./configure | ||
- | $ make -j 4 | ||
- | $ sudo make install | ||
- | </ | ||
- | - 設定ファイルをコピーする。\\ <code bash> | ||
- | $ sudo cp etc/ | ||
- | </ | ||
- | - 設定ファイルを編集する。 | ||
- | * 詳しくはシステムの設定を参照 | ||
- | - 必要なディレクトリを作成する。\\ <code bash> | ||
- | $ sudo mkdir -p / | ||
- | $ sudo mkdir -p / | ||
- | </ | ||
- | * '' | ||
- | * 設定を容易に行う別の方法として、'' | ||
- | - 自動起動するようにする。 | ||
- | * マスターノード (マスターノードで計算させない場合は '' | ||
- | $ sudo cp etc/ | ||
- | $ sudo cp etc/ | ||
- | $ sudo systemctl enable slurmctld.service | ||
- | $ sudo systemctl enable slurmd.service | ||
- | </ | ||
- | * 計算ノード\\ <code bash> | ||
- | $ sudo cp etc/ | ||
- | $ sudo systemctl enable slurmd.service | ||
- | </ | ||
- | - サービスを起動する。 | ||
- | * マスターノード (マスターノードで計算させない場合は '' | ||
- | $ sudo systemctl start slurmctld.service | ||
- | $ sudo systemctl start slurmd.service | ||
- | </ | ||
- | * 計算ノード\\ <code bash> | ||
- | $ sudo systemctl start slurmd.service | ||
- | </ | ||
- | - 起動しているかを確認する。 | ||
- | * マスターノード | ||
- | $ sudo systemctl status slurmctld.service | ||
- | $ sudo systemctl status slurmd.service | ||
- | </ | ||
- | * 計算ノード\\ <code bash> | ||
- | $ sudo systemctl status slurmd.service | ||
- | </ | ||
- | - ジョブを投入してテストする。\\ <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 | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | </ | ||
- | |||
- | ===== システムの設定 ===== | ||
- | * マスターノード (master)、計算ノード (calc01, calc02, calc03) の例.\\ <code conf slurm.conf> | ||
- | ControlMachine=master | ||
- | ControlAddr=192.168.1.254 | ||
- | : | ||
- | SlurmUser=root | ||
- | SlurmdUser=root | ||
- | : | ||
- | SelectType=select/ | ||
- | SelectTypeParameters=CR_CPU | ||
- | : | ||
- | PreemptType=preempt/ | ||
- | PreemptMode=SUSPEND, | ||
- | : | ||
- | # Node configuration | ||
- | # Configure support for our four GPUs | ||
- | GresTypes=gpu, | ||
- | |||
- | # COMPUTE NODES | ||
- | NodeName=master | ||
- | NodeName=calc01 | ||
- | NodeName=calc02 | ||
- | NodeName=calc03 | ||
- | |||
- | # Partition configuration | ||
- | PartitionName=ALL | ||
- | PartitionName=CPU1 | ||
- | PartitionName=CPU2 | ||
- | PartitionName=CPU3 | ||
- | 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, | ||
- | </ | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * 1つ目のフィールド: | ||
- | * 2つ目のフィールド: | ||
- | * 3つ目のフィールド: | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * root や slurmUser に指定されているユーザは適用されない | ||
- | * '' | ||
- | * '' | ||
- | * * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * 参考サイト: | ||
- | * slurm.conf: [[https:// | ||
- | * GPU: [[https:// | ||
- | * 割り込み: | ||
- | |||
- | ===== トラブルシューティング ===== | ||
- | ==== " | ||
- | * 原因: プラグインが未ロードのために起こるエラー | ||
- | * プラグインが必要な設定に書き換えた後、マスターノードのデーモン (slurmctl) をリロードしたが、計算ノードのデーモン (slurmd) をリロードしていない場合に起こる | ||
- | * 解決法: slurmd をリロードする | ||
- | * 参考サイト: | ||
- | |||
- | ==== 他のノードに計算が流れない ==== | ||
- | * 原因: munge が通信の認証を担当しているため、認証キーの不一致やパーミッション・所有者が異なるため | ||
- | * 解決法: | ||
- | * 再度 /etc/munge 内の認証キーが同一か、パーミッション・所有者が適切に設定されているか確認する | ||
- | * もしかしたら、初歩的にネットワークがつながってないってこともあるので、そっちも確認する | ||
- | |||
- | ==== ノードの状態が `drain` のままでジョブが実行されない ==== | ||
- | * 原因: 設定の読み込みのタイミングが失敗して、リソースがジョブに対し少なすぎると認識されている (メモリの設定などが 1 のままになっているとか) | ||
- | * 解決法: | ||
- | * slurm デーモンを再起動させてみる\\ <code bash> | ||
- | $ sudo service slurm restart | ||
- | </ | ||
- | * ノードの状態を強制的に変更する (詰まっているジョブを強制的に動かす)\\ <code bash> | ||
- | $ sudo scontrol update nodename=NODENAME state=resume | ||
- | </ | ||
- | * '' | ||
- | * 強制的に設定ファイルを読み込む\\ <code bash> | ||
- | $ sudo scontrol reconfigure | ||
- | </ | ||
- | * 強制的に状態をクリアする\\ <code bash> | ||
- | $ sudo service slurm stop | ||
- | $ sudo service slurm startclean | ||
- | </ | ||
- | * 参考サイト: | ||
- | |||
- | ==== "sinfo -N" でノードがダウンした状態になる ==== | ||
- | * 原因1: ネットワークが繋がっていない | ||
- | * 解決方法: | ||
- | * 原因2: ダウンしたノードの ''/ | ||
- | * 解決方法: | ||
- | * 参考サイト | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * 原因3: 上記解決法を試した後でも down のままになっていることがあるが、これは sinfo のキャッシュが更新されていないことがある。 | ||
- | * 解決方法: | ||
- | |||
- | ==== 起動しない ==== | ||
- | * エラー: '' | ||
- | * 原因: Ubuntu 18.04 + Slurm 17.11.8 以降で、'' | ||
- | * 解決方法: | ||
- | |||
- | ===== 参考サイト ===== | ||
- | ==== 導入方法 ==== | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | |||
- | |||
- | |||
- | {{tag> |