Overview
Slurm is an open source,
fault-tolerant, and highly scalable cluster management and job scheduling system
for large and small Linux clusters.
Slurmは、大小のLinuxクラスター向けのオープンソースでフォールトトレラントで拡張性の高いクラスター管理およびジョブスケジューリングシステムです。
Slurm requires no kernel modifications for
its operation and is relatively self-contained.
Slurmは、その操作にカーネルの変更を必要とせず、比較的自己完結型です。
As a cluster workload manager,
Slurm has three key functions.
クラスターワークロードマネージャーとして、Slurmには3つの主要な機能があります。
First, it allocates exclusive and/or non-exclusive
access to resources (compute nodes) to users for some duration of time so they
can perform work.
まず、リソース(計算ノード)への排他的および/または非排他的アクセスを一定期間ユーザーに割り当てて、ユーザーが作業を実行できるようにします。
Second, it provides a framework for starting, executing, and
monitoring work (normally a parallel job) on the set of allocated nodes.
次に、割り当てられたノードのセットで作業(通常は並列ジョブ)を開始、実行、および監視するためのフレームワークを提供します。
Finally, it arbitrates contention for resources by managing a queue of
pending work.
最後に、保留中の作業のキューを管理することにより、リソースの競合を調停します。
Optional plugins can be used for
accounting,
advanced reservation,
gang scheduling (time sharing for
parallel jobs), backfill scheduling,
topology optimized resource selection,
resource limits by user or bank account,
and sophisticated multifactor job
prioritization algorithms.
オプションのプラグインは、アカウンティング、高度な予約、ギャングスケジューリング(並列ジョブのタイムシェアリング)、バックフィルスケジューリング、トポロジ最適化リソース選択、ユーザーまたは銀行口座によるリソース制限、および高度な多要素ジョブ優先順位付けアルゴリズムに使用できます。
Architecture
Slurm has a centralized manager, slurmctld, to monitor resources and
work.
Slurmには、リソースと作業を監視するための集中マネージャーslurmctldがあります。
There may also be a backup manager to assume those responsibilities in the
event of failure.
障害が発生した場合にそれらの責任を引き受けるバックアップマネージャーがいる場合もあります。
Each compute server (node) has a slurmd daemon, which
can be compared to a remote shell: it waits for work, executes that work, returns
status, and waits for more work.
各計算サーバー(ノード)にはslurmdデーモンがあり、リモートシェルと比較できます。このデーモンは、作業を待機し、その作業を実行し、ステータスを返し、さらに作業を待機します。
The slurmd daemons provide fault-tolerant hierarchical communications.
slurmdデーモンは、フォールトトレラントな階層通信を提供します。
There is an optional slurmdbd (Slurm DataBase Daemon) which can be used
to record accounting information for multiple Slurm-managed clusters in a
single database.
オプションのslurmdbd(Slurm DataBase Daemon)があり、これを使用して、単一のデータベースに複数のSlurm管理クラスターのアカウンティング情報を記録できます。
There is an optional
slurmrestd (Slurm REST API Daemon)
which can be used to interact with Slurm through its
REST API.
オプションのslurmrestd(Slurm REST APIデーモン)があり、RESTAPIを介してSlurmと対話するために使用できます。
User tools include srun to initiate jobs,
scancel to terminate queued or running jobs,
sinfo to report system status,
squeue to report the status of jobs, and
sacct to get information about jobs and job steps that are running or have completed.
ユーザーツールには、ジョブを開始するためのsrun、キューに入れられたジョブまたは実行中のジョブを終了するためのscancel、システムステータスを報告するためのsinfo、ジョブのステータスを報告するためのsqueue、および実行中または完了したジョブとジョブステップに関する情報を取得するためのsacctが含まれます。
The sview commands graphically reports system and
job status including network topology.
sviewコマンドは、ネットワークトポロジを含むシステムとジョブのステータスをグラフィカルに報告します。
There is an administrative tool scontrol available to monitor
and/or modify configuration and state information on the cluster.
クラスターの構成および状態情報を監視および/または変更するために使用できる管理ツール制御があります。
The administrative tool used to manage the database is sacctmgr.
データベースの管理に使用される管理ツールはsacctmgrです。
It can be used to identify the clusters, valid users, valid bank accounts, etc.
クラスター、有効なユーザー、有効な銀行口座などを識別するために使用できます。
APIs are available for all functions.
APIはすべての機能で利用できます。
Figure 1. Slurm components
Slurm has a general-purpose plugin mechanism available to easily support various
infrastructures.
Slurmには、さまざまなインフラストラクチャを簡単にサポートするために使用できる汎用プラグインメカニズムがあります。
This permits a wide variety of Slurm configurations using a
building block approach.
これにより、ビルディングブロックアプローチを使用したさまざまなSlurm構成が可能になります。
These plugins presently include:
これらのプラグインには現在、次のものが含まれています。
- Accounting Storage:
Primarily Used to store historical data about jobs.
アカウンティングストレージ:主にジョブに関する履歴データを保存するために使用されます。
When used with SlurmDBD (Slurm Database Daemon), it can also supply a limits based system along with historical system status.
SlurmDBD(Slurm Database Daemon)と一緒に使用すると、システムの履歴ステータスとともに制限ベースのシステムを提供することもできます。
- Account Gather Energy:
Gather energy consumption data per job or nodes in the system.
アカウント収集エネルギー:システム内のジョブまたはノードごとのエネルギー消費データを収集します。
This plugin is integrated with the Accounting Storage and Job Account Gather plugins.
このプラグインは、AccountingStorageおよびJobAccountGatherプラグインと統合されています。
- Authentication of communications:
Provides authentication mechanism between various components of Slurm.
通信の認証:Slurmのさまざまなコンポーネント間の認証メカニズムを提供します。
- Containers:
HPC workload container support and implementations.
コンテナー:HPCワークロードコンテナーのサポートと実装。
- Credential (Digital Signature
Generation):
Mechanism used to generate a digital signature, which is used to validate
that job step is authorized to execute on specific nodes.
資格情報(デジタル署名の生成):デジタル署名を生成するために使用されるメカニズム。これは、ジョブステップが特定のノードでの実行を許可されていることを検証するために使用されます。
This is distinct from the plugin used for Authentication since the job step request is sent from the user's srun command rather than directly from the slurmctld daemon, which generates the job step credential and its digital signature.
これは、ジョブステップ要求がジョブステップ資格情報とそのデジタル署名を生成するslurmctldデーモンから直接送信されるのではなく、ユーザーのsrunコマンドから送信されるため、認証に使用されるプラグインとは異なります。
- Generic Resources: Provide interface to
control generic resources like Processing Units (GPUs) and Intel®
Many Integrated Core (MIC) processors.
汎用リソース:プロセッシングユニット(GPU)やインテル®メニーインテグレーテッドコア(MIC)プロセッサーなどの汎用リソースを制御するためのインターフェイスを提供します。
- Job Submit:
Custom plugin to allow site specific control over job requirements at
submission and update.
ジョブ送信:送信および更新時にジョブ要件をサイト固有で制御できるようにするカスタムプラグイン。
- Job Accounting Gather:
Gather job step resource utilization data.
ジョブアカウンティング収集:ジョブステップのリソース使用率データを収集します。
- Job Completion Logging:
Log a job's termination data.
ジョブ完了ログ:ジョブの終了データをログに記録します。
This is typically a subset of data stored by an Accounting Storage Plugin.
これは通常、アカウンティングストレージプラグインによって保存されたデータのサブセットです。
- Launchers:
Controls the mechanism used by the 'srun' command
to launch the tasks.
ランチャー:「srun」コマンドがタスクを起動するために使用するメカニズムを制御します。
- MPI:
Provides different hooks for the various MPI implementations.
MPI:さまざまなMPI実装にさまざまなフックを提供します。
For example, this can set MPI specific environment variables.
たとえば、これによりMPI固有の環境変数を設定できます。
- Preempt:
Determines which jobs can preempt other jobs and the preemption mechanism
to be used.
プリエンプト:他のジョブをプリエンプトできるジョブと、使用するプリエンプションメカニズムを決定します。
- Priority:
Assigns priorities to jobs upon submission and on an ongoing basis
(e.g. as they age).
優先度:送信時および継続的に(たとえば、年齢に応じて)ジョブに優先度を割り当てます。
- Process tracking (for signaling):
Provides a mechanism for identifying the processes associated with each job.
プロセス追跡(シグナリング用):各ジョブに関連付けられたプロセスを識別するためのメカニズムを提供します。
Used for job accounting and signaling.
ジョブアカウンティングとシグナリングに使用されます。
- Scheduler:
Plugin determines how and when Slurm schedules jobs.
スケジューラー:プラグインは、Slurmがジョブをスケジュールする方法とタイミングを決定します。
- Node selection:
Plugin used to determine the resources used for a job allocation.
ノードの選択:ジョブの割り当てに使用されるリソースを決定するために使用されるプラグイン。
- Site Factor (Priority):
Assigns a specific site_factor component of a job's multifactor priority to
jobs upon submission and on an ongoing basis (e.g. as they age).
サイトファクター(優先度):ジョブのマルチファクター優先度の特定のsite_factorコンポーネントを、送信時および継続的に(たとえば、経年変化に応じて)ジョブに割り当てます。
- Switch or interconnect:
Plugin to interface with a switch or interconnect.
スイッチまたは相互接続:スイッチまたは相互接続とインターフェースするプラグイン。
For most systems (ethernet or infiniband) this is not needed.
ほとんどのシステム(イーサネットまたはインフィニバンド)では、これは必要ありません。
- Task Affinity:
Provides mechanism to bind a job and its individual tasks to specific
processors.
タスクアフィニティ:ジョブとその個々のタスクを特定のプロセッサにバインドするメカニズムを提供します。
- Network Topology:
Optimizes resource selection based upon the network topology.
ネットワークトポロジ:ネットワークトポロジに基づいてリソースの選択を最適化します。
Used for both job allocations and advanced reservation.
ジョブの割り当てと事前予約の両方に使用されます。
The entities managed by these Slurm daemons, shown in Figure 2, include nodes,
the compute resource in Slurm, partitions, which group nodes into logical
sets, jobs, or allocations of resources assigned to a user for
a specified amount of time, and job steps, which are sets of (possibly
parallel) tasks within a job.
図2に示すように、これらのSlurmデーモンによって管理されるエンティティには、ノード、Slurmの計算リソース、ノードを論理セットにグループ化するパーティション、ジョブ、または指定された期間ユーザーに割り当てられたリソースの割り当て、およびジョブが含まれます。ステップ。ジョブ内の(場合によっては並列の)タスクのセットです。
The partitions can be considered job queues, each of which has an assortment of
constraints such as job size limit, job time limit, users permitted to use it, etc.
パーティションはジョブキューと見なすことができ、各パーティションには、ジョブサイズの制限、ジョブの時間制限、使用を許可されているユーザーなど、さまざまな制約があります。
Priority-ordered jobs are allocated nodes within a partition until the resources
(nodes, processors, memory, etc.) within that partition are exhausted.
優先順位の高いジョブには、パーティション内のリソース(ノード、プロセッサ、メモリなど)が使い果たされるまで、パーティション内のノードが割り当てられます。
Once
a job is assigned a set of nodes, the user is able to initiate parallel work in
the form of job steps in any configuration within the allocation.
ジョブにノードのセットが割り当てられると、ユーザーは、割り当て内の任意の構成でジョブステップの形式で並列作業を開始できます。
For instance,
a single job step may be started that utilizes all nodes allocated to the job,
or several job steps may independently use a portion of the allocation.
たとえば、ジョブに割り当てられたすべてのノードを利用する単一のジョブステップを開始したり、複数のジョブステップが割り当ての一部を個別に使用したりできます。
Slurm provides resource management for the processors allocated to a job,
so that multiple job steps can be simultaneously submitted and queued until
there are available resources within the job's allocation.
Slurmは、ジョブに割り当てられたプロセッサーのリソース管理を提供します。これにより、ジョブの割り当て内に使用可能なリソースができるまで、複数のジョブステップを同時に送信してキューに入れることができます。
Figure 2. Slurm entities
Configurability
Node state monitored include: count of processors, size of real memory, size
of temporary disk space, and state (UP, DOWN, etc.).
監視されるノードの状態には、プロセッサの数、実メモリのサイズ、一時ディスクスペースのサイズ、および状態(UP、DOWNなど)が含まれます。
Additional node information
includes weight (preference in being allocated work) and features (arbitrary information
such as processor speed or type).
追加のノード情報には、重み(作業の割り当ての優先度)と機能(プロセッサの速度やタイプなどの任意の情報)が含まれます。
Nodes are grouped into partitions, which may contain overlapping nodes so they are
best thought of as job queues.
ノードはパーティションにグループ化されます。パーティションには重複するノードが含まれる場合があるため、ジョブキューと見なすのが最適です。
Partition information includes: name, list of associated nodes, state (UP or DOWN),
maximum job time limit, maximum node count per job, group access list,
priority (important if nodes are in multiple partitions) and shared node access policy
with optional over-subscription level for gang scheduling (e.g. YES, NO or FORCE:2).
パーティション情報には、名前、関連付けられたノードのリスト、状態(UPまたはDOWN)、最大ジョブ時間制限、ジョブごとの最大ノード数、グループアクセスリスト、優先度(ノードが複数のパーティションにある場合に重要)、およびオプションの共有ノードアクセスポリシーが含まれます。ギャングスケジューリングのオーバーサブスクリプションレベル(例:YES、NO、またはFORCE:2)。
Bit maps are used to represent nodes and scheduling
decisions can be made by performing a small number of comparisons and a series
of fast bit map manipulations.
ビットマップはノードを表すために使用され、スケジュールの決定は、少数の比較と一連の高速ビットマップ操作を実行することによって行うことができます。
A sample (partial. Slurm configuration file follows.
サンプル(部分的。Slurm構成ファイルは次のとおりです。
# # Sample /etc/slurm.conf # SlurmctldHost=linux0001 # Primary server SlurmctldHost=linux0002 # Backup server # AuthType=auth/munge Epilog=/usr/local/slurm/sbin/epilog PluginDir=/usr/local/slurm/lib Prolog=/usr/local/slurm/sbin/prolog SlurmctldPort=7002 SlurmctldTimeout=120 SlurmdPort=7003 SlurmdSpoolDir=/var/tmp/slurmd.spool SlurmdTimeout=120 StateSaveLocation=/usr/local/slurm/slurm.state TmpFS=/tmp # # Node Configurations # NodeName=DEFAULT CPUs=4 TmpDisk=16384 State=IDLE NodeName=lx[0001-0002] State=DRAINED NodeName=lx[0003-8000] RealMemory=2048 Weight=2 NodeName=lx[8001-9999] RealMemory=4096 Weight=6 Feature=video # # Partition Configurations # PartitionName=DEFAULT MaxTime=30 MaxNodes=2 PartitionName=login Nodes=lx[0001-0002] State=DOWN PartitionName=debug Nodes=lx[0003-0030] State=UP Default=YES PartitionName=class Nodes=lx[0031-0040] AllowGroups=students PartitionName=DEFAULT MaxTime=UNLIMITED MaxNodes=4096 PartitionName=batch Nodes=lx[0041-9999]
Last modified 7 Februrary 2020