Slurm Programmer's Guide

Contents

Overview
Plugins
Directory Structure
Documentation
Source Code
Source Code Management
Adding New Modules
Compiling
Configuration
Test Suite
Adding Files and Directories
Tricks of the Trade

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クラスター向けのオープンソースでフォールトトレラントで拡張性の高いクラスター管理およびジョブスケジューリングシステムです。
Components include machine status, partition management, job management, scheduling, and stream copy modules.
コンポーネントには、マシンステータス、パーティション管理、ジョブ管理、スケジューリング、およびストリームコピーモジュールが含まれます。
Slurm requires no kernel modifications for it operation and is relatively self-contained.
Slurmは、その操作にカーネルの変更を必要とせず、比較的自己完結型です。

Slurm is written in the C language and uses a GNU autoconf configuration engine.
SlurmはC言語で記述されており、GNUautoconf構成エンジンを使用しています。
While initially written for Linux, other UNIX-like operating systems should be easy porting targets.
最初はLinux用に書かれていましたが、他のUNIXライクなオペレーティングシステムは簡単に移植できるはずです。
Code should adhere to the Linux kernel coding style.
コードは、Linuxカーネルのコーディングスタイルに準拠している必要があります。
(Some components of Slurm have been taken from various sources.
(Slurmの一部のコンポーネントは、さまざまなソースから取得されています。
Some of these components do not conform to the Linux kernel coding style.
これらのコンポーネントの一部は、Linuxカーネルのコーディングスタイルに準拠していません。
However, new code written for Slurm should follow these standards.)

ただし、Slurm用に記述された新しいコードはこれらの標準に従う必要があります。)

Plugins

To make the use of different infrastructures possible, Slurm uses a general purpose plugin mechanism.
さまざまなインフラストラクチャの使用を可能にするために、Slurmは汎用プラグインメカニズムを使用します。
A Slurm plugin is a dynamically linked code object that is loaded explicitly at run time by the Slurm libraries.
Slurmプラグインは、動的にリンクされたコードオブジェクトであり、実行時にSlurmライブラリによって明示的にロードされます。
It provides a customized implementation of a well-defined API connected to tasks such as authentication, interconnect fabric, task scheduling, etc.
認証、インターコネクトファブリック、タスクスケジューリングなどのタスクに接続された、明確に定義されたAPIのカスタマイズされた実装を提供します。
A set of functions is defined for use by all of the different infrastructures of a particular variety.
機能のセットは、特定の種類のさまざまなインフラストラクチャのすべてで使用するために定義されています。
When a Slurm daemon is initiated, it reads the configuration file to determine which of the available plugins should be used.
Slurmデーモンが開始されると、構成ファイルを読み取って、使用可能なプラグインのどれを使用するかを決定します。
A plugin developer's guide is available with general information about plugins.
プラグイン開発者ガイドは、プラグインに関する一般的な情報とともに利用できます。
Most plugin types also have their own documentation available, such as Slurm Authentication Plugin API and Slurm Job Completion Logging API.
ほとんどのプラグインタイプには、Slurm Authentication PluginAPIやSlurmJob Completion LoggingAPIなどの独自のドキュメントもあります。

Directory Structure

The contents of the Slurm directory structure will be described below in increasing detail as the structure is descended.
Slurmディレクトリ構造の内容については、構造が降順であるため、以下で詳しく説明します。
The top level directory contains the scripts and tools required to build the entire Slurm system.
トップレベルのディレクトリには、Slurmシステム全体を構築するために必要なスクリプトとツールが含まれています。
It also contains a variety of subdirectories for each type of file.
また、ファイルの種類ごとにさまざまなサブディレクトリが含まれています。

General build tools/files include: acinclude.m4, configure.ac, Makefile.am, Make-rpm.mk, META, README, slurm.spec.in, and the contents of the auxdir directory.
一般的なビルドツール/ファイルには、acinclude.m4、configure.ac、Makefile.am、Make-rpm.mk、META、README、slurm.spec.in、およびauxdirディレクトリの内容が含まれます。
autoconf and make commands are used to build and install Slurm in an automated fashion.
autoconfおよびmakeコマンドは、自動化された方法でSlurmをビルドおよびインストールするために使用されます。
NOTE: autoconf version 2.52 or higher is required to build Slurm.
注:Slurmをビルドするには、autoconfバージョン2.52以降が必要です。
Execute autoconf -V to check your version number.
autoconf -Vを実行して、バージョン番号を確認します。
The build process is described in the README file.
ビルドプロセスはREADMEファイルに記載されています。

Copyright and disclaimer information are in the files COPYING and DISCLAIMER.
著作権および免責事項の情報は、ファイルCOPYINGおよびDISCLAIMERにあります。
All of the top-level subdirectories are described below.
すべてのトップレベルのサブディレクトリについて、以下で説明します。

auxdir — Used for building Slurm.
auxdir —Slurmの構築に使用されます。

contribs — Various contributed tools.
contribs —さまざまな貢献ツール。

doc — Documentation including man pages.
doc —マニュアルページを含むドキュメント。

etc — Sample configuration files.
etc —サンプル構成ファイル。

slurm — Header files for API use.
slurm —APIで使用するためのヘッダーファイル。
These files must be installed.
これらのファイルをインストールする必要があります。
Placing these header files in this location makes for better code portability.
これらのヘッダーファイルをこの場所に配置すると、コードの移植性が向上します。

src — Contains all source code and header files not in the "slurm" subdirectory described above.
src —上記の「slurm」サブディレクトリにないすべてのソースコードとヘッダーファイルが含まれます。

testsuite — DejaGnu and Expect are used for testing all of its files are here.
testsuite — DejaGnuとExpectは、すべてのファイルをテストするために使用されます。

Documentation

All of the documentation is in the subdirectory doc.
すべてのドキュメントはサブディレクトリdocにあります。
Two directories are of particular interest:
2つのディレクトリが特に重要です。

doc/man — contains the man pages for the APIs, configuration file, commands, and daemons.
doc / man — API、構成ファイル、コマンド、およびデーモンのマニュアルページが含まれています。

doc/html — contains the web pages.
doc / html —Webページが含まれています。

Source Code

Functions are divided into several categories, each in its own subdirectory.
関数はいくつかのカテゴリに分けられ、それぞれが独自のサブディレクトリにあります。
The details of each directory's contents are provided below.
各ディレクトリの内容の詳細を以下に示します。
The directories are as follows:
ディレクトリは次のとおりです。

api — Application Program Interfaces into the Slurm code.
api —Slurmコードへのアプリケーションプログラムインターフェイス。
Used to send and get Slurm information from the central manager.
中央マネージャーからSlurm情報を送受信するために使用されます。
These are the functions user applications might utilize.
これらは、ユーザーアプリケーションが利用する可能性のある機能です。

common — General purpose functions for widespread use throughout Slurm.
common —Slurm全体で広く使用される汎用関数。

database — Various database files that support the accounting storage plugin.
database —アカウンティングストレージプラグインをサポートするさまざまなデータベースファイル。

plugins — Plugin functions for various infrastructures or optional behavior.
プラグイン—さまざまなインフラストラクチャまたはオプションの動作のためのプラグイン関数。
A separate subdirectory is used for each plugin class:
プラグインクラスごとに個別のサブディレクトリが使用されます。

  • accounting_storage for specifying the type of storage for accounting,
    アカウンティング用のストレージのタイプを指定するためのaccounting_storage、

  • auth for user authentication,
    ユーザー認証の認証、

  • cred for job credential functions,
    仕事の資格情報機能のための信用、

  • jobacct_gather for job accounting,
    ジョブアカウンティング用のjobacct_gather、

  • jobcomp for job completion logging,
    ジョブ完了ログ用のjobcomp、

  • mpi for MPI support,
    MPIサポート用のmpi、

  • priority calculates job priority based on a number of factors including fair-share,
    優先度は、フェアシェアを含むいくつかの要因に基づいて仕事の優先度を計算します。

  • proctrack for process tracking,
    プロセス追跡用のproctrack、

  • sched for job scheduler,
    ジョブスケジューラのスケジュール、

  • select for a job's node selection,
    ジョブのノード選択を選択し、

  • switch for switch (interconnect) specific functions,
    スイッチ(相互接続)固有の機能のためのスイッチ、

  • task for task affinity to processors,
    プロセッサへのタスクアフィニティのタスク、

  • topology methods for assigning nodes to jobs based on node topology.
    ノードトポロジに基づいてノードをジョブに割り当てるためのトポロジメソッド。

sacct — User command to view accounting information about jobs.
sacct —ジョブに関するアカウンティング情報を表示するためのユーザーコマンド。

sacctmgr — User and administrator tool to manage accounting.
sacctmgr —アカウンティングを管理するためのユーザーおよび管理者ツール。

salloc — User command to allocate resources for a job.
salloc —ジョブにリソースを割り当てるためのユーザーコマンド。

sattach — User command to attach standard input, output and error files to a running job or job step.
sattach —実行中のジョブまたはジョブステップに標準入力、出力、およびエラーファイルを添付するためのユーザーコマンド。

sbatch — User command to submit a batch job (script for later execution).
sbatch —バッチジョブを送信するためのユーザーコマンド(後で実行するためのスクリプト)。

sbcast — User command to broadcast a file to all nodes associated with an existing Slurm job.
sbcast —既存のSlurmジョブに関連付けられているすべてのノードにファイルをブロードキャストするためのユーザーコマンド。

scancel — User command to cancel (or signal) a job or job step.
scancel —ジョブまたはジョブステップをキャンセル(または通知)するためのユーザーコマンド。

scontrol — Administrator tool to manage Slurm.
scontrol —Slurmを管理するための管理者ツール。

sinfo — User command to get information on Slurm nodes and partitions.
sinfo —Slurmノードおよびパーティションに関する情報を取得するためのユーザーコマンド。

slurmctld — Slurm central manager daemon code.
slurmctld —Slurmセントラルマネージャーデーモンコード。

slurmd — Slurm daemon code to manage the compute server nodes including the execution of user applications.
slurmd —ユーザーアプリケーションの実行を含む計算サーバーノードを管理するためのSlurmデーモンコード。

slurmdbd — Slurm database daemon managing access to the accounting storage database.
slurmdbd —アカウンティングストレージデータベースへのアクセスを管理するSlurmデータベースデーモン。

sprio — User command to see the breakdown of a job's priority calculation when the Multifactor Job Priority plugin is installed.
sprio — Multifactor Job Priorityプラグインがインストールされている場合に、ジョブの優先度計算の内訳を確認するためのユーザーコマンド。

squeue — User command to get information on Slurm jobs and job steps.
squeue —Slurmジョブとジョブステップに関する情報を取得するためのユーザーコマンド。

sreport — User command to view various reports about past usage across the enterprise.
sreport —企業全体の過去の使用状況に関するさまざまなレポートを表示するためのユーザーコマンド。

srun — User command to submit a job, get an allocation, and/or initiation a parallel job step.
srun —ジョブを送信したり、割り当てを取得したり、並列ジョブステップを開始したりするためのユーザーコマンド。

sshare — User command to view shares and usage when the Multifactor Job Priority plugin is installed.
sshare — Multifactor JobPriorityプラグインがインストールされているときに共有と使用状況を表示するユーザーコマンド。

sstat — User command to view detailed statistics about running jobs when a Job Accounting Gather plugin is installed.
sstat — Job AccountingGatherプラグインがインストールされているときに実行中のジョブに関する詳細な統計を表示するユーザーコマンド。

strigger — User and administrator tool to manage event triggers.
strigger —イベントトリガーを管理するためのユーザーおよび管理者ツール。

sview — User command to view and update node, partition, and job state information.
sview —ノード、パーティション、およびジョブの状態情報を表示および更新するためのユーザーコマンド。

Source Code Management

The latest code is in github: https://github.com/SchedMD/slurm.
最新のコードはgithubにあります:https://github.com/SchedMD/slurm。
Creating your own branch will make it easier to keep it synchronized with our work.
独自のブランチを作成すると、作業との同期を維持しやすくなります。

Adding New Modules

Add the new file name to the Makefile.am file in the appropriate directory.
新しいファイル名を適切なディレクトリのMakefile.amファイルに追加します。
Then execute autoreconf (at the top level of the Slurm source directory).
次に、autoreconfを実行します(Slurmソースディレクトリのトップレベルで)。
Note that a relatively current version of auotmake is required.
auotmakeの比較的最新のバージョンが必要であることに注意してください。
The autoreconf program will build Makefile.in files from the Makefile.am files.
autoreconfプログラムは、Makefile.amファイルからMakefile.inファイルを作成します。
If any new files need to be installed, update the slurm.spec file to identify the RPM in which the new files should be placed
新しいファイルをインストールする必要がある場合は、slurm.specファイルを更新して、新しいファイルを配置するRPMを特定します。

If new directories need to be added, add to the configure.ac file the path to the Makefile to be built in the new directory.
新しいディレクトリを追加する必要がある場合は、configure.acファイルに、新しいディレクトリに作成するMakefileへのパスを追加します。
In summary:
要約すれば:

autoreconf translates .am files into .in files
autoreconfは.amファイルを.inファイルに変換します

configure tranlates .in files, adding paths and version numbers.
.inファイルを変換し、パスとバージョン番号を追加します。

Compiling

Sending the standard output of "make" to a file makes it easier to see any warning or error messages:
「make」の標準出力をファイルに送信すると、警告またはエラーメッセージを簡単に確認できます。

"make -j install >make.out"

Configuration

Sample configuration files are included in the etc subdirectory.
サンプル構成ファイルは、etcサブディレクトリに含まれています。
The slurm.conf can be built using a configuration tool.
slurm.confは、構成ツールを使用して構築できます。
See doc/man/man5/slurm.conf.5 and the man pages for other configuration files for more details.
詳細については、doc / man / man5 / slurm.conf.5およびその他の構成ファイルのmanページを参照してください。
init.d.slurm is a script that determines which Slurm daemon(s) should execute on any node based upon the configuration file contents.
init.d.slurmは、構成ファイルの内容に基づいて、どのSlurmデーモンを任意のノードで実行するかを決定するスクリプトです。
It will also manage these daemons: starting, signaling, restarting, and stopping them.
また、これらのデーモンを管理します:起動、シグナリング、再起動、および停止。

Test Suite

The testsuite files use a DejaGnu framework for testing.
テストスイートファイルは、テストにDejaGnuフレームワークを使用します。
These tests are very limited in scope.
これらのテストの範囲は非常に限られています。

We also have a set of Expect Slurm tests available under the testsuite/expect directory.
また、testsuite / expectディレクトリの下に一連のExpectSlurmテストがあります。
These tests are executed after Slurm has been installed and the daemons initiated.
これらのテストは、Slurmがインストールされ、デーモンが開始された後に実行されます。
About 400 test scripts exercise all Slurm commands and options including stress tests.
約400のテストスクリプトが、ストレステストを含むすべてのSlurmコマンドとオプションを実行します。
The file testsuite/expect/globals contains default paths and procedures for all of the individual tests.
ファイルtestsuite / expect / globalsには、個々のすべてのテストのデフォルトのパスとプロシージャが含まれています。
At the very least, you will need to set the slurm_dir variable to the correct value.
少なくとも、slurm_dir変数を正しい値に設定する必要があります。
To avoid conflicts with other developers, you can override variable settings in a separate file named testsuite/expect/globals.local.
他の開発者との競合を避けるために、testsuite / expect /globals.localという名前の別のファイルの変数設定をオーバーライドできます。

Set your working directory to testsuite/expect before starting these tests.
これらのテストを開始する前に、作業ディレクトリをtestsuite / expectに設定してください。
Tests may be executed individually by name (e.g. test1.1) or the full test suite may be executed with the single command regression.
テストは名前で個別に実行することも(test1.1など)、完全なテストスイートを単一のコマンド回帰で実行することもできます。
See testsuite/expect/README for more information.
詳細については、testsuite / expect / READMEを参照してください。

Adding Files and Directories

If you are adding files and directories to Slurm, it will be necessary to re-build configuration files before executing the configure command.
Slurmにファイルとディレクトリを追加する場合は、configureコマンドを実行する前に構成ファイルを再構築する必要があります。
Update Makefile.am files as needed then execute autoreconf before executing configure.
必要に応じてMakefile.amファイルを更新し、configureを実行する前にautoreconfを実行します。

Tricks of the Trade

HAVE_FRONT_END

You can make a single node appear to Slurm as a Linux cluster by running configure with the --enable-front-end option.
--enable-front-endオプションを指定してconfigureを実行することにより、単一ノードをLinuxクラスターとしてSlurmに表示させることができます。
This defines HAVE_FRONT_END with a non-zero value in the file config.h.
これは、ファイルconfig.hでゼロ以外の値を使用してHAVE_FRONT_ENDを定義します。
All (fake) nodes should be defined in the slurm.conf file.
すべての(偽の)ノードは、slurm.confファイルで定義する必要があります。
These nodes should be configured with a single NodeAddr value indicating the node on which single slurmd daemon executes.
これらのノードは、単一のslurmdデーモンが実行されるノードを示す単一のNodeAddr値で構成する必要があります。
Initiate one slurmd and one slurmctld daemon.
1つのslurmdデーモンと1つのslurmctldデーモンを開始します。
Do not initiate too many simultaneous job steps to avoid overloading the slurmd daemon executing them all.
それらすべてを実行するslurmdデーモンの過負荷を回避するために、あまりにも多くの同時ジョブステップを開始しないでください。

Multiple slurmd support

It is possible to run multiple slurmd daemons on a single node, each using a different port number and NodeName alias.
それぞれが異なるポート番号とNodeNameエイリアスを使用して、単一のノードで複数のslurmdデーモンを実行することが可能です。
This is very useful for testing networking and protocol changes, or anytime you want to simulate a larger cluster than you really have.
これは、ネットワークやプロトコルの変更をテストする場合や、実際よりも大きなクラスターをシミュレートする場合に非常に役立ちます。
The author uses this on his desktop to simulate multiple nodes.
作成者はデスクトップでこれを使用して、複数のノードをシミュレートします。
However, it is important to note that not all slurm functions will work with multiple slurmd support enabled (e.g. many switch plugins will not work, it is best to use switch/none).
ただし、すべてのslurm関数が複数のslurmdサポートを有効にして機能するわけではないことに注意することが重要です(たとえば、多くのスイッチプラグインは機能しないため、switch / noneを使用することをお勧めします)。

Multiple support is enabled at configure-time with the "--enable-multiple-slurmd" parameter.
複数のサポートは、「-enable-multiple-slurmd」パラメーターを使用して構成時に有効になります。
This enables a new parameter in the slurm.conf file on the NodeName line, "Port=", and adds a new command line parameter to slurmd, "-N".
これにより、NodeName行のslurm.confファイルの新しいパラメーター「Port =」が有効になり、新しいコマンドラインパラメーターがslurmdの「-N」に追加されます。

Each slurmd needs to have its own NodeName, and its own TCP port number.
各slurmdには、独自のNodeNameと独自のTCPポート番号が必要です。
Here is an example of the NodeName lines for running three slurmd daemons on each of ten nodes:
これは、10個のノードのそれぞれで3つのslurmdデーモンを実行するためのNodeName行の例です。

NodeName=foo[1-10] NodeHostname=host[1-10]  Port=17001
NodeName=foo[11-20] NodeHostname=host[1-10] Port=17002
NodeName=foo[21-30] NodeHostname=host[1-10] Port=17003

It is likely that you will also want to use the "%n" symbol in any slurmd related paths in the slurm.conf file, for instance SlurmdLogFile, SlurmdPidFile, and especially SlurmdSpoolDir.
また、slurm.confファイルのslurmd関連パス(SlurmdLogFile、SlurmdPidFile、特にSlurmdSpoolDirなど)でも「%n」記号を使用することをお勧めします。
Each slurmd replaces the "%n" with its own NodeName.
各slurmdは、「%n」を独自のNodeNameに置き換えます。
Here is an example:
次に例を示します。

SlurmdLogFile=/var/log/slurm/slurmd.%n.log
SlurmdPidFile=/var/run/slurmd.%n.pid
SlurmdSpoolDir=/var/spool/slurmd.%n

You can manually start each slurmd daemon with the proper NodeName.
適切なNodeNameを使用して各slurmdデーモンを手動で起動できます。
For example, to start the slurmd daemons for host1 from the above slurm.conf example:
たとえば、上記のslurm.confの例からhost1のslurmdデーモンを起動するには、次のようにします。

host1> slurmd -N foo1
host1> slurmd -N foo11
host1> slurmd -N foo21

If you have SysV init scripts, slurmd daemons will automatically be started by whenever MULTIPLE_SLURMD is set to yes in /etc/sysconfig/slurm.
SysV initスクリプトがある場合、/ etc / sysconfig / slurmでMULTIPLE_SLURMDがyesに設定されるたびにslurmdデーモンが自動的に開始されます。
If your distribution uses systemd, you may want to use templating feature to define one slurmd.service file and registering each of your virtual nodes within it, for example:
ディストリビューションでsystemdを使用している場合は、テンプレート機能を使用して1つのslurmd.serviceファイルを定義し、その中に各仮想ノードを登録することをお勧めします。次に例を示します。

[Unit]
Description=Slurm node daemon
After=network.target munge.service remote-fs.target
ConditionPathExists=/etc/slurm.conf

[Service]
Type=forking
EnvironmentFile=-/etc/sysconfig/slurmd
ExecStart=/usr/sbin/slurmd -N%i $SLURMD_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
PIDFile=/var/run/slurmd-%i.pid
KillMode=process
LimitNOFILE=51200
LimitMEMLOCK=infinity
LimitSTACK=infinity
Delegate=yes

[Install]
WantedBy=multi-user.target

Then, enabling/managing a service like this (what is %i in the file will be replaced by what is after the @ in the command line):
次に、次のようなサービスを有効化/管理します(ファイル内の%iは、コマンドラインの@の後のものに置き換えられます)。

systemctl enable slurmd@nodeXYZ
systemctl start/stop/restart slurmd@nodeXYZ

Last modified 23 September 2019