LoginSignup
0
0

OCI - HPC Cluster: ユーザーが投入できるジョブ数を制限する

Last updated at Posted at 2024-04-18

本ページは OCI: HPC Cluster のサブページになります。

実現したいこと

HPC ClusterのAutoscaling環境にてユーザーが投入できるジョブ数の制限設定を実現例について解説します。

例: 以下のパーティションに対して以下のユーザーが投入できるジョブ数を4ジョブまでに制限したい。ジョブの同時実行数は2ジョブとしたい。

  • パーティション: partition-a
  • ユーザー: user-a, user-b

設定内容を図解すると以下のようになります。

  • ユーザーが投入できるジョブ数についてはSLURMのQoSで実現します
  • ジョブの同時実行数についてはAutoscalingを構成している関係上、Autoscaling側で該当のパーティションで作成できるクラスタ数を制限して実現します
    image.png

前提となる設定状況

LDAPユーザー

以下のLDAPユーザーに対してジョブの制限を設定します。

$ cluster user list
DN: cn=user-a,ou=People,dc=local - STATUS: Read - READ TIME: 2024-04-12T09:00:16.174386
    cn: user-a
    displayName: User A
    gecos: User A
    gidNumber: 10006
    homeDirectory: /home/user-a
    loginShell: /bin/bash
    sn: user-a
    uid: user-a
    uidNumber: 10001

DN: cn=user-b,ou=People,dc=local - STATUS: Read - READ TIME: 2024-04-12T09:00:16.174560
    cn: user-b
    displayName: User B
    gecos: User B
    gidNumber: 10006
    homeDirectory: /home/user-b
    loginShell: /bin/bash
    sn: user-b
    uid: user-b
    uidNumber: 10006

Autoscaling設定

    - name: partition-a
      default: false
      instance_types:
        - name: bm-cluster
          default: true
          shape: BM.Optimized3.36
          instance_keyword: optimized3
          permanent: false
          cluster_network: false
          compute_cluster: false
          max_number_nodes: 16
          max_cluster_size: 8
          max_cluster_count: 2
          region: ap-tokyo-1
          ad: xxxx:AP-TOKYO-1-AD-1
          private_subnet: 172.16.4.0/22
          private_subnet_id: ocid1.subnet...
          image: ocid1.image.oc1..
          targetCompartment: ocid1.compartment.oc1...
          boot_volume_size: 100
          use_marketplace_image: true
          use_compute_agent: true
          instance_pool_ocpus: 1
          instance_pool_memory: 8
          instance_pool_custom_memory: true
          marketplace_listing: HPC_OL8
          hyperthreading: true

設定手順

SLURMのアカウントを作成する

このアカウントというのはSLURMにおけるグループのような概念です。
ここではabc-groupという名前のアカウントを作成します。

$ sudo sacctmgr add account abc-group
 Adding Account(s)
  abc-group
 Settings
  Description     = Account Name
SlurmctldHost=eval-slurm-controller
  Organization    = Parent/Account Name
 Associations
  A = abc-group  C = cluster
Would you like to commit changes? (You have 30 seconds to decide)
(N/y): y

アカウントが作成されたことを確認します。

[opc@eval-slurm-controller ~]$ sacctmgr list account
   Account                Descr                  Org
---------- -------------------- --------------------
 abc-group            abc-group            abc-group
      root default root account                 root

アカウントにLDAPユーザーを割り当てる

LDAPユーザーであるuser-auser-babc-groupに割り当てます。

$ sudo sacctmgr add user user-a account=abc-group
 Adding User(s)
  user-a
 Associations =
  U = user-a    A = abc-group  C = cluster
 Non Default Settings
Would you like to commit changes? (You have 30 seconds to decide)
(N/y): y

$ sudo sacctmgr add user user-b account=abc-group
 Adding User(s)
  user-b
 Associations =
  U = user-b    A = abc-group  C = cluster
 Non Default Settings
Would you like to commit changes? (You have 30 seconds to decide)
(N/y): y

QoSの設定を有効にする

任意のエディタで管理者権限でslurm.confを開いて変種します。

sudo vi /etc/slum/slurm.conf

 
以下の記述を追加します。

AccountingStorageEnforce=limits

QoSを作成する

ここではsubmit-qosという名前のQoSの定義を作成します。

$ sudo sacctmgr add qos submit-qos
 Adding QOS(s)
  submit-qos
 Settings
  Description    = submit-qos
Would you like to commit changes? (You have 30 seconds to decide)
(N/y): y

QoSの定義にMaxSubmitJobsPerAccountを設定する

作成したQoSに対して、MaxSubmitJobsPerAccountパラメーターに=4の設定を追加します。
これにより、「ユーザーが投入できるジョブ数を4ジョブまでに制限」が実現されます。

MaxSubmitJobsPerAccount:
The maximum number of jobs an account (or sub-account) can have running and pending at a given time.

$ sudo sacctmgr modify qos submit-qos set MaxSubmitJobsPerAccount=4
 Modified qos...
  submit-qos
Would you like to commit changes? (You have 30 seconds to decide)
(N/y): y

 
設定されたことを確認します。

$ sacctmgr show qos format="Name,MaxSubmitJobsPerAccount"
      Name MaxSubmitPA
---------- -----------
    normal
limited_j+
submit-qos          4

QoSとパーティションを関連づける

設定したQoSとパーティションを紐づけます。

管理者権限でslurm.confを修正します。

sudo vi /etc/slurm/slurm.conf

 
対象のパーティションの行の文末にQOS=submit-qosを追加して保存します。

PartitionName=partition-a Nodes=<node>-[1-1024] Default=NO MaxTime=INFINITE State=UP QOS=submit-qos

slurmctldをrestartする

slurm.confの変更を適用させるためにslurmctldをretartさせる。

sudo systemctl restart slurmctld

設定が反映されていることを確認します。

$ scontrol show partition partition-a | grep QoS
   AllocNodes=ALL Default=NO QoS=submit-qos

動作確認

動作確認としてuser-auser-bで設定した制限以上のジョブを投入してみます。
上限に達すると以下のエラーにてジョブが投入できなくなることを確認します。

$ sbatch job.sh
sbatch: error: MaxSubmitJobsPerAccount
sbatch: error: Batch job submission failed: Job violates accounting/QOS policy (job submit limit, user's size and/or time limits)

:warning: 注意点

本設定にあたりslurm.confを修正していますが、HPC-Clusterのqueues.confの変更を適用するslurm_config.shを実行すると記載した以下の内容が消えてしまうのでご注意ください。

  • AccountingStorageEnforce=limitsの記述
  • Partition= で始まる行の文末に設定したQOS=submit-qosの記述

HPC-Clusterの仕様上の問題がありますので、本設定は以下のの流れで実施をするように注意してください。

  1. queues.confの編集
  2. slurm_config.shの実行
  3. 本パーティション設定

参照資料

本手順の作成にあたり以下のURLを参考にさせていただきました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0