「Slurm」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(内部リンク)
(序文を更新)
 
(4人の利用者による、間の8版が非表示)
1行目: 1行目:
[[Category:ネットワ]]
+
[[Category:分散コンピュティング]]
 
[[en:Slurm]]
 
[[en:Slurm]]
 
{{Related articles start}}
 
{{Related articles start}}
6行目: 6行目:
 
{{Related articles end}}
 
{{Related articles end}}
   
'''Slurm''' (Slurm Workload Manager や slurm-llnl とも呼ばれます) はあらゆる規模の Linux クラスタで動作するように作られたオープンソースのワークロードマネージャです。世界中のスーパーコンピュータやコンピュータクラスタで使われています。Slurm の機能は主に3つです。まず、一定時間、リソース (コンピュータノード) への排他的・非排他的なアクセスをユーザーに配分して、ユーザーが作業を行えるようにします。次に、割り当てられたノードで作業 (通常は並列のジョブ) を開始・実行したり監視するためのフレームワークを用意しています。最後に、保留されている作業のキューを管理することでリソースの取り合いを調整します。
+
[[Wikipedia:Slurm Workload Manager|Slurm]] (Slurm Workload Manager や slurm-llnl とも呼ばれます) はあらゆる規模の Linux クラスタで動作するように作られたオープンソースのワークロードマネージャです。世界中のスーパーコンピュータやコンピュータクラスタで使われています。Slurm の機能は主に3つです。まず、一定時間、リソース (コンピュータノード) への排他的・非排他的なアクセスをユーザーに配分して、ユーザーが作業を行えるようにします。次に、割り当てられたノードで作業 (通常は並列のジョブ) を開始・実行したり監視するためのフレームワークを用意しています。最後に、保留されている作業のキューを管理することでリソースの取り合いを調整します。
   
 
== インストール ==
 
== インストール ==
   
  +
[[AUR]] から {{pkg|slurm-llnl}} パッケージを[[インストール]]してください。依存パッケージとして、認証サービスの {{pkg|munge}} ([https://dun.github.io/munge/])もインストールされます。munge は slurmd の systemd サービスによって実行され、ホスト間の接続を暗号化します。そのため、クラスタの全てのノードには {{ic|/etc/munge/munge.key}} に同じ鍵を保存してください。次に、{{ic|munge.service}} を[[起動]]して[[有効化]]します。
{{Note|Slurm は強力なジョブスケジューラですが、単純にコンパイルのスループットを持ち上げるためだけのクラスタなら、[[distcc]] の方が簡単・簡潔です。}}
 
[[AUR]] から {{AUR|slurm-llnl}} パッケージを[[インストール]]してください。依存パッケージとして、認証サービスの {{AUR|munge}} もインストールされます。munge は slurmd の systemd サービスによって実行され、ホスト間の接続を暗号化します。そのため、クラスタの全てのノードには {{ic|/etc/munge/munge.key}} に同じ鍵を保存してください。
 
   
 
slurm パッケージには他にも多数の任意依存パッケージが存在しますが、利用するにはパッケージをインストールした後に slurm を再コンパイルする必要があります。
 
slurm パッケージには他にも多数の任意依存パッケージが存在しますが、利用するにはパッケージをインストールした後に slurm を再コンパイルする必要があります。
   
== セットアップ ==
+
== 設定 ==
   
slurm-llnl の設定ファイルは {{ic|/etc/slurm-llnl}} にあります。slurm サービスを起動する前に、設定ファイル {{ic|/etc/slurm-llnl/slurm.conf}} を作成して適切に設定してください。クライアントとサーバーは同一の設定ファイルが使えます。https://computing.llnl.gov/linux/slurm/configurator.html からファイルを生成するか {{ic|/etc/slurm-llnl/slurm.conf.example}} を {{ic|/etc/slurm-llnl/slurm.conf}} にコピーして自由に修正してください。
+
slurm-llnl の設定ファイルは {{ic|/etc/slurm-llnl}} にあります。slurm サービスを起動する前に、設定ファイル {{ic|/etc/slurm-llnl/slurm.conf}} を作成して適切に設定してください。クライアントとサーバーは同一の設定ファイルが使えます。https://slurm.schedmd.com/configurator.html からファイルを生成するか {{ic|/etc/slurm-llnl/slurm.conf.example}} を {{ic|/etc/slurm-llnl/slurm.conf}} にコピーして自由に修正してください。
   
 
デフォルトでは、インストール時に UID と GID が 64030 の slurm ユーザーが作成されます。このユーザーを使うことで複数の環境でのセットアップが楽になります。UID と GID は Debian で使われている ID と同じなので、Debian と一緒に使うこともできます。ただしバイナリはディストリビューションによって違うので注意してください。
 
デフォルトでは、インストール時に UID と GID が 64030 の slurm ユーザーが作成されます。このユーザーを使うことで複数の環境でのセットアップが楽になります。UID と GID は Debian で使われている ID と同じなので、Debian と一緒に使うこともできます。ただしバイナリはディストリビューションによって違うので注意してください。
23行目: 22行目:
 
=== クライアント (計算ノード) の設定 ===
 
=== クライアント (計算ノード) の設定 ===
   
クライアント側で {{ic|slurmd.service}} を起動します (ブート時に起動させるにはサービスを有効化してください)
+
クライアント側で安全に {{ic|slurmd.service}} を[[起動/有効化]]できるようになりま
   
  +
{{Note|プロセス追跡に Linux [[cgroups]] を使用することを選択した場合は、各クライアントで {{ic|cgroup.conf}} 設定ファイルを作成する必要があります。設定の詳細については、[https://slurm.schedmd.com/cgroup.conf.html cgroup.conf] マニュアルページを参照してください。}}
slurmd が立ち上がっていることを確認するには、次を実行:
 
 
# systemctl status slurmd
 
   
 
=== サーバー (ヘッドノード) の設定 ===
 
=== サーバー (ヘッドノード) の設定 ===
   
{{ic|slurmctld.service}} を起動有効化してください。
+
{{ic|slurmctld.service}} を[[起動/有効化]]してください。
   
また、{{ic|slurmdbd.service}} を起動有効化することで、mysql データベースを使って重要なプロセスの情報ログを簡単に管理することができます。
+
また、{{ic|slurmdbd.service}} を[[起動/有効化]]することで、mysql データベースを使って重要なプロセスの情報ログを簡単に管理することができます。
   
 
{{Note|systemd の力を利用して、{{ic|/etc/default/slurm-llnl}} の設定を変更することでプログラムに引数を追加することができます。このファイルは様々なサービスの environment ファイルとして処理され、設定された引数がプログラムに渡されます。}}
 
{{Note|systemd の力を利用して、{{ic|/etc/default/slurm-llnl}} の設定を変更することでプログラムに引数を追加することができます。このファイルは様々なサービスの environment ファイルとして処理され、設定された引数がプログラムに渡されます。}}
  +
  +
== トラブルシューティング ==
  +
  +
=== 起動時にサービスの開始に失敗する ===
  +
  +
{{ic|slurmd.service}} または {{ic|slurmctld.service}} が起動時に起動できないが、手動で起動すると正常に動作する場合は、ネットワーク接続が確立される前にサービスが起動しようとしている可能性があります。これを確認するには、失敗したサービスに関連する以下の行を {{ic|slurm.conf}} ファイルに追加します。
  +
  +
{{hc|slurm.conf|2=
  +
SlurmctldDebug=info
  +
SlurmctldLogFile=/var/log/slurm-llnl/slurmctld.log
  +
SlurmdDebug=info
  +
SlurmdLogFile=/var/log/slurm-llnl/slurmd.log
  +
}}
  +
  +
次に、関連するログファイルを確認します。致命的な例外に {{ic|Address family not supported by protocol}} が記載されている場合は、[[systemd#ネットワークが稼働した後にサービスを実行する|network-online.target]] 経由の有効なネットワーク接続を待機するように[[ユニットを拡張]]することをお勧めします。
  +
  +
== ヒントとテクニック ==
  +
  +
=== RHEL ベースのノードを並行して実行する ===
  +
  +
RedHat ベースのディストリビューションでは、slurm はデフォルトで root として実行されます。[https://bugzilla.redhat.com/show_bug.cgi?id=1779582]
  +
これらのノードをクラスターに追加するには、まず、Arch Linux で使用されているものと一致するように、{{ic|UID}} と {{ic|GID}} が {{ic|64030}} に等しい {{ic|slurm}} ユーザーを作成します。次に、コマンド {{ic|slurm-setuser -u slurm -g slurm}} を使用して slurm ユーザーを変更します。
   
 
== 参照 ==
 
== 参照 ==

2024年5月8日 (水) 18:42時点における最新版

関連記事

Slurm (Slurm Workload Manager や slurm-llnl とも呼ばれます) はあらゆる規模の Linux クラスタで動作するように作られたオープンソースのワークロードマネージャです。世界中のスーパーコンピュータやコンピュータクラスタで使われています。Slurm の機能は主に3つです。まず、一定時間、リソース (コンピュータノード) への排他的・非排他的なアクセスをユーザーに配分して、ユーザーが作業を行えるようにします。次に、割り当てられたノードで作業 (通常は並列のジョブ) を開始・実行したり監視するためのフレームワークを用意しています。最後に、保留されている作業のキューを管理することでリソースの取り合いを調整します。

インストール

AUR から slurm-llnl パッケージをインストールしてください。依存パッケージとして、認証サービスの munge ([1])もインストールされます。munge は slurmd の systemd サービスによって実行され、ホスト間の接続を暗号化します。そのため、クラスタの全てのノードには /etc/munge/munge.key に同じ鍵を保存してください。次に、munge.service起動して有効化します。

slurm パッケージには他にも多数の任意依存パッケージが存在しますが、利用するにはパッケージをインストールした後に slurm を再コンパイルする必要があります。

設定

slurm-llnl の設定ファイルは /etc/slurm-llnl にあります。slurm サービスを起動する前に、設定ファイル /etc/slurm-llnl/slurm.conf を作成して適切に設定してください。クライアントとサーバーは同一の設定ファイルが使えます。https://slurm.schedmd.com/configurator.html からファイルを生成するか /etc/slurm-llnl/slurm.conf.example/etc/slurm-llnl/slurm.conf にコピーして自由に修正してください。

デフォルトでは、インストール時に UID と GID が 64030 の slurm ユーザーが作成されます。このユーザーを使うことで複数の環境でのセットアップが楽になります。UID と GID は Debian で使われている ID と同じなので、Debian と一緒に使うこともできます。ただしバイナリはディストリビューションによって違うので注意してください。

クライアント (計算ノード) の設定

クライアント側で安全に slurmd.service起動/有効化できるようになりました。

ノート: プロセス追跡に Linux cgroups を使用することを選択した場合は、各クライアントで cgroup.conf 設定ファイルを作成する必要があります。設定の詳細については、cgroup.conf マニュアルページを参照してください。

サーバー (ヘッドノード) の設定

slurmctld.service起動/有効化してください。

また、slurmdbd.service起動/有効化することで、mysql データベースを使って重要なプロセスの情報ログを簡単に管理することができます。

ノート: systemd の力を利用して、/etc/default/slurm-llnl の設定を変更することでプログラムに引数を追加することができます。このファイルは様々なサービスの environment ファイルとして処理され、設定された引数がプログラムに渡されます。

トラブルシューティング

起動時にサービスの開始に失敗する

slurmd.service または slurmctld.service が起動時に起動できないが、手動で起動すると正常に動作する場合は、ネットワーク接続が確立される前にサービスが起動しようとしている可能性があります。これを確認するには、失敗したサービスに関連する以下の行を slurm.conf ファイルに追加します。

slurm.conf
SlurmctldDebug=info
SlurmctldLogFile=/var/log/slurm-llnl/slurmctld.log
SlurmdDebug=info
SlurmdLogFile=/var/log/slurm-llnl/slurmd.log

次に、関連するログファイルを確認します。致命的な例外に Address family not supported by protocol が記載されている場合は、network-online.target 経由の有効なネットワーク接続を待機するようにユニットを拡張することをお勧めします。

ヒントとテクニック

RHEL ベースのノードを並行して実行する

RedHat ベースのディストリビューションでは、slurm はデフォルトで root として実行されます。[2] これらのノードをクラスターに追加するには、まず、Arch Linux で使用されているものと一致するように、UIDGID64030 に等しい slurm ユーザーを作成します。次に、コマンド slurm-setuser -u slurm -g slurm を使用して slurm ユーザーを変更します。

参照