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