Sharing Consumable Resources

CPU Management

(Disclaimer: In this "CPU Management" section, the term "consumable resource" does not include memory. The management of memory as a consumable resource is discussed in its own section below.)
(免責事項:この「CPU管理」セクションでは、「消費可能なリソース」という用語にはメモリは含まれていません。消費可能なリソースとしてのメモリの管理については、以下の独自のセクションで説明します。)

The per-partition OverSubscribe setting applies to the entity being selected for scheduling:
パーティションごとのOverSubscribe設定は、スケジューリング用に選択されているエンティティに適用されます。

  • When the default select/linear plugin is enabled, the per-partition OverSubscribe setting controls whether or not the nodes are shared among jobs.
    デフォルトの選択/線形プラグインが有効になっている場合、パーティションごとのOverSubscribe設定は、ノードがジョブ間で共有されるかどうかを制御します。

  • When the select/cons_res plugin is enabled, the per-partition OverSubscribe setting controls whether or not the configured consumable resources are shared among jobs. When a consumable resource such as a core, socket, or CPU is shared, it means that more than one job can be assigned to it.
    select / cons_resプラグインが有効になっている場合、パーティションごとのOverSubscribe設定は、構成された消費可能リソースがジョブ間で共有されるかどうかを制御します。コア、ソケット、CPUなどの消費可能なリソースが共有されている場合、複数のジョブを割り当てることができます。

The following table describes this new functionality in more detail:
次の表で、この新しい機能について詳しく説明します。

Selection Setting Per-partition OverSubscribe Setting Resulting Behavior
SelectType=select/linear OverSubscribe=NO Whole nodes are allocated to jobs. No node will run more than one job per partition/queue.
ノード全体がジョブに割り当てられます。ノードは、パーティション/キューごとに複数のジョブを実行しません。
OverSubscribe=YES By default same as OverSubscribe=NO. Nodes allocated to a job may be shared with other jobs if each job allows sharing via the srun --oversubscribe option.
デフォルトでは、OverSubscribe = NOと同じです。ジョブに割り当てられたノードは、各ジョブがsrun --oversubscribeオプションを介して共有を許可している場合、他のジョブと共有できます。
OverSubscribe=FORCE Each whole node can be allocated to multiple jobs up to the count specified per partition/queue (default 4 jobs per node)
各ノード全体は、パーティション/キューごとに指定された数までの複数のジョブに割り当てることができます(デフォルトではノードごとに4つのジョブ)
SelectType=select/cons_res
Plus one of the following:
SelectTypeParameters=CR_Core
SelectTypeParameters=CR_Core_Memory
OverSubscribe=NO Cores are allocated to jobs. No core will run more than one job per partition/queue.
コアはジョブに割り当てられます。コアは、パーティション/キューごとに複数のジョブを実行しません。
OverSubscribe=YES By default same as OverSubscribe=NO. Cores allocated to a job may be shared with other jobs if each job allows sharing via the srun --oversubscribe option.
デフォルトでは、OverSubscribe = NOと同じです。ジョブに割り当てられたコアは、各ジョブがsrun --oversubscribeオプションを介して共有を許可している場合、他のジョブと共有できます。
OverSubscribe=FORCE Each core can be allocated to multiple jobs up to the count specified per partition/queue (default 4 jobs per core).
各コアは、パーティション/キューごとに指定された数までの複数のジョブに割り当てることができます(デフォルトではコアごとに4つのジョブ)。
SelectType=select/cons_res
Plus one of the following:
SelectTypeParameters=CR_CPU
SelectTypeParameters=CR_CPU_Memory
OverSubscribe=NO CPUs are allocated to jobs. No CPU will run more than one job per partition/queue.
CPUはジョブに割り当てられます。CPUは、パーティション/キューごとに複数のジョブを実行しません。
OverSubscribe=YES By default same as OverSubscribe=NO. CPUs allocated to a job may be shared with other jobs if each job allows sharing via the srun --oversubscribe option.
デフォルトでは、OverSubscribe = NOと同じです。ジョブに割り当てられたCPUは、各ジョブがsrun --oversubscribeオプションを介して共有を許可している場合、他のジョブと共有できます。
OverSubscribe=FORCE Each CPU can be allocated to multiple jobs up to the count specified per partition/queue (default 4 jobs per CPU).
各CPUは、パーティション/キューごとに指定された数までの複数のジョブに割り当てることができます(デフォルトでは、CPUごとに4つのジョブ)。
SelectType=select/cons_res
Plus one of the following:
SelectTypeParameters=CR_Socket
SelectTypeParameters=CR_Socket_Memory
OverSubscribe=NO Sockets are allocated to jobs. No Socket will run more than one job per partition/queue.
ソケットはジョブに割り当てられます。ソケットは、パーティション/キューごとに複数のジョブを実行しません。
OverSubscribe=YES By default same as OverSubscribe=NO. Sockets allocated to a job may be shared with other jobs if each job allows sharing via the srun --oversubscribe option.
デフォルトでは、OverSubscribe = NOと同じです。ジョブに割り当てられたソケットは、各ジョブがsrun --oversubscribeオプションを介して共有を許可している場合、他のジョブと共有できます。
OverSubscribe=FORCE Each socket can be allocated to multiple jobs up to the count specified per partition/queue (default 4 jobs per socket).
各ソケットは、パーティション/キューごとに指定された数までの複数のジョブに割り当てることができます(デフォルトではソケットごとに4つのジョブ)。

When OverSubscribe=FORCE is configured, the consumable resources are scheduled for jobs using a least-loaded algorithm. Thus, idle CPUs|cores|sockets will be allocated to a job before busy ones, and CPUs|cores|sockets running one job will be allocated to a job before ones running two or more jobs. This is the same approach that the select/linear plugin uses when allocating "shared" nodes.
OverSubscribe = FORCEが構成されている場合、消費可能なリソースは、最小負荷のアルゴリズムを使用してジョブに対してスケジュールされます。したがって、アイドル状態のCPU |コア|ソケットはビジーなジョブの前にジョブに割り当てられ、1つのジョブを実行するCPU |コア|ソケットは2つ以上のジョブを実行する前にジョブに割り当てられます。これは、「共有」ノードを割り当てるときにselect / linearプラグインが使用するのと同じアプローチです。

Note that the granularity of the "least-loaded" algorithm is what distinguishes the two selection plugins (cons_res and linear) when OverSubscribe=FORCE is configured. With the select/cons_res plugin enabled, the CPUs of a node are not overcommitted until all of the rest of the CPUs are overcommitted on the other nodes. Thus if one job allocates half of the CPUs on a node and then a second job is submitted that requires more than half of the CPUs, the select/cons_res plugin will attempt to place this new job on other busy nodes that have more than half of the CPUs available for use. The select/linear plugin simply counts jobs on nodes, and does not track the CPU usage on each node.
「最小負荷」アルゴリズムの粒度は、OverSubscribe = FORCEが構成されている場合に2つの選択プラグイン(cons_resおよびlinear)を区別するものであることに注意してください。select / cons_resプラグインを有効にすると、他のノードで残りのすべてのCPUがオーバーコミットされるまで、ノードのCPUはオーバーコミットされません。したがって、1つのジョブがノードのCPUの半分を割り当て、CPUの半分以上を必要とする2番目のジョブが送信された場合、select / cons_resプラグインは、この新しいジョブを半分以上のビジーなノードに配置しようとします使用可能なCPU。select / linearプラグインは、ノード上のジョブを単純にカウントし、各ノードのCPU使用率を追跡しません。

This new sharing functionality in the select/cons_res plugin also supports the new OverSubscribe=FORCE:<num> syntax. If OverSubscribe=FORCE:3 is configured with select/cons_res and CR_Core or CR_Core_Memory, then the select/cons_res plugin will run up to 3 jobs on each core of each node in the partition. If CR_Socket or CR_Socket_Memory is configured, then the select/cons_res plugin will run up to 3 jobs on each socket of each node in the partition.
select / cons_resプラグインのこの新しい共有機能は、新しいOverSubscribe = FORCEもサポートしています。構文。OverSubscribe = FORCE:3がselect / cons_resおよびCR_CoreまたはCR_Core_Memoryで構成されている場合、select / cons_resプラグインは、パーティション内の各ノードの各コアで最大3つのジョブを実行します。CR_SocketまたはCR_Socket_Memoryが構成されている場合、select / cons_resプラグインは、パーティション内の各ノードの各ソケットで最大3つのジョブを実行します。

Nodes in Multiple Partitions

Slurm has supported configuring nodes in more than one partition since version 0.7.0. The following table describes how nodes configured in two partitions with different OverSubscribe settings will be allocated to jobs. Note that "shared" jobs are jobs that are submitted to partitions configured with OverSubscribe=FORCE or with OverSubscribe=YES and the job requested sharing with the srun --oversubscribe option. Conversely, "non-shared" jobs are jobs that are submitted to partitions configured with OverSubscribe=NO or OverSubscribe=YES and the job did not request sharable resources.
Slurmは、バージョン0.7.0以降、複数のパーティションでノードの構成をサポートしています。次の表は、OverSubscribe設定が異なる2つのパーティションで構成されたノードがジョブにどのように割り当てられるかを示しています。「共有」ジョブは、OverSubscribe = FORCEまたはOverSubscribe = YESで構成されたパーティションに送信されるジョブであり、ジョブはsrun --oversubscribeオプションで共有を要求したことに注意してください。逆に、「非共有」ジョブは、OverSubscribe = NOまたはOverSubscribe = YESで構成されたパーティションに送信され、共有可能なリソースを要求しなかったジョブです。

 First job "sharable"First job not "sharable"
Second job "sharable"Both jobs can run on the same nodes and may share resources
両方のジョブは同じノードで実行でき、リソースを共有できます
Jobs do not run on the same nodes
ジョブが同じノードで実行されない
Second job not "sharable"Jobs do not run on the same nodes
ジョブが同じノードで実行されない
Jobs can run on the same nodes but will not share resources
ジョブは同じノードで実行できますが、リソースを共有しません

The next table contains several scenarios with the select/cons_res plugin enabled to further clarify how a node is used when it is configured in more than one partition and the partitions have different "OverSubscribe" policies:
次の表には、select / cons_resプラグインが有効になっているいくつかのシナリオが含まれており、ノードが複数のパーティションで構成され、パーティションに異なる「OverSubscribe」ポリシーがある場合のノードの使用方法をさらに明確にしています。

Slurm configuration Resulting Behavior
Two OverSubscribe=NO partitions assigned the same set of nodes
2つのOverSubscribe = NOパーティションに同じノードセットが割り当てられています
Jobs from either partition will be assigned to all available consumable resources. No consumable resource will be shared. One node could have 2 jobs running on it, and each job could be from a different partition.
いずれかのパーティションのジョブは、利用可能なすべての消費可能なリソースに割り当てられます。消費可能なリソースは共有されません。1つのノードで2つのジョブが実行されている可能性があり、各ジョブは異なるパーティションからのものである可能性があります。
Two partitions assigned the same set of nodes: one partition is OverSubscribe=FORCE, and the other is OverSubscribe=NO
同じノードのセットを割り当てられた2つのパーティション:1つのパーティションはOverSubscribe = FORCE、もう1つのパーティションはOverSubscribe = NOです。
A node will only run jobs from one partition at a time. If a node is running jobs from the OverSubscribe=NO partition, then none of its consumable resources will be shared. If a node is running jobs from the OverSubscribe=FORCE partition, then its consumable resources can be shared.
ノードは一度に1つのパーティションからのみジョブを実行します。ノードがOverSubscribe = NOパーティションからジョブを実行している場合、その消費可能なリソースは共有されません。ノードがOverSubscribe = FORCEパーティションからジョブを実行している場合、その消費可能なリソースを共有できます。
Two OverSubscribe=FORCE partitions assigned the same set of nodes
同じノードのセットが割り当てられた2つのOverSubscribe = FORCEパーティション
Jobs from either partition will be assigned consumable resources. All consumable resources can be shared. One node could have 2 jobs running on it, and each job could be from a different partition.
いずれかのパーティションのジョブには、消費可能なリソースが割り当てられます。すべての消費可能なリソースを共有できます。1つのノードで2つのジョブが実行されている可能性があり、各ジョブは異なるパーティションからのものである可能性があります。
Two partitions assigned the same set of nodes: one partition is OverSubscribe=FORCE:3, and the other is OverSubscribe=FORCE:5
同じノードのセットを割り当てられた2つのパーティション:1つのパーティションはOverSubscribe = FORCE:3、もう1つのパーティションはOverSubscribe = FORCE:5
Generally the same behavior as above. However no consumable resource will ever run more than 3 jobs from the first partition, and no consumable resource will ever run more than 5 jobs from the second partition. A consumable resource could have up to 8 jobs running on it at one time.
通常、上記と同じ動作です。ただし、最初のパーティションから3つ以上のジョブを実行する消費可能なリソースはありません。また、2番目のパーティションから5つを超えるジョブを実行する消費可能なリソースはありません。消費可能なリソースでは、一度に最大8つのジョブを実行できます。

Note that the "mixed shared setting" configuration (row #2 above) introduces the possibility of starvation between jobs in each partition. If a set of nodes are running jobs from the OverSubscribe=NO partition, then these nodes will continue to only be available to jobs from that partition, even if jobs submitted to the OverSubscribe=FORCE partition have a higher priority. This works in reverse also, and in fact it's easier for jobs from the OverSubscribe=FORCE partition to hold onto the nodes longer because the consumable resource "sharing" provides more resource availability for new jobs to begin running "on top of" the existing jobs. This happens with the select/linear plugin also, so it's not specific to the select/cons_res plugin.
「混合共有設定」構成(上記の行#2)では、各パーティションのジョブ間で不足が発生する可能性があることに注意してください。ノードのセットがOverSubscribe = NOパーティションからジョブを実行している場合、OverSubscribe = FORCEパーティションに送信されたジョブの優先度が高くても、これらのノードは引き続きそのパーティションからのジョブでのみ使用できます。これも逆に機能し、実際には、OverSubscribe = FORCEパーティションからのジョブがノードを長く保持する方が簡単です。これは、消費可能なリソースの「共有」により、新しいジョブが既存のジョブの「上で」実行を開始するためのリソースの可用性が向上するためです。 。これは、select / linearプラグインでも発生するため、select / cons_resプラグインに固有のものではありません。

Memory Management

The management of memory as a consumable resource remains unchanged and can be used to prevent oversubscription of memory, which would result in having memory pages swapped out and severely degraded performance.
消費可能なリソースとしてのメモリの管理は変更されず、メモリのオーバーサブスクリプションを防ぐために使用できます。これにより、メモリページがスワップアウトされ、パフォーマンスが大幅に低下します。

Selection Setting Resulting Behavior
SelectType=select/linear Memory allocation is not tracked. Jobs are allocated to nodes without considering if there is enough free memory. Swapping could occur!
メモリ割り当ては追跡されません。ジョブは、十分な空きメモリがあるかどうかを考慮せずにノードに割り当てられます。スワッピングが発生する可能性があります!
SelectType=select/linear plus
SelectTypeParameters=CR_Memory
Memory allocation is tracked. Nodes that do not have enough available memory to meet the jobs memory requirement will not be allocated to the job.
メモリ割り当てが追跡されます。ジョブのメモリ要件を満たすのに十分な使用可能なメモリがないノードは、ジョブに割り当てられません。
SelectType=select/cons_res
Plus one of the following:
SelectTypeParameters=CR_Core
SelectTypeParameters=CR_CPU
SelectTypeParameters=CR_Socket
Memory allocation is not tracked. Jobs are allocated to consumable resources without considering if there is enough free memory. Swapping could occur!
メモリ割り当ては追跡されません。ジョブは、十分な空きメモリがあるかどうかを考慮せずに、消費可能なリソースに割り当てられます。スワッピングが発生する可能性があります!
SelectType=select/cons_res
Plus one of the following:
SelectTypeParameters=CR_Memory
SelectTypeParameters=CR_Core_Memory
SelectTypeParameters=CR_CPU_Memory
SelectTypeParameters=CR_Socket_Memory
Memory allocation for all jobs are tracked. Nodes that do not have enough available memory to meet the jobs memory requirement will not be allocated to the job.
すべてのジョブのメモリ割り当てが追跡されます。ジョブのメモリ要件を満たすのに十分な使用可能なメモリがないノードは、ジョブに割り当てられません。

Users can specify their job's memory requirements one of two ways. The srun --mem=<num> option can be used to specify the jobs memory requirement on a per allocated node basis. This option is recommended for use with the select/linear plugin, which allocates whole nodes to jobs. The srun --mem-per-cpu=<num> option can be used to specify the jobs memory requirement on a per allocated CPU basis. This is recommended for use with the select/cons_res plugin which can allocate individual CPUs to jobs.
ユーザーは、ジョブのメモリ要件を2つの方法のいずれかで指定できます。srun --mem =オプションを使用すると、割り当てられたノードごとにジョブのメモリ要件を指定できます。このオプションは、ノード全体をジョブに割り当てるselect / linearプラグインで使用することをお勧めします。srun --mem-per-cpu =オプションを使用して、割り当てられたCPUごとにジョブのメモリ要件を指定できます。これは、個々のCPUをジョブに割り当てることができるselect / cons_resプラグインで使用することをお勧めします。

Default and maximum values for memory on a per node or per CPU basis can be configured by the system administrator using the following slurm.conf options: DefMemPerCPU, DefMemPerNode, MaxMemPerCPU and MaxMemPerNode. Users can use the --mem or --mem-per-cpu option at job submission time to override the default value, but they cannot exceed the maximum value.
ノードごとまたはCPUごとのメモリのデフォルト値と最大値は、システム管理者がslurm.confオプションのDefMemPerCPU、DefMemPerNode、MaxMemPerCPU、MaxMemPerNodeを使用して構成できます。ユーザーは、ジョブの送信時に--memまたは--mem-per-cpuオプションを使用してデフォルト値を上書きできますが、最大値を超えることはできません。

Enforcement of a jobs memory allocation is performed by setting the "maximum data segment size" and the "maximum virtual memory size" system limits to the appropriate values before launching the tasks. Enforcement is also managed by the accounting plugin, which periodically gathers data about running jobs. Set JobAcctGather and JobAcctFrequency to values suitable for your system.
ジョブのメモリ割り当ての実施は、タスクを起動する前に、「最大データセグメントサイズ」および「最大仮想メモリサイズ」のシステム制限を適切な値に設定することによって実行されます。実施は、実行中のジョブに関するデータを定期的に収集するアカウンティングプラグインによっても管理されます。JobAcctGatherおよびJobAcctFrequencyをシステムに適した値に設定します。

Last modified 31 March 2016