Large Cluster Administration Guide

This document contains Slurm administrator information specifically for clusters containing 1,024 nodes or more.
このドキュメントには、1,024ノード以上を含むクラスター専用のSlurm管理者情報が含まれています。
Large systems currently managed by Slurm include Tianhe-2 (at the National University of Defense Technology in China with 16,000 compute nodes and 3.1 million cores) and Sequoia (IBM Bluegene/Q at Lawrence Livermore National Laboratory with 98,304 compute nodes and 1.6 million cores).
現在Slurmが管理している大規模システムには、Tianhe-2(16,000の計算ノードと310万のコアを備えた中国の国防科技大学)とSequoia(98,304の計算ノードと160万のコアを備えたローレンスリバモア国立研究所のIBM Bluegene / Q)が含まれます。 。
Slurm operation on systems orders of magnitude larger has been validated using emulation.
桁違いに大きいシステムでのSlurm動作は、エミュレーションを使用して検証されています。
Getting optimal performance at that scale does require some tuning and this document should help get you off to a good start.
その規模で最適なパフォーマンスを得るには、ある程度の調整が必要です。このドキュメントは、良いスタートを切るのに役立つはずです。
A working knowledge of Slurm should be considered a prerequisite for this material.
Slurmの実用的な知識は、この資料の前提条件と見なす必要があります。

Performance

Times below are for execution of an MPI program printing "Hello world" and exiting and includes the time for processing output.
以下の時間は、「Hello world」を印刷して終了するMPIプログラムの実行時間であり、出力の処理時間も含まれます。
Your performance may vary due to differences in hardware, software, and configuration.
ハードウェア、ソフトウェア、および構成の違いにより、パフォーマンスが異なる場合があります。

  • 1,966,080 tasks on 122,880 compute nodes of a BlueGene/Q: 322 seconds
    BlueGene / Qの122,880個の計算ノードでの1,966,080個のタスク:322秒
  • 30,000 tasks on 15,000 compute nodes of a Linux cluster: 30 seconds
    Linuxクラスターの15,000の計算ノードで30,000のタスク:30秒

System Configuration

Three system configuration parameters must be set to support a large number of open files and TCP connections with large bursts of messages.
多数の開いているファイルと大量のメッセージバーストを伴うTCP接続をサポートするには、3つのシステム構成パラメーターを設定する必要があります。
Changes can be made using the /etc/rc.d/rc.local or /etc/sysctl.conf script to preserve changes after reboot.
/etc/rc.d/rc.localまたは/etc/sysctl.confスクリプトを使用して変更を加え、再起動後の変更を保持できます。
In either case, you can write values directly into these files (e.g. "echo 32832 > /proc/sys/fs/file-max").
いずれの場合も、これらのファイルに直接値を書き込むことができます(例:「echo32832> / proc / sys / fs / file-max」)。

  • /proc/sys/fs/file-max: The maximum number of concurrently open files.
    / proc / sys / fs / file-max:同時に開くファイルの最大数。
    We recommend a limit of at least 32,832.
    少なくとも32,832の制限をお勧めします。
  • /proc/sys/net/ipv4/tcp_max_syn_backlog: Maximum number of remembered connection requests, which still have not received an acknowledgment from the connecting client.
    / proc / sys / net / ipv4 / tcp_max_syn_backlog:接続しているクライアントからの確認応答をまだ受信していない、記憶されている接続要求の最大数。
    The default value is 1024 for systems with more than 128Mb of memory, and 128 for low memory machines.
    デフォルト値は、128Mbを超えるメモリを備えたシステムの場合は1024、メモリの少ないマシンの場合は128です。
    If server suffers of overload, try to increase this number.
    サーバーが過負荷になっている場合は、この数を増やしてみてください。
  • /proc/sys/net/core/somaxconn: Limit of socket listen() backlog, known in userspace as SOMAXCONN.
    / proc / sys / net / core / somaxconn:ソケットlisten()バックログの制限。ユーザースペースではSOMAXCONNとして知られています。
    Defaults to 128.
    デフォルトは128です。
    The value should be raised substantially to support bursts of request.
    リクエストのバーストをサポートするには、値を大幅に上げる必要があります。
    For example, to support a burst of 1024 requests, set somaxconn to 1024.
    たとえば、1024リクエストのバーストをサポートするには、somaxconnを1024に設定します。

The transmit queue length (txqueuelen) may also need to be modified using the ifconfig command.
送信キューの長さ(txqueuelen)も、ifconfigコマンドを使用して変更する必要がある場合があります。
A value of 4096 has been found to work well for one site with a very large cluster (e.g. "ifconfig txqueuelen 4096").
4096の値は、クラスターが非常に大きい1つのサイト(「ifconfigtxqueuelen4096」など)で適切に機能することがわかっています。

Thread/Process Limit

There is a newly introduced limit in SLES 12 SP2 (used on Cray systems with CLE 6.0UP04, to be released mid-2017).
SLES 12 SP2には新たに導入された制限があります(CLE 6.0UP04を搭載したCrayシステムで使用され、2017年半ばにリリースされます)。
The version of systemd shipped with SLES 12 SP2 contains support for the PIDs cgroup controller.
SLES 12 SP2に同梱されているsystemdのバージョンには、PIDのcgroupコントローラーのサポートが含まれています。
Under the new systemd version, each init script or systemd service is limited to 512 threads/processes by default.
新しいsystemdバージョンでは、各initスクリプトまたはsystemdサービスはデフォルトで512スレッド/プロセスに制限されています。
This could cause issues for the slurmctld and slurmd daemons on large clusters or systems with a high job throughput rate.
これにより、大規模なクラスターまたはジョブスループット率の高いシステムでslurmctldデーモンとslurmdデーモンに問題が発生する可能性があります。
To increase the limit beyond the default:
デフォルトを超えて制限を増やすには:

  • If using a systemd service file: Add TasksMax=N to the [Service] section.
    systemdサービスファイルを使用する場合:[Service]セクションにTasksMax = Nを追加します。
    N can be a specific number, or special value infinity.
    Nは、特定の数値、または特別な値の無限大にすることができます。
  • If using an init script: Create the file
    /etc/systemd/system/<init script name>.service.d/override.conf
    with these contents:
    initスクリプトを使用する場合:次の内容でファイル/ etc / systemd / system / <initスクリプト名> .service.d /override.confを作成します。
      [Service]
      TasksMax=N
    

Note: Earlier versions of systemd that don't support the PIDs cgroup controller simply ignore the TasksMax setting.
注:PID cgroupコントローラーをサポートしない以前のバージョンのsystemdは、TasksMax設定を単に無視します。

User Limits

The ulimit values in effect for the slurmctld daemon should be set quite high for memory size, open file count and stack size.
slurmctldデーモンに有効なulimit値は、メモリサイズ、オープンファイル数、およびスタックサイズに対して非常に高く設定する必要があります。

Node Selection Plugin (SelectType)

While allocating individual processors within a node is great for smaller clusters, the overhead of keeping track of the individual processors and memory within each node adds significant overhead.
ノード内に個々のプロセッサを割り当てることは小さなクラスターには最適ですが、各ノード内の個々のプロセッサとメモリを追跡するオーバーヘッドはかなりのオーバーヘッドを追加します。
For best scalability, allocate whole nodes using select/linear and avoid select/cons_res.
最高のスケーラビリティを得るには、select / linearを使用してノード全体を割り当て、select / cons_resを回避します。

Job Accounting Gather Plugin (JobAcctGatherType)

Job accounting relies upon the slurmstepd daemon on each compute node periodically sampling data.
ジョブアカウンティングは、各計算ノードのslurmstepdデーモンが定期的にデータをサンプリングすることに依存しています。
This data collection will take compute cycles away from the application inducing what is known as system noise.
このデータ収集により、アプリケーションから計算サイクルが奪われ、システムノイズと呼ばれるものが発生します。
For large parallel applications, this system noise can detract from application scalability.
大規模な並列アプリケーションの場合、このシステムノイズはアプリケーションのスケーラビリティを損なう可能性があります。
For optimal application performance, disabling job accounting is best (jobacct_gather/none).
アプリケーションのパフォーマンスを最適化するには、ジョブアカウンティングを無効にするのが最適です(jobacct_gather / none)。
Consider use of job completion records (JobCompType) for accounting purposes as this entails far less overhead.
オーバーヘッドがはるかに少ないため、アカウンティング目的でジョブ完了レコード(JobCompType)を使用することを検討してください。
If job accounting is required, configure the sampling interval to a relatively large size (e.g. JobAcctGatherFrequency=300).
ジョブアカウンティングが必要な場合は、サンプリング間隔を比較的大きなサイズに構成します(例:JobAcctGatherFrequency = 300)。
Some experimentation may be required to deal with collisions on data transmission.
データ送信時の衝突に対処するには、いくつかの実験が必要になる場合があります。

Node Configuration

While Slurm can track the amount of memory and disk space actually found on each compute node and use it for scheduling purposes, this entails extra overhead.
Slurmは、各計算ノードで実際に検出されたメモリとディスクスペースの量を追跡し、それをスケジューリングの目的で使用できますが、これには余分なオーバーヘッドが伴います。
Optimize performance by specifying the expected configuration using the available parameters (RealMemory, CPUs, and TmpDisk).
使用可能なパラメーター(RealMemory、CPU、およびTmpDisk)を使用して予想される構成を指定することにより、パフォーマンスを最適化します。
If the node is found to contain less resources than configured, it will be marked DOWN and not used.
ノードに含まれるリソースが構成よりも少ないことが判明した場合、ノードはDOWNとマークされ、使用されません。
While Slurm can easily handle a heterogeneous cluster, configuring the nodes using the minimal number of lines in slurm.conf will both make for easier administration and better performance.
Slurmは異種クラスターを簡単に処理できますが、slurm.confの最小行数を使用してノードを構成すると、管理が容易になり、パフォーマンスが向上します。

Timers

The EioTimeout configuration parameter controls how long the srun command will wait for the slurmstepd to close the TCP/IP connection used to relay data between the user application and srun when the user application terminates.
EioTimeout構成パラメーターは、ユーザーアプリケーションの終了時にsrunコマンドがslurmstepdがユーザーアプリケーションとsrunの間でデータを中継するために使用されるTCP / IP接続を閉じるのを待機する時間を制御します。
The default value is 60 seconds.
デフォルト値は60秒です。
Larger systems and/or slower networks may need a higher value.
大規模なシステムや低速のネットワークでは、より高い値が必要になる場合があります。

If a high throughput of jobs is anticipated (i.e. large numbers of jobs with brief execution times) then configure MinJobAge to the smallest interval practical for your environment.
ジョブの高スループットが予想される場合(つまり、実行時間が短い多数のジョブ)、MinJobAgeをご使用の環境で実用的な最小間隔に構成します。
MinJobAge specifies the minimum number of seconds that a terminated job will be retained by Slurm's control daemon before purging.
MinJobAgeは、終了したジョブがパージされる前にSlurmの制御デーモンによって保持される最小秒数を指定します。
After this time, information about terminated jobs will only be available through accounting records.
この時間以降、終了したジョブに関する情報は、アカウンティングレコードを通じてのみ利用可能になります。

The configuration parameter SlurmdTimeout determines the interval at which slurmctld routinely communicates with slurmd.
構成パラメーターSlurmdTimeoutは、slurmctldがslurmdと定期的に通信する間隔を決定します。
Communications occur at half the SlurmdTimeout value.
通信はSlurmdTimeout値の半分で発生します。
The purpose of this is to determine when a compute node fails and thus should not be allocated work.
これの目的は、計算ノードに障害が発生したため、作業を割り当てるべきではない時期を判断することです。
Longer intervals decrease system noise on compute nodes (we do synchronize these requests across the cluster, but there will be some impact upon applications).
間隔を長くすると、計算ノードのシステムノイズが減少します(これらの要求はクラスター全体で同期されますが、アプリケーションにいくらかの影響があります)。
For really large clusters, SlurmdTimeout values of 120 seconds or more are reasonable.
非常に大きなクラスターの場合、120秒以上のSlurmdTimeout値が妥当です。

If MPICH-2 is used, the srun command will manage the key-pairs used to bootstrap the application.
MPICH-2が使用されている場合、srunコマンドは、アプリケーションのブートストラップに使用されるキーペアを管理します。
Depending upon the processor speed and architecture, the communication of key-pair information may require extra time.
プロセッサの速度とアーキテクチャによっては、キーペア情報の通信に余分な時間がかかる場合があります。
This can be done by setting an environment variable PMI_TIME before executing srun to launch the tasks.
これは、タスクを起動するためにsrunを実行する前に環境変数PMI_TIMEを設定することで実行できます。
The default value of PMI_TIME is 500 and this is the number of microseconds alloted to transmit each key-pair.
PMI_TIMEのデフォルト値は500で、これは各キーペアを送信するために割り当てられたマイクロ秒数です。
We have executed up to 16,000 tasks with a value of PMI_TIME=4000.
PMI_TIME = 4000の値で最大16,000のタスクを実行しました。

The individual slurmd daemons on compute nodes will initiate messages to the slurmctld daemon only when they start up or when the epilog completes for a job.
計算ノード上の個々のslurmdデーモンは、起動時またはジョブのエピローグが完了したときにのみ、slurmctldデーモンへのメッセージを開始します。
When a job allocated a large number of nodes completes, it can cause a very large number of messages to be sent by the slurmd daemons on these nodes to the slurmctld daemon all at the same time.
多数のノードが割り当てられたジョブが完了すると、これらのノードのslurmdデーモンからslurmctldデーモンに同時に非常に多くのメッセージが送信される可能性があります。
In order to spread this message traffic out over time and avoid message loss, The EpilogMsgTime parameter may be used.
このメッセージトラフィックを時間の経過とともに分散させ、メッセージの損失を回避するために、EpilogMsgTimeパラメータを使用できます。
Note that even if messages are lost, they will be retransmitted, but this will result in a delay for reallocating resources to new jobs.
メッセージが失われた場合でも、メッセージは再送信されますが、これにより、リソースを新しいジョブに再割り当てするための遅延が発生することに注意してください。

Other

Slurm uses hierarchical communications between the slurmd daemons in order to increase parallelism and improve performance.
Slurmは、並列処理を増やしてパフォーマンスを向上させるために、slurmdデーモン間の階層通信を使用します。
The TreeWidth configuration parameter controls the fanout of messages.
TreeWidth構成パラメーターは、メッセージのファンアウトを制御します。
The default value is 50, meaning each slurmd daemon can communicate with up to 50 other slurmd daemons and over 2500 nodes can be contacted with two message hops.
デフォルト値は50です。これは、各slurmdデーモンが最大50の他のslurmdデーモンと通信でき、2500を超えるノードが2つのメッセージホップで接続できることを意味します。
The default value will work well for most clusters.
デフォルト値は、ほとんどのクラスターで適切に機能します。
Optimal system performance can typically be achieved if TreeWidth is set to the square root of the number of nodes in the cluster for systems having no more than 2500 nodes or the cube root for larger systems.
最適なシステムパフォーマンスは、通常、TreeWidthが2500ノード以下のシステムの場合はクラスター内のノード数の平方根に設定されているか、大規模なシステムの場合は立方根に設定されている場合に達成できます。

The srun command automatically increases its open file limit to the hard limit in order to process all of the standard input and output connections to the launched tasks.
srunコマンドは、起動されたタスクへのすべての標準入力および出力接続を処理するために、開いているファイルの制限をハード制限まで自動的に増やします。
It is recommended that you set the open file hard limit to 8192 across the cluster.
クラスタ全体でオープンファイルのハード制限を8192に設定することをお勧めします。

Last modified 9 October 2019