Lifematics Corporate Blog

Lifematics社のコーポレートブログへようこそ!

Slurmのフェデレーション設定

前回は複数のSlurmクラスタを管理する方法として、JobIDのナンバリング設定をご紹介しました。

blog.lifematics.co.jp

今回はより効果的に複数のSlurmクラスタを管理する方法として、フェデレーションをご紹介します。

フェデレーションとは

通常、SlurmのジョブはそれぞれのSlurmクラスタのLoginかControllerから実行します。

複数のSlurmクラスタがある場合、それぞれのSlurmクラスタ用にLoginを用意するか、使用したいSlurmクラスタのControllerへログインしてジョブを実行する必要があります。

■フェデレーションなしの管理

Loginをそれぞれに用意するとコストがかかります。

また、直接Controllerへログインする場合も、毎回どちらかのControllerへログインしなくてはいけない手間や間違って別のSlurmクラスタでジョブを実行する可能性があり、効果的な管理方法ではありません。

■フェデレーションありの管理

フェデレーションを使用することで、cluster_aのLoginやControllerからcluster_bへジョブを投入するように、別のSlurmクラスタへのジョブ実行も横断的に行えます。

また、JobIDは自動的にクラスタ固有のJobIDを一意に発行します。

フェデレーション設定

設定方法は以下の通りです。

 # scontrol show federation

>> フェデレーション設定前なので、何も表示されません。

フェデレーション「test_fed」を追加し、クラスタ「cluster_a」を登録します。

 # sacctmgr add federation test_fed clusters=cluster_a
 Adding Federation(s)
  test_fed
 Settings
  Cluster       = cluster_a
Would you like to commit changes? (You have 30 seconds to decide)
(N/y): y

状態を確認します。

 # scontrol show federation
 Federation: test_fed
Self:       cluster_a:10.100.110.172:6817 ID:1 FedState:ACTIVE Features:

>> フェデレーションとcluster_aが追加されました。

フェデレーション「test_fed」へ、クラスタ「cluster_b」を追加します。

# sacctmgr modify federation test_fed set clusters+=cluster_b
 Setting
  Cluster      += cluster_b
 Modified federation...
  test_fed 
Would you like to commit changes? (You have 30 seconds to decide)
(N/y): y

状態を確認します。

 # scontrol show federation
Federation: test_fed 
Self:       cluster_a:10.100.110.172:6817 ID:1 FedState:ACTIVE Features:
Sibling:    cluster_b:10.100.110.179:6817 ID:2 FedState:ACTIVE Features: PersistConnSend/Recv:Yes/Yes Synced:Yes

>> cluster_bが追加されました。

ジョブの実行

また、cluster_aの環境(Controller/Login)からcluster_bへジョブを実行するには、「--cluster=」オプションでSlurmクラスタを指定することで実行できるようになります。

# sbatch --cluster=cluster_b testjob.sh
or
# srun --cluster=cluster_b testjob.sh

JobID

フェデレーション環境では32bitで構成されるJobIDの最初の6bitがクラスタ固有IDとなります。 そのため、自動的にそれぞれのSlurmクラスタ固有のナンバリング体系が設定されます。

■cluster_aのJobID

3235390
3235390
3235391
3235391
3235392

■cluster_bのJobID

134217763    
134217763.0  
134217764    
134217764.0  
134217765    



Slurmのフェデレーションは、複数クラスターを統合し、リソースの最適化とスケーラビリティを向上させる強力なツールです。

当社では、Slurmクラスタの構築・最適化の支援も行っています。複数クラスタの管理に課題がある方は、お気軽にご相談ください。