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