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