Quality of Service (QOS)

One can specify a Quality of Service (QOS) for each job submitted to Slurm.
Slurmに送信されるジョブごとにQualityof Service(QOS)を指定できます。
The quality of service associated with a job will affect the job in three ways:
ジョブに関連するサービス品質は、次の3つの方法でジョブに影響します。

The QOS's are defined in the Slurm database using the sacctmgr utility.
QOSは、sacctmgrユーティリティを使用してSlurmデータベースで定義されます。

Jobs request a QOS using the "--qos=" option to the sbatch, salloc, and srun commands.
ジョブは、sbatch、salloc、およびsrunコマンドの「--qos =」オプションを使用してQOSを要求します。

Job Scheduling Priority

Job scheduling priority is made up of a number of factors as described in the priority/multifactor plugin.
ジョブスケジューリングの優先度は、priority / multifactorプラグインで説明されているように、いくつかの要素で構成されています。
One of the factors is the QOS priority.
要因の1つは、QOSの優先順位です。
Each QOS is defined in the Slurm database and includes an associated priority.
各QOSはSlurmデータベースで定義されており、関連する優先度が含まれています。
Jobs that request and are permitted a QOS will incorporate the priority associated with that QOS in the job's multi-factor priority calculation.
QOSを要求して許可されるジョブは、そのQOSに関連付けられた優先度をジョブの多要素優先度の計算に組み込みます。

To enable the QOS priority component of the multi-factor priority calculation, the "PriorityWeightQOS" configuration parameter must be defined in the slurm.conf file and assigned an integer value greater than zero.
多要素優先度計算のQOS優先度コンポーネントを有効にするには、「PriorityWeightQOS」構成パラメーターをslurm.confファイルで定義し、ゼロより大きい整数値を割り当てる必要があります。

A job's QOS only affects is scheduling priority when the multi-factor plugin is loaded.
ジョブのQOSは、多要素プラグインがロードされたときのスケジューリングの優先順位にのみ影響します。

Job Preemption

Slurm offers two ways for a queued job to preempt a running job, free-up the running job's resources and allocate them to the queued job.
Slurmは、キューに入れられたジョブが実行中のジョブをプリエンプトするための2つの方法を提供します。実行中のジョブのリソースを解放し、それらをキューに入れられたジョブに割り当てます。
See the Preemption description for details.
詳細については、プリエンプションの説明を参照してください。

The preemption method is determined by the "PreemptType" configuration parameter defined in slurm.conf.
プリエンプションメソッドは、slurm.confで定義されている「PreemptType」構成パラメーターによって決定されます。
When the "PreemptType" is set to "preempt/qos", a queued job's QOS will be used to determine whether it can preempt a running job.
「PreemptType」が「preempt / qos」に設定されている場合、キューに入れられたジョブのQOSを使用して、実行中のジョブをプリエンプトできるかどうかを判断します。

The QOS can be assigned (using sacctmgr) a list of other QOS's that it can preempt.
QOSには、(sacctmgrを使用して)プリエンプトできる他のQOSのリストを割り当てることができます。
When there is a queued job with a QOS that is allowed to preempt a running job of another QOS, the Slurm scheduler will preempt the running job.
別のQOSの実行中のジョブをプリエンプトできるQOSを持つキューに入れられたジョブがある場合、Slurmスケジューラーは実行中のジョブをプリエンプションします。

The QOS option PreemptExemptTime specifies the minimum run time before the job is considered for preemption.
QOSオプションPreemptExemptTimeは、ジョブがプリエンプションの対象と見なされるまでの最小実行時間を指定します。
The QOS option takes precedence over the global option of the same name.
QOSオプションは、同じ名前のグローバルオプションよりも優先されます。

Job Limits

Each QOS is assigned a set of limits which will be applied to the job.
各QOSには、ジョブに適用される一連の制限が割り当てられます。
The limits mirror the limits imposed by the user/account/cluster/partition association defined in the Slurm database and described in the Resource Limits section.
制限は、Slurmデータベースで定義され、「リソース制限」セクションで説明されているユーザー/アカウント/クラスター/パーティションの関連付けによって課される制限を反映しています。
When limits for a QOS have been defined, they will take precedence over the association's limits.
QOSの制限が定義されている場合、それらはアソシエーションの制限よりも優先されます。

Partition QOS

A QOS can be attached to a partition.
QOSをパーティションに接続できます。
This means a partition will have all the same limits as a QOS.
これは、パーティションにQOSと同じ制限があることを意味します。
This also gives the ability of a true 'floating' partition, meaning if you assign all the nodes to a partition and then in the Partition's QOS limit the number of GrpCPUs or GrpNodes the partition will have access to all the nodes, but only be able to run on the number of resources in it.
これにより、真の「フローティング」パーティションの機能も提供されます。つまり、すべてのノードをパーティションに割り当ててから、パーティションのQOSで、GrpCPUまたはGrpNodeの数を制限すると、パーティションはすべてのノードにアクセスできますが、アクセスできるのはその中のリソースの数で実行します。

The Partition QOS will override the job's QOS.
パーティションQOSは、ジョブのQOSを上書きします。
If the opposite is desired you need to have the job's QOS have the 'OverPartQOS' flag which will reverse the order of precedence.
逆の場合は、ジョブのQOSに「OverPartQOS」フラグを設定する必要があります。これにより、優先順位が逆になります。

Other QOS Options

  • Flags Used by the slurmctld to override or enforce certain characteristics.
    フラグslurmctldが特定の特性をオーバーライドまたは適用するために使用します。
    Valid options are:
    有効なオプションは次のとおりです。
    • DenyOnLimit If set, jobs using this QOS will be rejected at submission time if they do not conform to the QOS 'Max' limits.
      DenyOnLimit設定されている場合、このQOSを使用するジョブは、QOSの「最大」制限に準拠していない場合、送信時に拒否されます。
      Group limits will also be treated like 'Max' limits as well and will be denied if they go over.
      グループ制限も「最大」制限と同様に扱われ、超過すると拒否されます。
      By default jobs that go over these limits will pend until they conform.
      デフォルトでは、これらの制限を超えるジョブは、準拠するまで保留されます。
      This currently only applies to QOS and Association limits.
      これは現在、QOSとアソシエーションの制限にのみ適用されます。
    • EnforceUsageThreshold If set, and the QOS also has a UsageThreshold, any jobs submitted with this QOS that fall below the UsageThreshold will be held until their Fairshare Usage goes above the Threshold.
      EnforceUsageThreshold設定されていて、QOSにもUsageThresholdがある場合、UsageThresholdを下回るこのQOSで送信されたジョブは、フェアシェアの使用量がしきい値を超えるまで保持されます。
    • NoReserve If this flag is set and backfill scheduling is used, jobs using this QOS will not reserve resources in the backfill schedule's map of resources allocated through time.
      NoReserveこのフラグが設定され、バックフィルスケジューリングが使用されている場合、このQOSを使用するジョブは、時間の経過とともに割り当てられたリソースのバックフィルスケジュールのマップでリソースを予約しません。
      This flag is intended for use with a QOS that may be preempted by jobs associated with all other QOS (e.g use with a "standby" QOS).
      このフラグは、他のすべてのQOSに関連付けられたジョブによってプリエンプトされる可能性のあるQOSでの使用を目的としています(たとえば、「スタンバイ」QOSでの使用)。
      If this flag is used with a QOS which can not be preempted by all other QOS, it could result in starvation of larger jobs.
      このフラグを他のすべてのQOSでプリエンプトできないQOSで使用すると、より大きなジョブが不足する可能性があります。
    • PartitionMaxNodes If set, jobs using this QOS will be able to override the requested partition's MaxNodes limit.
      PartitionMaxNodes設定されている場合、このQOSを使用するジョブは、要求されたパーティションのMaxNodes制限をオーバーライドできます。
    • PartitionMinNodes If set, jobs using this QOS will be able to override the requested partition's MinNodes limit.
      PartitionMinNodes設定されている場合、このQOSを使用するジョブは、要求されたパーティションのMinNodes制限を上書きできます。
    • OverPartQOS If set, jobs using this QOS will be able to override any limits used by the requested partition's QOS limits.
      OverPartQOS設定されている場合、このQOSを使用するジョブは、要求されたパーティションのQOS制限によって使用される制限をオーバーライドできます。
    • PartitionTimeLimit If set, jobs using this QOS will be able to override the requested partition's TimeLimit.
      PartitionTimeLimit設定されている場合、このQOSを使用するジョブは、要求されたパーティションのTimeLimitをオーバーライドできます。
    • RequiresReservaton If set, jobs using this QOS must designate a reservation when submitting a job.
      RequiredReservaton設定されている場合、このQOSを使用するジョブは、ジョブを送信するときに予約を指定する必要があります。
      This option can be useful in restricting usage of a QOS that may have greater preemptive capability or additional resources to be allowed only within a reservation.
      このオプションは、より優れたプリエンプティブ機能を備えている可能性のあるQOSの使用を制限したり、予約内でのみ許可される追加のリソースを制限したりする場合に役立ちます。
    • NoDecay If set, this QOS will not have its GrpTRESMins, GrpWall and UsageRaw decayed by the slurm.conf PriorityDecayHalfLife or PriorityUsageResetPeriod settings.
      NoDecay設定されている場合、このQOSのGrpTRESMins、GrpWall、UsageRawは、slurm.confPriorityDecayHalfLifeまたはPriorityUsageResetPeriod設定によって減衰されません。
      This allows a QOS to provide aggregate limits that, once consumed, will not be replenished automatically.
      これにより、QOSは、一度消費されると自動的に補充されない集計制限を提供できます。
      Such a QOS will act as a time-limited quota of resources for an association that has access to it.
      このようなQOSは、それにアクセスできるアソシエーションのリソースの時間制限付きクォータとして機能します。
      Account/user usage will still be decayed for associations using the QOS.
      アカウント/ユーザーの使用量は、QOSを使用する関連付けでは引き続き減衰します。
      The QOS GrpTRESMins and GrpWall limits can be increased or the QOS RawUsage value reset to 0 (zero) to again allow jobs submitted with this QOS to be queued (if DenyOnLimit is set) or run (pending with QOSGrp{TRES}MinutesLimit or QOSGrpWallLimit reasons, where {TRES} is some type of trackable resource).
      QOS GrpTRESMinsおよびGrpWall制限を増やすか、QOS RawUsage値を0(ゼロ)にリセットして、このQOSで送信されたジョブをキューに入れたり(DenyOnLimitが設定されている場合)、実行したり(QOSGrp {TRES} MinutesLimitまたはQOSGrpWallLimitの理由で保留)できるようにします。 、ここで、{TRES}は追跡可能なリソースの一種です)。
    • UsageFactorSafe If set, and AccountingStorageEnforce includes Safe, jobs will only be able to run if the job can run to completion with the UsageFactor applied.
      UsageFactorSafe設定されていて、AccountingStorageEnforceにSafeが含まれている場合、ジョブは、UsageFactorが適用された状態で最後まで実行できる場合にのみ実行できます。
  • GraceTime Preemption grace time to be extended to a job which has been selected for preemption.
    GraceTimeプリエンプションプリエンプション用に選択されたジョブに延長されるグレースタイム。
  • UsageFactor A float that is factored into a job’s TRES usage (e.g. RawUsage, TRESMins, TRESRunMins).
    UsageFactorジョブに因数分解されるフロート窶冱TRES使用量(RawUsage、TRESMins、TRESRunMinsなど)。
    For example, if the usagefactor was 2, for every TRESBillingUnit second a job ran it would count for 2.
    たとえば、usagefactorが2の場合、ジョブが実行されたTRESBillingUnit秒ごとに2としてカウントされます。
    If the usagefactor was .5, every second would only count for half of the time.
    使用率が.5の場合、毎秒は半分の時間しかカウントされません。
    A setting of 0 would add no timed usage from the job.
    0に設定すると、ジョブからの時間指定の使用は追加されません。

    The usage factor only applies to the job's QOS and not the partition QOS.
    使用率は、ジョブのQOSにのみ適用され、パーティションのQOSには適用されません。

    If the UsageFactorSafe flag is set and AccountingStorageEnforce includes Safe, jobs will only be able to run if the job can run to completion with the UsageFactor applied.
    UsageFactorSafeフラグが設定されていて、AccountingStorageEnforceにSafeが含まれている場合、ジョブは、UsageFactorが適用された状態で最後まで実行できる場合にのみ実行できます。

    If the UsageFactorSafe flag is not set and AccountingStorageEnforce includes Safe, a job will be able to be scheduled without the UsageFactor applied and will be able to run without being killed due to limits.
    UsageFactorSafeフラグが設定されておらず、AccountingStorageEnforceにSafeが含まれている場合、ジョブは、UsageFactorを適用せずにスケジュールでき、制限のために強制終了されることなく実行できます。

    If the UsageFactorSafe flag is not set and AccountingStorageEnforce does not include Safe, a job will be able to be scheduled without the UsageFactor applied and could be killed due to limits.
    UsageFactorSafeフラグが設定されておらず、AccountingStorageEnforceにSafeが含まれていない場合、UsageFactorを適用せずにジョブをスケジュールでき、制限のために強制終了される可能性があります。

    See AccountingStorageEnforce in slurm.conf man page.
    slurm.confのマニュアルページのAccountingStorageEnforceを参照してください。

    Default is 1.
    デフォルトは1です。
    To clear a previously set value use the modify command with a new value of -1.
    以前に設定された値をクリアするには、新しい値-1を指定してmodifyコマンドを使用します。

  • UsageThreshold A float representing the lowest fairshare of an association allowable to run a job.
    UsageThresholdジョブの実行が許可されているアソシエーションの最低のフェアシェアを表す浮動小数点数。
    If an association falls below this threshold and has pending jobs or submits new jobs those jobs will be held until the usage goes back above the threshold.
    アソシエーションがこのしきい値を下回り、保留中のジョブがあるか、新しいジョブを送信した場合、それらのジョブは、使用量がしきい値を超えるまで保留されます。
    Use sshare to see current shares on the system.
    sshareを使用して、システム上の現在の共有を確認します。

Configuration

To summarize the above, the QOS's and their associated limits are defined in the Slurm database using the sacctmgr utility.
上記を要約すると、QOSとそれに関連する制限は、sacctmgrユーティリティを使用してSlurmデータベースで定義されます。
The QOS will only influence job scheduling priority when the multi-factor priority plugin is loaded and a non-zero "PriorityWeightQOS" has been defined in the slurm.conf file.
QOSは、多要素優先プラグインがロードされ、slurm.confファイルでゼロ以外の「PriorityWeightQOS」が定義されている場合にのみ、ジョブスケジューリングの優先度に影響を与えます。
The QOS will only determine job preemption when the "PreemptType" is defined as "preempt/qos" in the slurm.conf file.
QOSは、「PreemptType」がslurm.confファイルで「preempt / qos」として定義されている場合にのみ、ジョブのプリエンプションを決定します。
Limits defined for a QOS (and described above) will override the limits of the user/account/cluster/partition association.
QOSに対して定義された(および上記で説明された)制限は、ユーザー/アカウント/クラスター/パーティションの関連付けの制限を上書きします。

QOS examples

QOS manipulation examples.
QOS操作の例。
All QOS operations are done using the sacctmgr command.
すべてのQOS操作は、sacctmgrコマンドを使用して実行されます。
The default output of 'sacctmgr show qos' is very long given the large number of limits and options available so it is best to use the format option which filters the display.
'sacctmgr show qos'のデフォルト出力は、使用可能な制限とオプションが多数あるため非常に長いため、表示をフィルタリングするformatオプションを使用するのが最適です。

By default when a cluster is added to the database a default qos named normal is created.
デフォルトでは、クラスターがデータベースに追加されると、normalという名前のデフォルトのQoSが作成されます。

$ sacctmgr show qos format=name,priority
      Name   Priority
---------- ----------
    normal          0

Add a new qos
新しいQoSを追加します

$ sacctmgr add qos zebra
 Adding QOS(s)
  zebra
 Settings
  Description    = QOS Name

$ sacctmgr show qos format=name,priority
      Name   Priority
---------- ----------
    normal          0
     zebra          0

Set QOS priority
QOS優先度を設定する

$ sacctmgr modify qos zebra set priority=10
 Modified qos...
  zebra

$ sacctmgr show qos format=name,priority
      Name   Priority
---------- ----------
    normal          0
     zebra         10

Set some other limits:
他のいくつかの制限を設定します。

$ sacctmgr modify qos zebra set GrpCPUs=24
 Modified qos...
  zebra

$ sacctmgr show qos format=name,priority,GrpCPUs
      Name   Priority  GrpCPUs
---------- ---------- --------
    normal          0
     zebra         10       24

Add a qos to a user account
ユーザーアカウントにQoSを追加する

$ sacctmgr modify user crock set qos=zebra

$ sacctmgr show assoc format=cluster,user,qos
   Cluster       User                  QOS
---------- ---------- --------------------
canis_major                          normal
canis_major      root                normal
canis_major                          normal
canis_major     crock                zebra

Users can belong to multiple qos
ユーザーは複数のQoSに属することができます

$ sacctmgr modify user crock set qos+=alligator
$ sacctmgr show assoc format=cluster,user,qos
   Cluster       User                  QOS
---------- ---------- --------------------
canis_major                          normal
canis_major      root                normal
canis_major                          normal
canis_major     crock       alligator,zebra

Finally delete a qos
最後にqosを削除します

$ sacctmgr delete qos alligator
 Deleting QOS(s)...
  alligator

Last modified 9 July 2019