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.
selectプラグインは、トポロジプラグインによって確立されたデータ構造に基づいて、システムトポロジを認識します。
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.
また、BASILインターフェイスを使用して、またはデータベースを直接使用して、CrayのALPSソフトウェアとインターフェイスします。
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.
Crayシステムでは、Slurmのslurmdデーモンは計算ノードではなくフロントエンドノードで実行されます。ALPSは、Slurmが計算ノードとそのジョブを管理するために使用できるメカニズムです。
------------------------- | select/cray_aries | ------------------------- | | ----------------- -------------- | select/linear | | BASIL/ALPS | ----------------- --------------
Last modified 14 June 2018