Select Plugin Design Guide
Overview
The select plugin is responsible for selecting compute resources to be
allocated to a job, plus allocating and deallocating those resources.
selectプラグインは、ジョブに割り当てられるコンピューティングリソースの選択、およびそれらのリソースの割り当てと割り当て解除を行います。
The select plugin is aware of the systems topology, based upon data structures
established by the topology plugn.
選択プラグインは、トポロジプラグインによって確立されたデータ構造に基づいて、システムトポロジを認識します。
It can also over-subscribe resources to
support gang scheduling (time slicing of parallel jobs), if so configured.
構成されている場合は、ギャングスケジューリング(並列ジョブのタイムスライス)をサポートするためにリソースをオーバーサブスクライブすることもできます。
The select plugin is also capable of communicating with an external entity
to perform these actions (the select/cray_aries plugin used with Cray ALPS/BASIL
software is one example).
selectプラグインは、外部エンティティと通信してこれらのアクションを実行することもできます(Cray ALPS / BASILソフトウェアで使用されるselect / cray_ariesプラグインはその一例です)。
Other architectures would rely upon either the
select/linear or select/cons_res plugin.
他のアーキテクチャは、select / linearまたはselect / cons_resプラグインに依存します。
The select/linear plugin allocates
whole nodes to jobs and is the simplest implementation.
select / linearプラグインは、ノード全体をジョブに割り当て、最も簡単な実装です。
The select/cons_res
plugin (cons_res is an abbreviation for consumable resources)
can allocate individual sockets, cores, threads, or CPUs within a node.
select / cons_resプラグイン(cons_resは消費可能なリソースの省略形)は、ノード内の個々のソケット、コア、スレッド、またはCPUを割り当てることができます。
The select/cons_res plugin is slightly slower than select/linear, but
contains far more complex logic.
select / cons_resプラグインはselect / linearより少し遅いですが、はるかに複雑なロジックが含まれています。
Mode of Operation
The select/linear and select/cons_res plugins have similar modes of
operation.
select / linearプラグインとselect / cons_resプラグインには、同様の操作モードがあります。
The obvious difference is that data structures in select/linear
are node-centric, while those in select/cons_res contain information at a
finer resolution (sockets, cores, threads, or CPUs depending upon the
SelectTypeParameters configuration parameter).
明らかな違いは、select / linearのデータ構造はノード中心であり、select / cons_resのデータ構造はより細かい解像度での情報(SelectTypeParameters構成パラメーターに応じてソケット、コア、スレッド、またはCPU)を含むことです。
The description below is
generic and applies to both plugin implementations.
以下の説明は一般的なものであり、両方のプラグイン実装に適用されます。
Note that both plugins
are able to manage memory allocations.
両方のプラグインがメモリ割り当てを管理できることに注意してください。
Both plugins are also able to manage
generic resource (GRES) allocations, making use of the GRES plugins.
両方のプラグインは、GRESプラグインを利用して、総称リソース(GRES)割り当てを管理することもできます。
Per node data structures include memory (configured and allocated),
GRES (configured and allocated, in a List data structure), plus a flag
indicating if the node has been allocated using an exclusive option (preventing
other jobs from being allocated resources on that same node).
ノードごとのデータ構造には、メモリ(構成および割り当て)、GRES(構成および割り当て、リストデータ構造で)、およびノードが排他オプションを使用して割り当てられているかどうかを示すフラグ(他のジョブが同じリソースに割り当てられないようにする)が含まれますノード)。
The other key
data structure is used to enforce the per-partition OverSubscribe
configuration parameter and tracks how many jobs have been allocated each
compute resource (e.g. CPU) in each
partition.
もう1つの主要なデータ構造は、パーティションごとのOverSubscribe構成パラメーターを適用し、各パーティションの各コンピューティングリソース(CPUなど)に割り当てられたジョブの数を追跡するために使用されます。
This data structure is different between the plugins based upon
the resolution of the resource allocation (e.g. nodes or CPUs).
このデータ構造は、リソース割り当て(ノードやCPUなど)の解決に基づいて、プラグイン間で異なります。
Most of the logic in the select plugin is dedicated to identifying resources
to be allocated to a new job.
selectプラグインのロジックのほとんどは、新しいジョブに割り当てられるリソースを特定するためのものです。
Input to that function includes: a pointer to the
new job, a bitmap identifying nodes which could be used, node counts (minimum,
maximum, and desired), a count of how many jobs of that partition the job can
share resources with, and a list of jobs which can be preempted to initiate the
new job.
その関数への入力には、新しいジョブへのポインター、使用できるノードを識別するビットマップ、ノード数(最小、最大、および希望)、ジョブがリソースを共有できるそのパーティションのジョブの数、および新しいジョブを開始するためにプリエンプトできるジョブのリスト。
The first phase is to determine of all usable nodes, which nodes
would best satisfy the resource requirement.
最初のフェーズは、すべての使用可能なノードを決定することです。これらのノードは、リソース要件を最もよく満たします。
This consists of a best-fit
algorithm that groups nodes based upon network topology (if the topology/tree
plugin is configured) or based upon consecutive nodes (by default).
これは、ネットワークトポロジー(トポロジー/ツリープラグインが構成されている場合)または連続ノード(デフォルト)に基づいてノードをグループ化する最適なアルゴリズムで構成されます。
Once the
best nodes are identified, resources are accumulated for the new job until its
resource requirements are satisfied.
最適なノードが特定されると、リソース要件が満たされるまで、新しいジョブのリソースが蓄積されます。
If the job can not be started with currently available resources, the plugin
will attempt to identify jobs which can be preempted in order to initiate the
new job.
現在使用可能なリソースでジョブを開始できない場合、プラグインは、新しいジョブを開始するためにプリエンプトできるジョブを識別しようとします。
A copy of the current system state will be created including details
about all resources and active jobs.
すべてのリソースとアクティブなジョブに関する詳細を含む、現在のシステム状態のコピーが作成されます。
Preemptable jobs will then be removed
from this simulated system state until the new job can be initiated.
プリエンプティブルジョブは、新しいジョブを開始できるまで、このシミュレートされたシステム状態から削除されます。
When
sufficient resources are available for the new job, the jobs actually needing
to be preempted for its initiation will be preempted (this may be a subset of
the jobs whose preemption is simulated).
新しいジョブに十分なリソースが利用可能になると、その開始のために実際にプリエンプトされる必要があるジョブがプリエンプトされます(これはプリエンプションがシミュレートされるジョブのサブセットである場合があります)。
Other functions exist to support suspending jobs, resuming jobs, terminating
jobs, expanding/shrinking job allocations, un/packing job state information,
un/packing node state information, etc.
ジョブの一時停止、ジョブの再開、ジョブの終了、ジョブ割り当ての拡張/縮小、ジョブ状態情報のアンパック/パック、ノード状態情報のアンパック/パックなどをサポートする他の機能があります。
The operation of those functions is
relatively straightforward and not detailed here.
これらの機能の操作は比較的簡単で、ここでは詳しく説明しません。
Operation on Cray Systems
The operation of the select/cray_aries plugin is unique in that it does not
directly select resources for a job, but uses the select/linear plugin for
that purpose.
select / cray_ariesプラグインの操作は、ジョブのリソースを直接選択しないという点で独特ですが、その目的のためにselect / linearプラグインを使用します。
It also interfaces with Cray's ALPS software using the BASIL
interface or directly using the database. On Cray systems, Slurm's slurmd
daemon executes on the front-end nodes rather than the compute nodes and
ALPS is the mechanism available for Slurm to manage compute nodes and their
jobs.
また、BASILインターフェースを使用して、またはデータベースを直接使用して、CrayのALPSソフトウェアとインターフェースします。Crayシステムでは、Slurmのslurmdデーモンは計算ノードではなくフロントエンドノードで実行され、ALPSはSlurmが計算ノードとそのジョブを管理するために使用できるメカニズムです。
------------------------- | select/cray_aries | ------------------------- | | ----------------- -------------- | select/linear | | BASIL/ALPS | ----------------- --------------
Last modified 14 June 2018