Frequently Asked Questions
For Management
- Why should I use Slurm or other Free Open Source Software (FOSS)?
Slurmまたは他の無料のオープンソースソフトウェア(FOSS)を使用する必要があるのはなぜですか?
For Users
- Why is my job/node in a COMPLETING state?
ジョブ/ノードがCOMPLETING状態になるのはなぜですか? - Why are my resource limits not propagated?
リソース制限が反映されないのはなぜですか? - Why is my job not running?
なぜ私の仕事が実行されないのですか? - Why does the srun --overcommit option not permit
multiple jobs to run on nodes?
srun --overcommitオプションが複数のジョブのノードでの実行を許可しないのはなぜですか? - Why is my job killed prematurely?
なぜ私の仕事は時期尚早に殺されるのですか? - Why are my srun options ignored?
srunオプションが無視されるのはなぜですか? - Why is the Slurm backfill scheduler not starting my
job?
Slurmバックフィルスケジューラがジョブを開始しないのはなぜですか? - How can I run multiple jobs from within a single
script?
単一のスクリプト内から複数のジョブを実行するにはどうすればよいですか? - How can I run a job within an existing job
allocation?
既存のジョブ割り当て内でジョブを実行するにはどうすればよいですか? - How does Slurm establish the environment for my
job?
Slurmは私の仕事のための環境をどのように確立しますか? - How can I get shell prompts in interactive mode?
対話モードでシェルプロンプトを取得するにはどうすればよいですか? - How can I get the task ID in the output or error file
name for a batch job?
バッチジョブの出力またはエラーファイル名でタスクIDを取得するにはどうすればよいですか? - Can the make command utilize the resources
allocated to a Slurm job?
makeコマンドはSlurmジョブに割り当てられたリソースを利用できますか? - Can tasks be launched with a remote (pseudo)
terminal?
リモート(疑似)端末でタスクを起動できますか? - What does "srun: Force Terminated job"
indicate?
「srun:Force Terminated job」は何を示していますか? - What does this mean: "srun: First task exited
30s ago" followed by "srun Job Failed"?
これはどういう意味ですか:「srun:最初のタスクは30秒前に終了しました」に続いて「srun Job Failed」 - Why is my MPI job failing due to the locked memory
(memlock) limit being too low?
ロックされたメモリ(memlock)の制限が低すぎるためにMPIジョブが失敗するのはなぜですか? - Why is my batch job that launches no job steps being
killed?
ジョブステップを起動しないバッチジョブが強制終了されるのはなぜですか? - How do I run specific tasks on certain nodes
in my allocation?
割り当ての特定のノードで特定のタスクを実行するにはどうすればよいですか? - How can I temporarily prevent a job from running
(e.g. place it into a hold state)?
ジョブの実行を一時的に防ぐにはどうすればよいですか(たとえば、ジョブをホールド状態にするなど)? - Why are jobs not getting the appropriate
memory limit?
ジョブが適切なメモリ制限を取得しないのはなぜですか? - Is an archive available of messages posted to
the slurm-users mailing list?
slurm-usersメーリングリストに投稿されたメッセージのアーカイブはありますか? - Can I change my job's size after it has started
running?
実行開始後にジョブのサイズを変更できますか? - Why is my MPICH2 or MVAPICH2 job not running with
Slurm? Why does the DAKOTA program not run with Slurm?
MPICH2またはMVAPICH2ジョブがSlurmで実行されないのはなぜですか?DAKOTAプログラムがSlurmで実行されないのはなぜですか? - Why does squeue (and "scontrol show
jobid") sometimes not display a job's estimated start time?
squeue(および「scontrol show jobid」)がジョブの推定開始時刻を表示しないことがあるのはなぜですか? - How can I run an Ansys program with Slurm?
SlurmでAnsysプログラムを実行するにはどうすればよいですか? - How can a job in a complete or failed state be requeued?
完了または失敗した状態のジョブをどのように再キューイングできますか? - Slurm documentation refers to CPUs, cores and threads.
What exactly is considered a CPU?
Slurmのドキュメントでは、CPU、コア、スレッドについて言及しています。正確には何がCPUと見なされますか? - What is the difference between the sbatch
and srun commands?
sbatchコマンドとsrunコマンドの違いは何ですか? - Can squeue output be color coded?
squeueの出力を色分けできますか? - Can Slurm export an X11 display on an allocated compute node?
Slurmは割り当てられた計算ノードでX11ディスプレイをエクスポートできますか? - Why is the srun --u/--unbuffered option adding
a carriage return to my output?
srun --u /-unbufferedオプションが出力に改行を追加するのはなぜですか? - Why is sview not coloring/highlighting nodes
properly?
sviewがノードを適切に色付け/強調表示しないのはなぜですか?
For Administrators
- How is job suspend/resume useful?
ジョブの一時停止/再開はどのように役立ちますか? - Why is a node shown in state DOWN when the node
has registered for service?
ノードがサービスに登録されているのに、ノードがDOWN状態で表示されるのはなぜですか? - What happens when a node crashes?
ノードがクラッシュするとどうなりますか? - How can I control the execution of multiple
jobs per node?
ノードごとに複数のジョブの実行を制御するにはどうすればよいですか? - When the Slurm daemon starts, it prints
"cannot resolve X plugin operations" and exits. What does this mean?
Slurmデーモンが起動すると、「Xプラグイン操作を解決できません」と出力して終了します。これは何を意味するのでしょうか? - How can I exclude some users from pam_slurm?
一部のユーザーをpam_slurmから除外するにはどうすればよいですか? - How can I dry up the workload for a maintenance
period?
メンテナンス期間のワークロードをどのように枯渇させることができますか? - How can PAM be used to control a user's limits on or
access to compute nodes?
PAMを使用して、計算ノードに対するユーザーの制限またはアクセスを制御するにはどうすればよいですか? - Why are jobs allocated nodes and then unable to initiate
programs on some nodes?
ジョブがノードに割り当てられ、一部のノードでプログラムを開始できないのはなぜですか? - Why does slurmctld log that some nodes
are not responding even if they are not in any partition?
一部のノードがどのパーティションにもない場合でも、slurmctldが応答していないことをログに記録するのはなぜですか? - How should I relocate the primary or backup
controller?
プライマリコントローラまたはバックアップコントローラを再配置するにはどうすればよいですか? - Can multiple Slurm systems be run in
parallel for testing purposes?
テスト目的で複数のSlurmシステムを並行して実行できますか? - Can Slurm emulate a larger cluster?
Slurmはより大きなクラスターをエミュレートできますか? - Can Slurm emulate nodes with more
resources than physically exist on the node?
Slurmは、ノードに物理的に存在するよりも多くのリソースを持つノードをエミュレートできますか? - What does a
"credential replayed" error in the SlurmdLogFile
indicate?
SlurmdLogFileの「資格情報の再生」エラーは何を示していますか? - What does
"Warning: Note very large processing time"
in the SlurmctldLogFile indicate?
SlurmctldLogFileの「警告:処理時間が非常に長いことに注意してください」とはどういう意味ですか? - Is resource limit propagation
useful on a homogeneous cluster?
同種のクラスターでリソース制限の伝播は役に立ちますか? - Do I need to maintain synchronized clocks
on the cluster?
クラスターで同期クロックを維持する必要がありますか? - Why are "Invalid job credential" errors
generated?
「無効なジョブ資格情報」エラーが生成されるのはなぜですか? - Why are
"Task launch failed on node ... Job credential replayed"
errors generated?
「ノードでタスクの起動に失敗しました...ジョブ資格情報が再生されました」というエラーが生成されるのはなぜですか? - Can Slurm be used with Globus?
SlurmをGlobusで使用できますか? - What causes the error
"Unable to accept new connection: Too many open files"?
「新しい接続を受け入れることができません:開いているファイルが多すぎます」というエラーの原因は何ですか? - Why does the setting of SlurmdDebug fail
to log job step information at the appropriate level?
SlurmdDebugの設定がジョブステップ情報を適切なレベルでログに記録できないのはなぜですか? - Why aren't pam_slurm.so, auth_none.so, or other components in a
Slurm RPM?
Slurm RPMにpam_slurm.so、auth_none.so、またはその他のコンポーネントがないのはなぜですか? - Why should I use the slurmdbd instead of the
regular database plugins?
通常のデータベースプラグインの代わりにslurmdbdを使用する必要があるのはなぜですか? - How can I build Slurm with debugging symbols?
デバッグシンボルを使用してSlurmをビルドするにはどうすればよいですか? - How can I easily preserve drained node
information between major Slurm updates?
Slurmの主要な更新間でドレインされたノード情報を簡単に保持するにはどうすればよいですか? - Why doesn't the HealthCheckProgram
execute on DOWN nodes?
HealthCheckProgramがDOWNノードで実行されないのはなぜですか? - What is the meaning of the error
"Batch JobId=# missing from batch node <node> (not found
BatchStartTime after startup)"?
「バッチノードにバッチジョブID =#がありません」というエラーの意味は何ですか (起動後にBatchStartTimeが見つかりません) "? - What does the message
"srun: error: Unable to accept connection: Resources temporarily unavailable"
indicate?
「srun:エラー:接続を受け入れることができません:リソースが一時的に利用できません」というメッセージは何を示していますか? - How could I automatically print a job's
Slurm job ID to its standard output?
ジョブのSlurmジョブIDを標準出力に自動的に印刷するにはどうすればよいですか? - Why are user processes and srun
running even though the job is supposed to be completed?
ジョブが完了しているはずなのに、ユーザープロセスとsrunが実行されているのはなぜですか? - How can I prevent the slurmd and
slurmstepd daemons from being killed when a node's memory
is exhausted?
ノードのメモリが使い果たされたときにslurmdとslurmstepdデーモンが強制終了されるのを防ぐにはどうすればよいですか? - I see the host of my calling node as 127.0.1.1
instead of the correct IP address. Why is that?
呼び出し元ノードのホストが正しいIPアドレスではなく127.0.1.1として表示されます。何故ですか? - How can I stop Slurm from scheduling jobs?
Slurmでジョブのスケジュールを停止するにはどうすればよいですか? - Can I update multiple jobs with a single
scontrol command?
1つのscontrolコマンドで複数のジョブを更新できますか? - Can Slurm be used to run jobs on Amazon's EC2?
Slurmを使用してAmazonのEC2でジョブを実行できますか? - If a Slurm daemon core dumps, where can I find the
core file?
Slurmデーモンコアダンプの場合、コアファイルはどこにありますか? - How can TotalView be configured to operate with
Slurm?
TotalViewをSlurmで動作するように構成するにはどうすればよいですか? - How can a patch file be generated from a Slurm commit
in GitHub?
GitHubのSlurmコミットからパッチファイルを生成するにはどうすればよいですか? - Why are the resource limits set in the database
not being enforced?
データベースに設定されているリソース制限が適用されないのはなぜですか? - After manually setting a job priority value,
how can its priority value be returned to being managed by the
priority/multifactor plugin?
ジョブの優先度の値を手動で設定した後、優先度の値を優先度/多要素プラグインによる管理に戻すにはどうすればよいですか? - Does anyone have an example node health check
script for Slurm?
誰かがSlurmのノードヘルスチェックスクリプトの例を持っていますか? - What process should I follow to add nodes to Slurm?
ノードをSlurmに追加するには、どのプロセスに従う必要がありますか? - Can Slurm be configured to manage licenses?
ライセンスを管理するようにSlurmを構成できますか? - Can the salloc command be configured to
launch a shell on a node in the job's allocation?
ジョブの割り当てのノードでシェルを起動するようにsallocコマンドを構成できますか? - What should I be aware of when upgrading Slurm?
Slurmをアップグレードするときに注意すべきことは何ですか? - How easy is it to switch from PBS or Torque to Slurm?
PBSまたはTorqueからSlurmに切り替えるのはどれほど簡単ですか? - How can I get SSSD to work with Slurm?
SSSDをSlurmと連携させるにはどうすればよいですか? - How critical is configuring high availability for my
database?
データベースの高可用性の構成はどの程度重要ですか? - How can I use double quotes in MySQL queries?
MySQLクエリで二重引用符を使用するにはどうすればよいですか? - Why is a compute node down with the reason set to
"Node unexpectedly rebooted"?
理由が「ノードが予期せず再起動しました」に設定されているコンピューティングノードがダウンしているのはなぜですか? - How can a job which has exited with a specific exit code
be requeued?
特定の終了コードで終了したジョブを再キューイングするにはどうすればよいですか? - Can a user's account be changed in the database?
データベースでユーザーのアカウントを変更できますか? - What might account for MPI performance being below the
expected level?
MPIのパフォーマンスが期待されるレベルを下回っている理由は何ですか? - How could some jobs submitted immediately before the
slurmctld daemon crashed be lost?
slurmctldデーモンがクラッシュする直前に送信された一部のジョブがどのように失われる可能性がありますか? - How do I safely remove partitions?
パーティションを安全に削除するにはどうすればよいですか? - Why is Slurm unable to set the CPU frequency for jobs?
SlurmがジョブのCPU周波数を設定できないのはなぜですか? - When adding a new cluster, how can the Slurm cluster
configuration be copied from an existing cluster to the new cluster?
新しいクラスターを追加するときに、Slurmクラスター構成を既存のクラスターから新しいクラスターにコピーするにはどうすればよいですか? - How can I update Slurm on a Cray DVS file system without
rebooting the nodes?
ノードを再起動せずにCray DVSファイルシステムでSlurmを更新するにはどうすればよいですか? - How can I rebuild the database hierarchy?
データベース階層を再構築するにはどうすればよいですか? - How can a routing queue be configured?
ルーティングキューはどのように構成できますか? - How can I suspend, resume, hold or release all
of the jobs belonging to a specific user, partition, etc?
特定のユーザー、パーティションなどに属するすべてのジョブを一時停止、再開、保留、または解放するにはどうすればよいですか? - I had to change a user's UID and now they cannot submit
jobs. How do I get the new UID to take effect?
ユーザーのUIDを変更する必要があり、ジョブを送信できなくなりました。新しいUIDを有効にするにはどうすればよいですか? - Slurmdbd is failing to start with a 'Duplicate entry'
error in the database. How do I fix that?
Slurmdbdは、データベースの「重複エントリ」エラーで開始に失敗します。どうすれば修正できますか? - Why are applications on my Cray system failing
with SIGBUS (bus error)?
Crayシステム上のアプリケーションがSIGBUS(バスエラー)で失敗するのはなぜですか?
For Management
Why should I use Slurm or other Free Open Source Software (FOSS)?
Slurmまたは他の無料のオープンソースソフトウェア(FOSS)を使用する必要があるのはなぜですか?
Free Open Source Software (FOSS) does not mean that it is without cost.
無料のオープンソースソフトウェア(FOSS)が無料であるという意味ではありません。
It does mean that the you have access to the code so that you are free to
use it, study it, and/or enhance it.
それは、あなたが自由にそれを使用し、それを研究し、そして/またはそれを強化するためにあなたがそのコードにアクセスできることを意味します。
These reasons contribute to Slurm (and FOSS in general) being subject to
active research and development worldwide, displacing proprietary software
in many environments.
これらの理由により、Slurm(およびFOSS全般)は世界中で活発な研究開発の対象となり、多くの環境で独自仕様のソフトウェアに取って代わっています。
If the software is large and complex, like Slurm or the Linux kernel,
then while there is no license fee, its use is not without cost.
SlurmやLinuxカーネルのようにソフトウェアが大きく複雑な場合、ライセンス料はかかりませんが、その使用には費用がかかります。
If your work is important, you'll want the leading Slurm experts at your
disposal to keep your systems operating at peak efficiency.
あなたの仕事が重要な場合は、システムを最高の効率で運用し続けるために、自由に使える主要なSlurmエキスパートが必要です。
While Slurm has a global development community incorporating leading edge
technology, SchedMD personnel have developed
most of the code and can provide competitively priced commercial support.
Slurmには最先端のテクノロジーを組み込んだグローバルな開発コミュニティがありますが、SchedMDの担当者はほとんどのコードを開発しており、低価格の商用サポートを提供できます。
SchedMD works with various organizations to provide a range of support
options ranging from remote level-3 support to 24x7 on-site personnel.
SchedMDはさまざまな組織と連携して、リモートレベル3サポートから24時間365日のオンサイト担当者まで、幅広いサポートオプションを提供しています。
Customers switching from commercial workload mangers to Slurm typically
report higher scalability, better performance and lower costs.
商用のワークロードマネージャーからSlurmに切り替える顧客は、通常、より高いスケーラビリティ、より良いパフォーマンス、より低いコストを報告します。
For Users
Why is my job/node in a COMPLETING state?
ジョブ/ノードがCOMPLETING状態になるのはなぜですか?
When a job is terminating, both the job and its nodes enter the COMPLETING state.
ジョブが終了すると、ジョブとそのノードの両方がCOMPLETING状態になります。
As the Slurm daemon on each node determines that all processes associated with
the job have terminated, that node changes state to IDLE or some other appropriate
state for use by other jobs.
各ノードのSlurmデーモンが、ジョブに関連付けられているすべてのプロセスが終了したと判断すると、そのノードは状態をIDLEまたは他の適切な状態に変更して、他のジョブで使用できるようにします。
When every node allocated to a job has determined that all processes associated
with it have terminated, the job changes state to COMPLETED or some other
appropriate state (e.g. FAILED).
ジョブに割り当てられたすべてのノードが、それに関連付けられたすべてのプロセスが終了したと判断すると、ジョブは状態をCOMPLETEDまたはその他の適切な状態(たとえば、FAILED)に変更します。
Normally, this happens within a second.
通常、これは1秒以内に発生します。
However, if the job has processes that cannot be terminated with a SIGKILL
signal, the job and one or more nodes can remain in the COMPLETING state
for an extended period of time.
ただし、SIGKILLシグナルで終了できないプロセスがジョブにある場合、ジョブと1つ以上のノードが長時間COMPLETING状態のままになることがあります。
This may be indicative of processes hung waiting for a core file
to complete I/O or operating system failure.
これは、コアファイルがI / Oまたはオペレーティングシステムの障害を完了するのを待っているプロセスがハングしていることを示している可能性があります。
If this state persists, the system administrator should check for processes
associated with the job that cannot be terminated then use the
scontrol command to change the node's
state to DOWN (e.g. "scontrol update NodeName=name State=DOWN Reason=hung_completing"),
reboot the node, then reset the node's state to IDLE
(e.g. "scontrol update NodeName=name State=RESUME").
この状態が続く場合、システム管理者は、終了できないジョブに関連付けられたプロセスを確認してから、scontrolコマンドを使用してノードの状態をDOWNに変更します(「scontrol update NodeName = name State = DOWN Reason = hung_completing」など)、再起動します。ノード、次にノードの状態をIDLEにリセットします(例: "scontrol update NodeName = name State = RESUME")。
Note that setting the node DOWN will terminate all running or suspended
jobs associated with that node.
ノードをDOWNに設定すると、そのノードに関連付けられている実行中または一時停止中のすべてのジョブが終了します。
An alternative is to set the node's state to DRAIN until all jobs
associated with it terminate before setting it DOWN and re-booting.
別の方法としては、ノードの状態をDRAINに設定し、それに関連するすべてのジョブを終了してから、DOWNに設定して再起動する方法があります。
Note that Slurm has two configuration parameters that may be used to
automate some of this process.
Slurmには、このプロセスの一部を自動化するために使用できる2つの構成パラメーターがあることに注意してください。
UnkillableStepProgram specifies a program to execute when
non-killable processes are identified.
UnkillableStepProgramは、強制終了できないプロセスが識別されたときに実行するプログラムを指定します。
UnkillableStepTimeout specifies how long to wait for processes
to terminate.
UnkillableStepTimeoutは、プロセスが終了するまで待機する時間を指定します。
See the "man slurm.conf" for more information about these parameters.
これらのパラメーターの詳細については、「man slurm.conf」を参照してください。
Why are my resource limits not propagated?
リソース制限が反映されないのはなぜですか?
When the srun command executes, it captures the
resource limits in effect at submit time on the node where srun executes.
srunコマンドが実行されると、srunが実行されるノードでの送信時に有効なリソース制限を取得します。
These limits are propagated to the allocated nodes before initiating the
user's job.
これらの制限は、ユーザーのジョブを開始する前に、割り当てられたノードに伝達されます。
The Slurm daemons running on the allocated nodes then try to establish
identical resource limits for the job being initiated.
割り当てられたノードで実行されているSlurmデーモンは、開始されているジョブに対して同一のリソース制限を確立しようとします。
There are several possible reasons for not being able to establish those
resource limits.
これらのリソース制限を確立できない理由はいくつか考えられます。
- The hard resource limits applied to Slurm's slurmd daemon are lower
than the user's soft resources limits on the submit host.
Slurmのslurmdデーモンに適用されるハードリソース制限は、サブミットホスト上のユーザーのソフトリソース制限よりも低くなっています。
Typically the slurmd daemon is initiated by the init daemon with the operating system default limits.
通常、slurmdデーモンは、オペレーティングシステムのデフォルトの制限でinitデーモンによって開始されます。
This may be addressed either through use of the ulimit command in the /etc/sysconfig/slurm file or enabling PAM in Slurm.
これは、/ etc / sysconfig / slurmファイルでulimitコマンドを使用するか、SlurmでPAMを有効にすることで対処できます。 - The user's hard resource limits on the allocated node are lower than
the same user's soft hard resource limits on the node from which the
job was submitted.
割り当てられたノード上のユーザーのハードリソース制限は、ジョブの送信元のノード上の同じユーザーのソフトハードリソース制限よりも低くなっています。
It is recommended that the system administrator establish uniform hard resource limits for users on all nodes within a cluster to prevent this from occurring.
システム管理者は、クラスタ内のすべてのノードのユーザーに対して、これが発生しないようにハードリソース制限を統一することをお勧めします。 - PropagateResourceLimits or PropagateResourceLimitsExcept parameters are
configured in slurm.conf and avoid propagation of specified limits.
PropagateResourceLimitsまたはPropagateResourceLimitsExceptパラメータはslurm.confで設定され、指定された制限の伝播を回避します。
NOTE: This may produce the error message "Can't propagate RLIMIT_...".
注:これにより、「RLIMIT _...を伝播できません」というエラーメッセージが表示される場合があります。
The error message is printed only if the user explicitly specifies that
the resource limit should be propagated or the srun command is running
with verbose logging of actions from the slurmd daemon (e.g. "srun -d6 ...").
エラーメッセージが表示されるのは、リソース制限を伝達する必要があることをユーザーが明示的に指定した場合、またはslurmdデーモンからのアクションの詳細なログを使用してsrunコマンドが実行されている場合のみです(「srun -d6 ...」など)。
Why is my job not running?
なぜ私の仕事が実行されないのですか?
The answer to this question depends on a lot of factors. The main one is which
scheduler is used by Slurm. Executing the command
この質問への答えは、多くの要因に依存します。主なものは、Slurmが使用するスケジューラーです。コマンドを実行する
scontrol show config | grep SchedulerType
will supply this information. If the scheduler type is builtin, then
jobs will be executed in the order of submission for a given partition.
この情報を提供します。スケジューラタイプが組み込みの場合、ジョブは指定されたパーティションの送信順に実行されます。
Even if
resources are available to initiate your job immediately, it will be deferred
until no previously submitted job is pending.
リソースを使用してジョブをすぐに開始できる場合でも、以前に送信されたジョブが保留状態になるまで、リソースは延期されます。
If the scheduler type is backfill,
then jobs will generally be executed in the order of submission for a given partition
with one exception: later submitted jobs will be initiated early if doing so does
not delay the expected execution time of an earlier submitted job.
スケジューラのタイプがバックフィルの場合、ジョブは通常、1つの例外を除いて、指定されたパーティションのサブミットの順序で実行されます。先にサブミットされたジョブの予想実行時間を遅らせない場合、後でサブミットされたジョブは早期に開始されます。
In order for
backfill scheduling to be effective, users' jobs should specify reasonable time
limits.
バックフィルのスケジュールを効果的にするには、ユーザーのジョブで適切な時間制限を指定する必要があります。
If jobs do not specify time limits, then all jobs will receive the same
time limit (that associated with the partition), and the ability to backfill schedule
jobs will be limited.
ジョブに時間制限が指定されていない場合、すべてのジョブが同じ時間制限(パーティションに関連付けられている時間制限)を受け取り、スケジュールジョブをバックフィルする機能が制限されます。
The backfill scheduler does not alter job specifications
of required or excluded nodes, so jobs which specify nodes will substantially
reduce the effectiveness of backfill scheduling.
バックフィルスケジューラは、必須または除外されたノードのジョブ仕様を変更しないため、ノードを指定するジョブは、バックフィルスケジューリングの効率を大幅に低下させます。
See the
backfill section for more details. For any scheduler, you can check priorities
of jobs using the command scontrol show job.
詳細については、バックフィルのセクションを参照してください。どのスケジューラーでも、コマンドscontrol show jobを使用してジョブの優先順位を確認できます。
Other reasons can include waiting for resources, memory, qos, reservations, etc.
その他の理由には、リソース、メモリ、QoS、予約などの待機が含まれます。
As a guideline, issue an scontrol show job <jobid>
and look at the field State and Reason to investigate the cause.
ガイドラインとして、scontrol showジョブを発行します そして、原因を調査するためにフィールドの状態と理由を見てください。
Why does the srun --overcommit option not permit multiple jobs
to run on nodes?
srun --overcommitオプションが複数のジョブのノードでの実行を許可しないのはなぜですか?
The --overcommit option is a means of indicating that a job or job step is willing
to execute more than one task per processor in the job's allocation.
--overcommitオプションは、ジョブまたはジョブステップが、ジョブの割り当てでプロセッサごとに複数のタスクを実行する意思があることを示す手段です。
For example,
consider a cluster of two processor nodes.
たとえば、2つのプロセッサノードのクラスタを考えます。
The srun execute line may be something
of this sort
srun実行行はこのようなものかもしれません
srun --ntasks=4 --nodes=1 a.out
This will result in not one, but two nodes being allocated so that each of the four
tasks is given its own processor.
これにより、1つではなく2つのノードが割り当てられ、4つのタスクのそれぞれに独自のプロセッサが割り当てられます。
Note that the srun --nodes option specifies
a minimum node count and optionally a maximum node count.
srun --nodesオプションは、最小ノード数とオプションで最大ノード数を指定することに注意してください。
A command line of
コマンドライン
srun --ntasks=4 --nodes=1-1 a.out
would result in the request being rejected.
リクエストは拒否されます。
If the --overcommit option
is added to either command line, then only one node will be allocated for all
four tasks to use.
--overcommitオプションをいずれかのコマンドラインに追加すると、使用する4つのタスクすべてに1つのノードのみが割り当てられます。
More than one job can execute simultaneously on the same compute resource
(e.g. CPU) through the use of srun's --oversubscribe option in
conjunction with the OverSubscribe parameter in Slurm's partition
configuration.
Slurmのパーティション構成でOverSubscribeパラメータと組み合わせてsrunの--oversubscribeオプションを使用することにより、複数のジョブを同じコンピューティングリソース(CPUなど)で同時に実行できます。
See the man pages for srun and slurm.conf for more information.
詳細については、srunおよびslurm.confのマニュアルページを参照してください。
Why is my job killed prematurely?
なぜ私の仕事は時期尚早に殺されるのですか?
Slurm has a job purging mechanism to remove inactive jobs (resource allocations)
before reaching its time limit, which could be infinite.
Slurmには、時間制限に達する前に非アクティブなジョブ(リソース割り当て)を削除するジョブパージメカニズムがあります。
This inactivity time limit is configurable by the system administrator.
この非アクティブ時間制限は、システム管理者が構成できます。
You can check its value with the command
次のコマンドで値を確認できます
scontrol show config | grep InactiveLimit
The value of InactiveLimit is in seconds.
InactiveLimitの値は秒単位です。
A zero value indicates that job purging is disabled.
ゼロの値は、ジョブのパージが無効であることを示します。
A job is considered inactive if it has no active job steps or if the srun
command creating the job is not responding.
アクティブなジョブステップがない場合、またはジョブを作成するsrunコマンドが応答しない場合、ジョブは非アクティブであると見なされます。
In the case of a batch job, the srun command terminates after the job script
is submitted.
バッチジョブの場合、ジョブスクリプトが送信されると、srunコマンドは終了します。
Therefore batch job pre- and post-processing is limited to the InactiveLimit.
したがって、バッチジョブの前処理と後処理はInactiveLimitに制限されます。
Contact your system administrator if you believe the InactiveLimit value
should be changed.
InactiveLimit値を変更する必要があると思われる場合は、システム管理者に連絡してください。
Why are my srun options ignored?
srunオプションが無視されるのはなぜですか?
Everything after the command srun is
examined to determine if it is a valid option for srun.
コマンドsrunの後のすべてが検査され、それがsrunの有効なオプションであるかどうかが判別されます。
The first
token that is not a valid option for srun is considered the command
to execute and everything after that is treated as an option to
the command. For example:
srunの有効なオプションではない最初のトークンは、実行するコマンドと見なされ、その後のすべてはコマンドのオプションとして扱われます。例えば:
srun -N2 hostname -pdebug
srun processes "-N2" as an option to itself.
srunはそれ自身のオプションとして「-N2」を処理します。
"hostname" is the
command to execute and "-pdebug" is treated as an option to the
hostname command.
「hostname」は実行するコマンドで、「-pdebug」はホスト名コマンドのオプションとして扱われます。
This will change the name of the computer
on which Slurm executes the command - Very bad, Don't run
this command as user root!
これにより、Slurmがコマンドを実行するコンピューターの名前が変更されます-非常に悪い。ユーザーrootとしてこのコマンドを実行しないでください。
Why is the Slurm backfill scheduler not starting my job?
Slurmバックフィルスケジューラがジョブを開始しないのはなぜですか?
The most common problem is failing to set job time limits.
最も一般的な問題は、ジョブの時間制限を設定できないことです。
If all jobs have
the same time limit (for example the partition's time limit), then backfill
will not be effective.
すべてのジョブに同じ制限時間(たとえば、パーティションの制限時間)がある場合、バックフィルは有効になりません。
Note that partitions can have both default and maximum
time limits, which can be helpful in configuring a system for effective
backfill scheduling.
パーティションにはデフォルトと最大の両方の時間制限を設定できることに注意してください。これは、効果的なバックフィルスケジューリングのためにシステムを構成するのに役立ちます。
In addition, there are a multitude of backfill scheduling parameters
which can impact which jobs are considered for backfill scheduling, such
as the maximum number of jobs tested per user.
さらに、ユーザーごとにテストされるジョブの最大数など、バックフィルスケジューリングの対象となるジョブに影響を与える可能性のある多数のバックフィルスケジューリングパラメーターがあります。
For more information see
the slurm.conf man page and check the configuration of SchedulingParameters
on your system.
詳細については、slurm.confのマニュアルページを参照し、システムのSchedulingParametersの設定を確認してください。
How can I run multiple jobs from within a
single script?
単一のスクリプト内から複数のジョブを実行するにはどうすればよいですか?
A Slurm job is just a resource allocation.
Slurmジョブは単なるリソース割り当てです。
You can execute many
job steps within that allocation, either in parallel or sequentially.
その割り当て内の多くのジョブステップを並列または順次に実行できます。
Some jobs actually launch thousands of job steps this way.
一部のジョブは、実際にこの方法で何千ものジョブステップを起動します。
The job
steps will be allocated nodes that are not already allocated to
other job steps.
ジョブステップには、他のジョブステップにまだ割り当てられていないノードが割り当てられます。
This essentially provides a second level of resource
management within the job for the job steps.
これは基本的に、ジョブステップのジョブ内で第2レベルのリソース管理を提供します。
How can I run a job within an existing
job allocation?
既存のジョブ割り当て内でジョブを実行するにはどうすればよいですか?
There is an srun option --jobid that can be used to specify
a job's ID.
ジョブのIDを指定するために使用できるsrunオプション--jobidがあります。
For a batch job or within an existing resource allocation, the
environment variable SLURM_JOB_ID has already been defined,
so all job steps will run within that job allocation unless
otherwise specified.
バッチジョブの場合、または既存のリソース割り当て内では、環境変数SLURM_JOB_IDがすでに定義されているため、特に指定しない限り、すべてのジョブステップはそのジョブ割り当て内で実行されます。
The one exception to this is when submitting batch jobs.
これに対する1つの例外は、バッチジョブを送信する場合です。
When a batch job is submitted from within an existing batch job,
it is treated as a new job allocation request and will get a
new job ID unless explicitly set with the --jobid option.
既存のバッチジョブ内からバッチジョブが送信されると、それは新しいジョブ割り当て要求として扱われ、-jobidオプションで明示的に設定されていない限り、新しいジョブIDを取得します。
If you specify that a batch job should use an existing allocation,
that job allocation will be released upon the termination of
that batch job.
バッチジョブで既存の割り当てを使用するように指定した場合、そのジョブの割り当ては、そのバッチジョブの終了時に解放されます。
How does Slurm establish the environment
for my job?
Slurmは私の仕事のための環境をどのように確立しますか?
Slurm processes are not run under a shell, but directly exec'ed
by the slurmd daemon (assuming srun is used to launch
the processes).
Slurmプロセスはシェルの下では実行されませんが、slurmdデーモンによって直接実行されます(プロセスの起動にsrunが使用されると想定)。
The environment variables in effect at the time the srun command
is executed are propagated to the spawned processes.
srunコマンドの実行時に有効な環境変数は、生成されたプロセスに伝達されます。
The ~/.profile and ~/.bashrc scripts are not executed
as part of the process launch.
〜/ .profileおよび〜/ .bashrcスクリプトは、プロセスの起動の一部として実行されません。
You can also look at the --export option of
srun and sbatch.
srunとsbatchの--exportオプションも確認できます。
See man pages for details.
詳細については、manページを参照してください。
How can I get shell prompts in interactive
mode?
対話モードでシェルプロンプトを取得するにはどうすればよいですか?
srun --pty bash -i
Srun's --pty option runs task zero in pseudo terminal mode.
Srunの--ptyオプションは、タスク0を疑似ターミナルモードで実行します。
Bash's -i option tells it to run in interactive mode (with prompts).
Bashの-iオプションは、対話モード(プロンプト付き)で実行するように指示します。
You can also configure SallocDefaultCommand in slurm.conf
to automatically launch a shell, e.g.:
slurm.confでSallocDefaultCommandを設定して、シェルを自動的に起動することもできます。例:
SallocDefaultCommand="srun -n1 -N1 --mem-per-cpu=0 --pty --preserve-env --cpu-bind=no --mpi=none $SHELL"
And then run salloc directly which will provide you an allocation with
an interactive shell console.
次に、sallocを直接実行して、対話型シェルコンソールで割り当てを行います。
How can I get the task ID in the output
or error file name for a batch job?
バッチジョブの出力またはエラーファイル名でタスクIDを取得するにはどうすればよいですか?
If you want separate output by task, you will need to build a script
containing this specification. For example:
タスクごとに個別の出力が必要な場合は、この仕様を含むスクリプトを作成する必要があります。例えば:
$ cat test #!/bin/sh echo begin_test srun -o out_%j_%t hostname $ sbatch -n7 -o out_%j test sbatch: Submitted batch job 65541 $ ls -l out* -rw-rw-r-- 1 jette jette 11 Jun 15 09:15 out_65541 -rw-rw-r-- 1 jette jette 6 Jun 15 09:15 out_65541_0 -rw-rw-r-- 1 jette jette 6 Jun 15 09:15 out_65541_1 -rw-rw-r-- 1 jette jette 6 Jun 15 09:15 out_65541_2 -rw-rw-r-- 1 jette jette 6 Jun 15 09:15 out_65541_3 -rw-rw-r-- 1 jette jette 6 Jun 15 09:15 out_65541_4 -rw-rw-r-- 1 jette jette 6 Jun 15 09:15 out_65541_5 -rw-rw-r-- 1 jette jette 6 Jun 15 09:15 out_65541_6 $ cat out_65541 begin_test $ cat out_65541_2 tdev2
Can the make command
utilize the resources allocated to a Slurm job?
makeコマンドはSlurmジョブに割り当てられたリソースを利用できますか?
Yes. There is a patch available for GNU make version 3.81
available as part of the Slurm distribution in the file
contribs/make-3.81.slurm.patch. For GNU make version 4.0 you
can use the patch in the file contribs/make-4.0.slurm.patch.
はい。ファイルcontribs / make-3.81.slurm.patchのSlurmディストリビューションの一部として利用可能なGNU makeバージョン3.81で利用可能なパッチがあります。GNU makeバージョン4.0の場合、ファイルcontribs / make-4.0.slurm.patchでパッチを使用できます。
This patch will use Slurm to launch tasks across a job's current resource
allocation.
このパッチは、Slurmを使用して、ジョブの現在のリソース割り当て全体でタスクを起動します。
Depending upon the size of modules to be compiled, this may
or may not improve performance.
コンパイルするモジュールのサイズによっては、パフォーマンスが向上する場合と向上しない場合があります。
If most modules are thousands of lines
long, the use of additional resources should more than compensate for the
overhead of Slurm's task launch.
ほとんどのモジュールが数千行の長さである場合、追加のリソースを使用することで、Slurmのタスク起動のオーバーヘッドを十分に補うことができます。
Use with make's -j option within an
existing Slurm allocation.
既存のSlurm割り当て内でmakeの-jオプションを使用します。
Outside of a Slurm allocation, make's behavior
will be unchanged.
Slurm割り当て以外では、makeの動作は変更されません。
Can tasks be launched with a remote (pseudo)
terminal?
リモート(疑似)端末でタスクを起動できますか?
You have several ways to do so, the recommended ones are the following:
これにはいくつかの方法がありますが、推奨される方法は次のとおりです。
The simplest method is to make use of srun's --pty option,
(e.g. srun --pty bash -i).
最も簡単な方法は、srunの--ptyオプションを使用することです(例:srun --pty bash -i)。
Srun's --pty option runs task zero in pseudo terminal mode.
Srunの--ptyオプションは、タスク0を疑似ターミナルモードで実行します。
Bash's
-i option instructs it to run in interactive mode (with prompts).
Bashの-iオプションは、対話モード(プロンプト付き)で実行するように指示します。
In addition to that method you have the option to define the
SallocDefaultCommand to run a task in pseudo terminal mode directly,
so you get the prompt just invoking salloc:
その方法に加えて、タスクを疑似端末モードで直接実行するSallocDefaultCommandを定義するオプションがあるため、sallocを呼び出すだけでプロンプトが表示されます。
SallocDefaultCommand="srun -n1 -N1 --mem-per-cpu=0 --pty --preserve-env --cpu-bind=no --mpi=none $SHELL"
Finally you can make use of X11 feature and run a graphical terminal.
(e.g. srun xterm).
最後に、X11機能を利用してグラフィカル端末を実行できます。(例:srun xterm)。
What does "srun: Force Terminated job"
indicate?
「srun:Force Terminated job」は何を示していますか?
The srun command normally terminates when the standard output and
error I/O from the spawned tasks end.
通常、srunコマンドは、生成されたタスクからの標準出力とエラーI / Oが終了すると終了します。
This does not necessarily
happen at the same time that a job step is terminated.
これは、ジョブステップの終了と同時に発生するとは限りません。
For example,
a file system problem could render a spawned task non-killable
at the same time that I/O to srun is pending.
たとえば、ファイルシステムの問題により、srunするI / Oが保留されているときに、生成されたタスクを強制終了できなくなる可能性があります。
Alternately a network
problem could prevent the I/O from being transmitted to srun.
または、ネットワークの問題により、I / Oがsrunに送信されない場合があります。
In any event, the srun command is notified when a job step is
terminated, either upon reaching its time limit or being explicitly
killed.
いずれの場合も、ジョブステップが制限時間に達するか、明示的に強制終了されると、ジョブステップが終了すると、srunコマンドに通知されます。
If the srun has not already terminated, the message
"srun: Force Terminated job" is printed.
srunがまだ終了していない場合は、「srun:Force Terminated job」というメッセージが出力されます。
If the job step's I/O does not terminate in a timely fashion
thereafter, pending I/O is abandoned and the srun command
exits.
その後、ジョブステップのI / Oが適時に終了しない場合、保留中のI / Oは破棄され、srunコマンドは終了します。
What does this mean:
"srun: First task exited 30s ago"
followed by "srun Job Failed"?
これはどういう意味ですか:「srun:最初のタスクは30秒前に終了しました」に続いて「srun Job Failed」
The srun command monitors when tasks exit. By default, 30 seconds
after the first task exists, the job is killed.
srunコマンドは、タスクがいつ終了するかを監視します。デフォルトでは、最初のタスクが存在してから30秒後に、ジョブは強制終了されます。
This typically indicates some type of job failure and continuing
to execute a parallel job when one of the tasks has exited is
not normally productive.
これは通常、ある種のジョブの失敗を示し、タスクの1つが終了したときに並列ジョブの実行を継続しても通常は生産的ではありません。
This behavior can be changed using srun's
--wait=<time> option to either change the timeout
period or disable the timeout altogether. See srun's man page
for details.
この動作は、srunの--wait =を使用して変更できます。タイムアウト期間を変更するか、タイムアウトを完全に無効にするオプション。詳細については、srunのmanページを参照してください。
Why is my MPI job failing due to the
locked memory (memlock) limit being too low?
ロックされたメモリ(memlock)の制限が低すぎるためにMPIジョブが失敗するのはなぜですか?
By default, Slurm propagates all of your resource limits at the
time of job submission to the spawned tasks.
デフォルトでは、Slurmはジョブの送信時に、生成されたタスクにすべてのリソース制限を伝達します。
This can be disabled by specifically excluding the propagation of
specific limits in the slurm.conf file.
これは、slurm.confファイルで特定の制限の伝播を明確に除外することで無効にできます。
For example
PropagateResourceLimitsExcept=MEMLOCK might be used to
prevent the propagation of a user's locked memory limit from a
login node to a dedicated node used for his parallel job.
たとえば、PropagateResourceLimitsExcept = MEMLOCKを使用して、ユーザーのロックされたメモリ制限が、ログインノードから並列ジョブに使用される専用ノードに伝達されないようにすることができます。
If the user's resource limit is not propagated, the limit in
effect for the slurmd daemon will be used for the spawned job.
ユーザーのリソース制限が伝搬されない場合、slurwnデーモンに有効な制限が、生成されたジョブに使用されます。
A simple way to control this is to ensure that user root has a
sufficiently large resource limit and ensuring that slurmd takes
full advantage of this limit.
これを制御する簡単な方法は、ユーザーrootに十分なリソース制限があることを確認し、slurmdがこの制限を最大限に活用できるようにすることです。
For example, you can set user root's
locked memory limit ulimit to be unlimited on the compute nodes (see
"man limits.conf") and ensuring that slurmd takes
full advantage of this limit (e.g. by adding "LimitMEMLOCK=infinity"
to your systemd's slurmd.service file).
たとえば、ユーザールートのロックされたメモリ制限ulimitを計算ノードで無制限に設定し(「man limits.conf」を参照)、slurmdがこの制限を最大限に活用できるようにします(たとえば、systemdの「LimitMEMLOCK = infinity」を追加することにより) slurmd.serviceファイル)。
It may also be desirable to lock
the slurmd daemon's memory to help ensure that it keeps responding if memory
swapping begins.
また、slurmdデーモンのメモリをロックして、メモリスワッピングが開始された場合にデーモンが応答し続けることを保証することが望ましい場合もあります。
A sample /etc/sysconfig/slurm which can be read from
systemd is shown below.
systemdから読み取ることができるサンプル/ etc / sysconfig / slurmを以下に示します。
Related information about PAM is also available.
PAMに関する関連情報も利用できます。
# # Example /etc/sysconfig/slurm # # Memlocks the slurmd process's memory so that if a node # starts swapping, the slurmd will continue to respond SLURMD_OPTIONS="-M"
Why is my batch job that launches no
job steps being killed?
ジョブステップを起動しないバッチジョブが強制終了されるのはなぜですか?
Slurm has a configuration parameter InactiveLimit intended
to kill jobs that do not spawn any job steps for a configurable
period of time.
Slurmには、構成可能な期間ジョブステップを生成しないジョブを強制終了することを目的とした構成パラメーターInactiveLimitがあります。
Your system administrator may modify the InactiveLimit
to satisfy your needs.
システム管理者は、必要に応じてInactiveLimitを変更できます。
Alternately, you can just spawn a job step
at the beginning of your script to execute in the background.
または、スクリプトの最初にジョブステップを生成して、バックグラウンドで実行することもできます。
It
will be purged when your script exits or your job otherwise terminates.
スクリプトが終了するか、ジョブが終了するとパージされます。
A line of this sort near the beginning of your script should suffice:
スクリプトの冒頭付近にあるこの種の行で十分です:
srun -N1 -n1 sleep 999999 &
How do I run specific tasks on certain nodes
in my allocation?
割り当ての特定のノードで特定のタスクを実行するにはどうすればよいですか?
One of the distribution methods for srun '-m
or --distribution' is 'arbitrary'.
srun '-mまたは--distribution'の配布方法の1つは「任意」です。
This means you can tell Slurm to
layout your tasks in any fashion you want.
つまり、タスクを任意の方法でレイアウトするようにSlurmに指示できます。
For instance if I had an
allocation of 2 nodes and wanted to run 4 tasks on the first node and
1 task on the second and my nodes allocated from SLURM_JOB_NODELIST
where tux[0-1] my srun line would look like this:
たとえば、2つのノードの割り当てがあり、最初のノードで4つのタスクを実行し、2番目のノードで1つのタスクを実行したい場合、tux [0-1]のSLURM_JOB_NODELISTから割り当てられたノードでは、srun行は次のようになります。
srun -n5 -m arbitrary -w tux[0,0,0,0,1] hostname
srun -n5 -m任意-w tux [0,0,0,0,1]ホスト名
If I wanted something similar but wanted the third task to be on tux 1
I could run this:
同様のものが必要だが、3番目のタスクをtux 1にしたい場合は、次のように実行できます。
srun -n5 -m arbitrary -w tux[0,0,1,0,0] hostname
srun -n5 -m任意-w tux [0,0,1,0,0]ホスト名
Here is a simple Perl script named arbitrary.pl that can be ran to easily lay
out tasks on nodes as they are in SLURM_JOB_NODELIST.
以下は、arrunary.plという名前のシンプルなPerlスクリプトで、SLURM_JOB_NODELISTにあるノードにタスクを簡単にレイアウトするために実行できます。
#!/usr/bin/perl my @tasks = split(',', $ARGV[0]); my @nodes = `scontrol show hostnames $SLURM_JOB_NODELIST`; my $node_cnt = $#nodes + 1; my $task_cnt = $#tasks + 1; if ($node_cnt < $task_cnt) { print STDERR "ERROR: You only have $node_cnt nodes, but requested layout on $task_cnt nodes.\n"; $task_cnt = $node_cnt; } my $cnt = 0; my $layout; foreach my $task (@tasks) { my $node = $nodes[$cnt]; last if !$node; chomp($node); for(my $i=0; $i < $task; $i++) { $layout .= "," if $layout; $layout .= "$node"; } $cnt++; } print $layout;
We can now use this script in our srun line in this fashion.
これで、このスクリプトをこの方法でsrun行で使用できます。
srun -m arbitrary -n5 -w `arbitrary.pl 4,1` -l hostname
srun -m任意-n5 -w `arbitrary.pl 4,1` -lホスト名
This will layout 4 tasks on the first node in the allocation and 1
task on the second node.
これにより、割り当ての最初のノードに4つのタスクが配置され、2番目のノードに1つのタスクが配置されます。
How can I temporarily prevent a job from running
(e.g. place it into a hold state)?
ジョブの実行を一時的に防ぐにはどうすればよいですか(たとえば、ジョブをホールド状態にするなど)?
The easiest way to do this is to change a job's earliest begin time
(optionally set at job submit time using the --begin option).
これを行う最も簡単な方法は、ジョブの最も早い開始時刻を変更することです(オプションで、ジョブの送信時に--beginオプションを使用して設定します)。
The example below places a job into hold state (preventing its initiation
for 30 days) and later permitting it to start now.
以下の例では、ジョブを保留状態(30日間は開始を禁止)にし、後で今すぐ開始することを許可しています。
$ scontrol update JobId=1234 StartTime=now+30days ... later ... $ scontrol update JobId=1234 StartTime=now
Why are jobs not getting the appropriate
memory limit?
ジョブが適切なメモリ制限を取得しないのはなぜですか?
This is probably a variation on the locked memory limit
problem described above.
これはおそらく、上記のロックされたメモリ制限の問題のバリエーションです。
Use the same solution for the AS (Address Space), RSS (Resident Set Size),
or other limits as needed.
AS(アドレススペース)、RSS(常駐セットサイズ)、または必要に応じて他の制限に対して同じソリューションを使用します。
Is an archive available of messages posted to
the slurm-users mailing list?
slurm-usersメーリングリストに投稿されたメッセージのアーカイブはありますか?
Yes, it is at
http://groups.google.com/group/slurm-users
はい、http://groups.google.com/group/slurm-usersにあります
Can I change my job's size after it has started
running?
実行開始後にジョブのサイズを変更できますか?
Slurm supports the ability to both increase and decrease the size of jobs.
Slurmは、ジョブのサイズを拡大および縮小する機能の両方をサポートしています。
While the size of a pending job may be changed with few restrictions, several
significant restrictions apply to changing the size of a running job, as noted
below:
保留中のジョブのサイズはわずかな制限で変更される可能性がありますが、以下に示すように、実行中のジョブのサイズの変更にはいくつかの重要な制限が適用されます。
- Requesting fewer hardware resources, and changing partition, qos,
reservation, licenses, etc. is only allowed for pending jobs.
要求するハードウェアリソースを減らし、パーティション、QoS、予約、ライセンスなどを変更することは、保留中のジョブに対してのみ許可されます。 - Job(s) changing size must not be in a suspended state, including jobs
suspended for gang scheduling. The jobs must be in a state of pending or
running.
サイズを変更するジョブは、ギャングスケジューリングのために一時停止されたジョブを含め、一時停止状態であってはなりません。ジョブは保留中または実行中の状態でなければなりません。 - Job expansion for running jobs is disabled by default.
実行中のジョブのジョブ拡張は、デフォルトでは無効になっています。
Site administrators can enable this capability by setting SchedulerParameters=permit_job_expansion in slurm.conf
サイト管理者は、slurm.confでSchedulerParameters = permit_job_expansionを設定することにより、この機能を有効にできます
Use the scontrol command to change a job's size either by specifying
a new node count (NumNodes=) for the job or identify the specific nodes
(NodeList=) that you want the job to retain.
scontrolコマンドを使用して、ジョブの新しいノード数(NumNodes =)を指定するか、ジョブに保持する特定のノード(NodeList =)を指定して、ジョブのサイズを変更します。
Any job steps running on the nodes which are relinquished by the job will be
killed unless initiated with the --no-kill option.
--no-killオプションで開始しない限り、ジョブによって解放されたノードで実行されているジョブステップはすべて強制終了されます。
After the job size is changed, some environment variables created by Slurm
containing information about the job's environment will no longer be valid and
should either be removed or altered (e.g. SLURM_JOB_NODES, SLURM_JOB_NODELIST and
SLURM_NTASKS).
ジョブサイズが変更されると、ジョブの環境に関する情報を含むSlurmによって作成された一部の環境変数は無効になり、削除または変更する必要があります(SLURM_JOB_NODES、SLURM_JOB_NODELIST、SLURM_NTASKSなど)。
The scontrol command will generate a script that can be executed to
reset local environment variables.
scontrolコマンドは、ローカル環境変数をリセットするために実行できるスクリプトを生成します。
You must retain the SLURM_JOB_ID environment variable in order for the
srun command to gather information about the job's current state and
specify the desired node and/or task count in subsequent srun invocations.
srunコマンドがジョブの現在の状態に関する情報を収集し、後続のsrun呼び出しで目的のノードやタスクの数を指定できるように、SLURM_JOB_ID環境変数を保持する必要があります。
A new accounting record is generated when a job is resized, showing the job to
have been resubmitted and restarted at the new size.
ジョブのサイズが変更されると、新しいアカウンティングレコードが生成され、ジョブが再送信され、新しいサイズで再起動されたことが示されます。
An example is shown below.
以下に例を示します。
#!/bin/bash srun my_big_job scontrol update JobId=$SLURM_JOB_ID NumNodes=2 . slurm_job_${SLURM_JOB_ID}_resize.sh srun -N2 my_small_job rm slurm_job_${SLURM_JOB_ID}_resize.*
Increasing a job's size
ジョブのサイズを増やす
Directly increasing the size of a running job would adversely affect the
scheduling of pending jobs.
実行中のジョブのサイズを直接増やすと、保留中のジョブのスケジューリングに悪影響を及ぼします。
For the sake of fairness in job scheduling, expanding a running job requires
the user to submit a new job, but specify the option
--dependency=expand:<jobid>.
ジョブのスケジュールを公平にするために、実行中のジョブを展開するには、ユーザーが新しいジョブを送信する必要がありますが、オプション--dependency = expandを指定します。。
This option tells Slurm that the job, when scheduled, can be used to expand
the specified jobid.
このオプションは、スケジュールされたジョブを使用して、指定されたジョブIDを展開できることをSlurmに通知します。
Other job options would be used to identify the required resources
(e.g. task count, node count, node features, etc.).
他のジョブオプションは、必要なリソースを識別するために使用されます(タスク数、ノード数、ノード機能など)。
This new job's time limit will be automatically set to reflect the end time of
the job being expanded.
この新しいジョブの制限時間は、拡張されるジョブの終了時間を反映するように自動的に設定されます。
This new job's generic resources specification will be automatically set
equal to that of the job being merged to.
この新しいジョブの総称リソース仕様は、マージされるジョブの仕様に自動的に等しく設定されます。
This is due to the current Slurm
restriction of all nodes associated with a job needing to have the same
generic resource specification (i.e. a job can not have one GPU on one
node and two GPUs on another node), although this restriction may be removed
in the future.
これは、ジョブに関連付けられたすべてのノードの現在のSlurm制限によるものです。同じ汎用リソース指定が必要です(つまり、ジョブは1つのノードに1つのGPUと別のノードに2つのGPUを持つことはできません)。ただし、この制限は未来。
This restriction can pose some problems when both jobs can be
allocated resources on the same node, in which case the generic resources
allocated to the new job will be released.
この制限は、両方のジョブに同じノード上のリソースを割り当てることができる場合にいくつかの問題を引き起こす可能性があります。その場合、新しいジョブに割り当てられた汎用リソースが解放されます。
If the jobs are allocated resources
on different nodes, the generic resources associated with the resulting job
allocation after the merge will be consistent as expected.
ジョブに異なるノードのリソースが割り当てられている場合、マージ後のジョブの割り当てに関連する一般的なリソースは、期待どおりに一貫します。
Any licenses associated with the new job will be added to those available in
the job being merged to.
新しいジョブに関連付けられているライセンスは、マージされるジョブで使用可能なライセンスに追加されます。
Note that partition and Quality Of Service (QOS) limits will be applied
independently to the new job allocation so the expanded job may exceed size
limits configured for an individual job.
パーティションとサービスの品質(QOS)の制限は、新しいジョブの割り当てに個別に適用されるため、拡張されたジョブは、個々のジョブに構成されたサイズ制限を超える可能性があることに注意してください。
After the new job is allocated resources, merge that job's allocation
into that of the original job by executing:
新しいジョブにリソースが割り当てられたら、次のコマンドを実行して、そのジョブの割り当てを元のジョブの割り当てにマージします。
scontrol update jobid=<jobid> NumNodes=0
scontrol update jobid = NumNodes = 0
The jobid above is that of the job to relinquish its resources.
上記のジョブIDは、そのリソースを放棄するジョブのものです。
To provide more control over when the job expansion occurs, the resources are
not merged into the original job until explicitly requested.
ジョブの拡張が発生するタイミングをより詳細に制御するために、明示的に要求されるまで、リソースは元のジョブにマージされません。
These resources will be transferred to the original job and the scontrol
command will generate a script to reset variables in the second
job's environment to reflect its modified resource allocation (which would
be no resources).
これらのリソースは元のジョブに転送され、scontrolコマンドはスクリプトを生成して、2番目のジョブの環境で変数をリセットし、変更されたリソース割り当て(リソースがない)を反映します。
One would normally exit this second job at this point, since it has no
associated resources.
関連するリソースがないため、通常、この時点でこの2番目のジョブを終了します。
In order to generate a script to modify the environment variables for the
expanded job, execute:
拡張ジョブの環境変数を変更するスクリプトを生成するには、次を実行します。
scontrol update jobid=<jobid> NumNodes=ALL
scontrol update jobid = NumNodes = ALL
Then execute the script generated.
次に、生成されたスクリプトを実行します。
Note that this command does not change the original job's size, but only
generates the script to change its environment variables.
このコマンドは元のジョブのサイズを変更せず、環境変数を変更するスクリプトを生成するだけであることに注意してください。
Until the environment variables are modified (e.g. the job's node count,
CPU count, hostlist, etc.), any srun command will only consider the resources
in the original resource allocation.
環境変数(ジョブのノード数、CPU数、ホストリストなど)が変更されるまで、srunコマンドは元のリソース割り当てのリソースのみを考慮します。
Note that the original job may have active job steps at the time of its
expansion, but they will not be affected by the change.
元のジョブは展開時にアクティブなジョブステップを持っている可能性がありますが、変更による影響はありません。
An example of the procedure is shown below in which the original job
allocation waits until the second resource allocation request can be
satisfied.
手順の例を以下に示します。この場合、元のジョブ割り当ては、2番目のリソース割り当て要求が満たされるまで待機します。
The job requesting additional resources could also use the sbatch
command and permit the original job to continue execution at its initial size.
追加のリソースを要求するジョブは、sbatchコマンドを使用して、元のジョブが初期サイズで実行を継続できるようにすることもできます。
Note that the development of additional user tools to manage Slurm resource
allocations is planned in the future to make this process both simpler and
more flexible.
Slurmリソース割り当てを管理するための追加のユーザーツールの開発は、このプロセスをより簡単でより柔軟にするために、将来計画されていることに注意してください。
$ salloc -N4 -C haswell bash salloc: Granted job allocation 65542 $ srun hostname icrm1 icrm2 icrm3 icrm4 $ salloc -N4 -C knl,snc4,flat --dependency=expand:$SLURM_JOB_ID bash salloc: Granted job allocation 65543 $ scontrol update jobid=$SLURM_JOB_ID NumNodes=0 To reset Slurm environment variables, execute For bash or sh shells: . ./slurm_job_65543_resize.sh For csh shells: source ./slurm_job_65543_resize.csh $ exit exit salloc: Relinquishing job allocation 65543 $ scontrol update jobid=$SLURM_JOB_ID NumNodes=ALL To reset Slurm environment variables, execute For bash or sh shells: . ./slurm_job_65542_resize.sh For csh shells: source ./slurm_job_65542_resize.csh $ . ./slurm_job_${SLURM_JOB_ID}_resize.sh $ srun hostname icrm1 icrm2 icrm3 icrm4 icrm5 icrm6 icrm7 icrm8 $ exit exit salloc: Relinquishing job allocation 65542
Why is my MPICH2 or MVAPICH2 job not running with
Slurm? Why does the DAKOTA program not run with Slurm?
MPICH2またはMVAPICH2ジョブがSlurmで実行されないのはなぜですか?DAKOTAプログラムがSlurmで実行されないのはなぜですか?
The Slurm library used to support MPICH2 or MVAPICH2 references a variety of
symbols.
MPICH2またはMVAPICH2をサポートするために使用されるSlurmライブラリは、さまざまなシンボルを参照します。
If those symbols resolve to functions or variables in your program
rather than the appropriate library, the application will fail.
これらのシンボルが適切なライブラリではなくプログラム内の関数または変数に解決されると、アプリケーションは失敗します。
For example
DAKOTA, versions 5.1 and
older, contains a function named regcomp, which will get used rather
than the POSIX regex functions.
たとえば、DAKOTA、バージョン5.1以前には、POSIX regex関数ではなく使用されるregcompという名前の関数が含まれています。
Rename DAKOTA's function and
references from regcomp to something else to make it work properly.
DAKOTAの関数と参照の名前をregcompから別の名前に変更して、正しく機能するようにします。
Why does squeue (and "scontrol show
jobid") sometimes not display a job's estimated start time?
squeue(および「scontrol show jobid」)がジョブの推定開始時刻を表示しないことがあるのはなぜですか?
When the backfill scheduler is configured, it provides an estimated start time
for jobs that are candidates for backfill.
バックフィルスケジューラを構成すると、バックフィルの候補となるジョブの推定開始時間が提供されます。
Pending jobs with dependencies
will not have an estimate as it is difficult to predict what resources will
be available when the jobs they are dependent on terminate.
依存関係のある保留中のジョブは、依存しているジョブが終了したときに使用可能なリソースを予測することが難しいため、見積もりはありません。
Also note that
the estimate is better for jobs expected to start soon, as most running jobs
end before their estimated time.
また、ほとんどの実行中のジョブは推定時間より前に終了するため、推定はすぐに開始されることが予想されるジョブの方が優れていることにも注意してください。
There are other restrictions on backfill that
may apply. See the backfill section for more details.
適用される可能性のあるバックフィルには他にも制限があります。詳細については、バックフィルのセクションを参照してください。
How can I run an Ansys program with Slurm?
SlurmでAnsysプログラムを実行するにはどうすればよいですか?
If you are talking about an interactive run of the Ansys app, then you can use
this simple script (it is for Ansys Fluent):
Ansysアプリのインタラクティブな実行について話している場合は、次の簡単なスクリプトを使用できます(Ansys Fluent用です)。
$ cat ./fluent-srun.sh #!/usr/bin/env bash HOSTSFILE=.hostlist-job$SLURM_JOB_ID if [ "$SLURM_PROCID" == "0" ]; then srun hostname -f > $HOSTSFILE fluent -t $SLURM_NTASKS -cnf=$HOSTSFILE -ssh 3d rm -f $HOSTSFILE fi exit 0
To run an interactive session, use srun like this:
インタラクティブセッションを実行するには、次のようにsrunを使用します。
$ srun -n <tasks> ./fluent-srun.sh
How can a job in a complete or failed state be requeued?
完了または失敗した状態のジョブをどのように再キューイングできますか?
Slurm supports requeueing jobs in a done or failed state. Use the
command:
Slurmは、完了または失敗した状態のジョブの再キューイングをサポートしています。次のコマンドを使用します。
scontrol requeue job_id
The job will then be requeued back in the PENDING state and scheduled again.
その後、ジョブはPENDING状態で再度キューに入れられ、再度スケジュールされます。
See man(1) scontrol.
man(1)scontrolを参照してください。
Consider a simple job like this:
このような簡単な仕事を考えてみましょう:
$cat zoppo #!/bin/sh echo "hello, world" exit 10 $sbatch -o here ./zoppo Submitted batch job 10
The job finishes in FAILED state because it exits with
a non zero value.
ジョブはゼロ以外の値で終了するため、FAILED状態で終了します。
We can requeue the job back to
the PENDING state and the job will be dispatched again.
ジョブをPENDING状態に再キューイングすると、ジョブが再びディスパッチされます。
$ scontrol requeue 10 $ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 10 mira zoppo david PD 0:00 1 (NonZeroExitCode) $ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 10 mira zoppo david R 0:03 1 alanz1
Slurm supports requeuing jobs in a hold state with the command:
Slurmは、次のコマンドを使用して、ホールド状態のジョブの再キューイングをサポートします。
'scontrol requeuehold job_id'
The job can be in state RUNNING, SUSPENDED, COMPLETED or FAILED
before being requeued.
ジョブは、キューに再登録される前に、RUNNING、SUSPENDED、COMPLETED、またはFAILEDの状態になる可能性があります。
$ scontrol requeuehold 10 $ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 10 mira zoppo david PD 0:00 1 (JobHeldUser)
Slurm documentation refers to CPUs, cores and threads.
Slurmのドキュメントでは、CPU、コア、スレッドについて言及しています。
What exactly is considered a CPU?
正確には何がCPUと見なされますか?
If your nodes are configured with hyperthreading, then a CPU is equivalent
to a hyperthread.
ノードがハイパースレッディングで構成されている場合、CPUはハイパースレッドと同等です。
Otherwise a CPU is equivalent to a core.
それ以外の場合、CPUはコアと同等です。
You can determine if your nodes have more than one thread per core
using the command "scontrol show node" and looking at the values of
"ThreadsPerCore".
「scontrol show node」コマンドを使用して「ThreadsPerCore」の値を確認すると、ノードにコアごとに複数のスレッドがあるかどうかを確認できます。
Note that even on systems with hyperthreading enabled, the resources will
generally be allocated to jobs at the level of a core (see NOTE below).
ハイパースレッディングが有効になっているシステムでも、リソースは通常、コアのレベルでジョブに割り当てられることに注意してください(下記の注を参照)。
Two different jobs will not share a core except through the use of a partition
OverSubscribe configuration parameter.
2つの異なるジョブは、パーティションのOverSubscribe構成パラメーターを使用しない限り、コアを共有しません。
For example, a job requesting resources for three tasks on a node with
ThreadsPerCore=2 will be allocated two full cores.
たとえば、ThreadsPerCore = 2のノードで3つのタスクのリソースを要求するジョブには、2つのフルコアが割り当てられます。
Note that Slurm commands contain a multitude of options to control
resource allocation with respect to base boards, sockets, cores and threads.
Slurmコマンドには、ベースボード、ソケット、コア、スレッドに関するリソース割り当てを制御するための多数のオプションが含まれていることに注意してください。
(NOTE: An exception to this would be if the system administrator
configured SelectTypeParameters=CR_CPU and each node's CPU count without its
socket/core/thread specification.
(注:これに対する例外は、システム管理者がSelectTypeParameters = CR_CPUを構成し、各ノードのソケット/コア/スレッド指定なしのCPU数を構成した場合です。
In that case, each thread would be
independently scheduled as a CPU.
その場合、各スレッドは独立してCPUとしてスケジュールされます。
This is not a typical configuration.)
これは一般的な構成ではありません。)
What is the difference between the sbatch
and srun commands?
sbatchコマンドとsrunコマンドの違いは何ですか?
The srun command has two different modes of operation.
srunコマンドには、2つの異なる操作モードがあります。
First, if not run within
an existing job (i.e. not within a Slurm job allocation created by salloc or
sbatch), then it will create a job allocation and spawn an application.
まず、既存のジョブ内で実行されていない場合(つまり、sallocまたはsbatchによって作成されたSlurmジョブ割り当て内ではない場合)、ジョブ割り当てが作成され、アプリケーションが生成されます。
If run within an existing allocation, the srun command only spawns the
application.
既存の割り当て内で実行する場合、srunコマンドはアプリケーションのみを生成します。
For this question, we will only address the first mode of operation and compare
creating a job allocation using the sbatch and srun commands.
この質問では、最初の操作モードのみを取り上げ、sbatchコマンドとsrunコマンドを使用したジョブ割り当ての作成を比較します。
The srun command is designed for interactive use, with someone monitoring
the output.
srunコマンドはインタラクティブな使用のために設計されており、誰かが出力を監視しています。
The output of the application is seen as output of the srun command,
typically at the user's terminal.
アプリケーションの出力は、通常はユーザーの端末で、srunコマンドの出力と見なされます。
The sbatch command is designed to submit a script for later execution and its
output is written to a file.
sbatchコマンドは、後で実行するためにスクリプトを送信するように設計されており、その出力はファイルに書き込まれます。
Command options used in the job allocation are almost identical.
ジョブの割り当てで使用されるコマンドオプションはほとんど同じです。
The most noticeable difference in options is that the sbatch command supports
the concept of job arrays, while srun does not.
オプションの最も顕著な違いは、sbatchコマンドがジョブ配列の概念をサポートするのに対し、srunはサポートしないことです。
Another significant difference is in fault tolerance.
もう1つの大きな違いは、フォールトトレランスです。
Failures involving sbatch jobs typically result in the job being requeued
and executed again, while failures involving srun typically result in an
error message being generated with the expectation that the user will respond
in an appropriate fashion.
sbatchジョブに関連する障害では、通常、ジョブが再度キューに入れられて再度実行されますが、srunに関連する障害では、通常、ユーザーが適切に応答することを期待してエラーメッセージが生成されます。
Can squeue output be color coded?
squeueの出力を色分けできますか?
The squeue command output is not color coded, but other tools can be used to
add color. One such tool is ColorWrapper
(https://github.com/rrthomas/cw).
squeueコマンドの出力は色分けされていませんが、他のツールを使用して色を追加できます。そのようなツールの1つがColorWrapper(https://github.com/rrthomas/cw)です。
A sample ColorWrapper configuration file and output are shown below.
ColorWrapper設定ファイルのサンプルと出力を以下に示します。
path /bin:/usr/bin:/sbin:/usr/sbin:<env> usepty base green+ match red:default (Resources) match black:default (null) match black:cyan N/A regex cyan:default PD .*$ regex red:default ^\d*\s*C .*$ regex red:default ^\d*\s*CG .*$ regex red:default ^\d*\s*NF .*$ regex white:default ^JOBID.*

Can Slurm export an X11 display on an allocated compute node?
Slurmは割り当てられた計算ノードでX11ディスプレイをエクスポートできますか?
You can use the X11 builtin feature starting at version 17.11.
バージョン11.11以降のX11組み込み機能を使用できます。
It is enabled by setting PrologFlags=x11 in slurm.conf.
slurm.confでPrologFlags = x11を設定すると有効になります。
Other X11 plugins must be deactivated.
他のX11プラグインは無効にする必要があります。
Run it as shown:
次のように実行します。
$ ssh -X user@login1 $ srun -n1 --pty --x11 xclock
An alternative for older versions is to build and install an optional SPANK
plugin for that functionality.
古いバージョンの代替手段は、その機能用のオプションのSPANKプラグインをビルドしてインストールすることです。
Instructions to build and install the plugin
follow.
プラグインをビルドしてインストールする手順は次のとおりです。
This SPANK plugin will not work if used in combination with native X11
support so you must disable it compiling Slurm with --disable-x11.
このSPANKプラグインは、ネイティブX11サポートと組み合わせて使用すると機能しないため、-disable-x11でSlurmをコンパイルして無効にする必要があります。
This
plugin relies on openssh library and it provides features such as GSSAPI
support.
このプラグインはopensshライブラリに依存し、GSSAPIサポートなどの機能を提供します。
Update the Slurm installation path as needed:
必要に応じてSlurmインストールパスを更新します。
# It may be obvious, but don't forget the -X on ssh $ ssh -X alex@testserver.com # Get the plugin $ mkdir git $ cd git $ git clone https://github.com/hautreux/slurm-spank-x11.git $ cd slurm-spank-x11 # Manually edit the X11_LIBEXEC_PROG macro definition $ vi slurm-spank-x11.c $ vi slurm-spank-x11-plug.c $ grep "define X11_" slurm-spank-x11.c #define X11_LIBEXEC_PROG "/opt/slurm/17.02/libexec/slurm-spank-x11" $ grep "define X11_LIBEXEC_PROG" slurm-spank-x11-plug.c #define X11_LIBEXEC_PROG "/opt/slurm/17.02/libexec/slurm-spank-x11" # Compile $ gcc -g -o slurm-spank-x11 slurm-spank-x11.c $ gcc -g -I/opt/slurm/17.02/include -shared -fPIC -o x11.so slurm-spank-x11-plug.c # Install $ mkdir -p /opt/slurm/17.02/libexec $ install -m 755 slurm-spank-x11 /opt/slurm/17.02/libexec $ install -m 755 x11.so /opt/slurm/17.02/lib/slurm # Configure $ echo -e "optional x11.so" >> /opt/slurm/17.02/etc/plugstack.conf $ cd ~/tests # Run $ srun -n1 --pty --x11 xclock alex@node1's password:
Why is the srun --u/--unbuffered option adding
a carriage character return to my output?
srun --u /-unbufferedオプションがキャリッジリターンを出力に追加するのはなぜですか?
The libc library used by many programs internally buffers output rather than
writing it immediately.
多くのプログラムで使用されるlibcライブラリは、出力をすぐに書き込むのではなく、内部でバッファリングします。
This is done for performance reasons.
これは、パフォーマンス上の理由で行われます。
The only way to disable this internal buffering is to configure the program to
write to a pseudo terminal (PTY) rather than to a regular file.
この内部バッファリングを無効にする唯一の方法は、通常のファイルではなく疑似端末(PTY)に書き込むようにプログラムを構成することです。
This configuration causes some implementations of libc to prepend the
carriage return character before all line feed characters.
この構成により、libcの一部の実装では、すべての改行文字の前に復帰文字が付加されます。
Removing the carriage return character would result in desired formatting
in some instances, while causing bad formatting in other cases.
キャリッジリターン文字を削除すると、場合によっては適切なフォーマットになりますが、それ以外の場合はフォーマットが悪くなります。
In any case, Slurm is not adding the carriage return character, but displaying
the actual program's output.
いずれにせよ、Slurmは復帰文字を追加していませんが、実際のプログラムの出力を表示しています。
Why is sview not coloring/highlighting nodes
properly?
sviewがノードを適切に色付け/強調表示しないのはなぜですか?
sview color-coding is affected by the GTK theme.
sviewの色分けはGTKテーマの影響を受けます。
The node status grid
is made up of button widgets and certain GTK themes don't show the color
setting as desired.
ノードステータスグリッドはボタンウィジェットで構成されており、特定のGTKテーマは希望どおりに色設定を表示しません。
Changing GTK themes can restore proper color-coding.
GTKテーマを変更すると、適切な色分けが復元されます。
For Administrators
How is job suspend/resume useful?
ジョブの一時停止/再開はどのように役立ちますか?
Job suspend/resume is most useful to get particularly large jobs initiated
in a timely fashion with minimal overhead.
ジョブの一時停止/再開は、特に大きなジョブを最小限のオーバーヘッドでタイムリーに開始するのに最も役立ちます。
Say you want to get a full-system
job initiated.
システム全体のジョブを開始したいとします。
Normally you would need to either cancel all running jobs
or wait for them to terminate.
通常、実行中のすべてのジョブをキャンセルするか、ジョブが終了するまで待つ必要があります。
Canceling jobs results in the loss of
their work to that point from their beginning.
ジョブをキャンセルすると、最初からその時点までの作業が失われます。
Waiting for the jobs to terminate can take hours, depending upon your
system configuration.
システム構成によっては、ジョブが終了するまで数時間かかる場合があります。
A more attractive alternative is to suspend the
running jobs, run the full-system job, then resume the suspended jobs.
より魅力的な代替手段は、実行中のジョブを一時停止し、システム全体のジョブを実行してから、一時停止したジョブを再開することです。
This can easily be accomplished by configuring a special queue for
full-system jobs and using a script to control the process.
これは、フルシステムジョブ用の特別なキューを構成し、スクリプトを使用してプロセスを制御することで簡単に実現できます。
The script would stop the other partitions, suspend running jobs in those
partitions, and start the full-system partition.
スクリプトは他のパーティションを停止し、それらのパーティションで実行中のジョブを一時停止し、システム全体のパーティションを開始します。
The process can be reversed when desired.
必要に応じて、プロセスを逆にすることができます。
One can effectively gang schedule (time-slice) multiple jobs
using this mechanism, although the algorithms to do so can get quite
complex.
このメカニズムを使用すると、複数のジョブのスケジュール(タイムスライス)を効率的に連動させることができますが、そのためのアルゴリズムは非常に複雑になる可能性があります。
Suspending and resuming a job makes use of the SIGSTOP and SIGCONT
signals respectively, so swap and disk space should be sufficient to
accommodate all jobs allocated to a node, either running or suspended.
ジョブの一時停止と再開はそれぞれSIGSTOPシグナルとSIGCONTシグナルを使用するため、実行中または一時停止中のノードに割り当てられたすべてのジョブに対応するには、スワップ領域とディスク領域で十分です。
Why is a node shown in state
DOWN when the node has registered for service?
ノードがサービスに登録されているのに、ノードがDOWN状態で表示されるのはなぜですか?
The configuration parameter ReturnToService in slurm.conf
controls how DOWN nodes are handled.
slurm.confの構成パラメーターReturnToServiceは、DOWNノードの処理方法を制御します。
Set its value to one in order for DOWN nodes to automatically be
returned to service once the slurmd daemon registers
with a valid node configuration.
slurmdデーモンが有効なノード構成に登録されると、DOWNノードが自動的にサービスに戻るように、その値を1に設定します。
A value of zero is the default and results in a node staying DOWN
until an administrator explicitly returns it to service using
the command "scontrol update NodeName=whatever State=RESUME".
ゼロの値がデフォルトであり、管理者がコマンド「scontrol update NodeName = whatever State = RESUME」を使用して明示的にサービスに戻すまで、ノードはDOWNのままです。
See "man slurm.conf" and "man scontrol" for more
details.
詳細については、「man slurm.conf」および「man scontrol」を参照してください。
What happens when a node crashes?
ノードがクラッシュするとどうなりますか?
A node is set DOWN when the slurmd daemon on it stops responding
for SlurmdTimeout as defined in slurm.conf.
slurm.confで定義されているように、ノードのslurmdデーモンがSlurmdTimeoutの応答を停止すると、ノードはDOWNに設定されます。
The node can also be set DOWN when certain errors occur or the
node's configuration is inconsistent with that defined in slurm.conf.
特定のエラーが発生した場合、またはノードの構成がslurm.confで定義されたものと一致しない場合、ノードをDOWNに設定することもできます。
Any active job on that node will be killed unless it was submitted
with the srun option --no-kill.
そのノード上のアクティブなジョブは、srunオプション--no-killを使用して送信されない限り、強制終了されます。
Any active job step on that node will be killed.
そのノード上のアクティブなジョブステップはすべて強制終了されます。
See the slurm.conf and srun man pages for more information.
詳細については、slurm.confおよびsrunのmanページを参照してください。
How can I control the execution of multiple
jobs per node?
ノードごとに複数のジョブの実行を制御するにはどうすればよいですか?
There are two mechanisms to control this.
これを制御するメカニズムは2つあります。
If you want to allocate individual processors on a node to jobs,
configure SelectType=select/cons_res.
ノード上の個々のプロセッサをジョブに割り当てる場合は、SelectType = select / cons_resを構成します。
See Consumable Resources in Slurm
for details about this configuration.
この構成の詳細については、Slurmの消費可能なリソースを参照してください。
If you want to allocate whole nodes to jobs, configure
configure SelectType=select/linear.
ノード全体をジョブに割り当てる場合は、configure SelectType = select / linearを構成します。
Each partition also has a configuration parameter OverSubscribe
that enables more than one job to execute on each node.
各パーティションには、各ノードで複数のジョブを実行できるようにする構成パラメーターOverSubscribeもあります。
See man slurm.conf for more information about these
configuration parameters.
これらの構成パラメーターの詳細については、man slurm.confを参照してください。
When the Slurm daemon starts, it
prints "cannot resolve X plugin operations" and exits.
Slurmデーモンが起動すると、「Xプラグイン操作を解決できません」と出力して終了します。
What does this mean?
これは何を意味するのでしょうか?
This means that symbols expected in the plugin were
not found by the daemon.
これは、プラグインで予期されるシンボルがデーモンによって検出されなかったことを意味します。
This typically happens when the
plugin was built or installed improperly or the configuration
file is telling the plugin to use an old plugin (say from the
previous version of Slurm).
これは通常、プラグインが正しく構築またはインストールされていないか、構成ファイルがプラグインに古いプラグインを使用するように指示している場合に発生します(たとえば、Slurmの以前のバージョンから)。
Restart the daemon in verbose mode
for more information (e.g. "slurmctld -Dvvvvv").
詳細については、デーモンを詳細モードで再起動してください(例: "slurmctld -Dvvvvv")。
How can I exclude some users from pam_slurm?
一部のユーザーをpam_slurmから除外するにはどうすればよいですか?
CAUTION: Please test this on a test machine/VM before you actually do
this on your Slurm computers.
注意:実際にSlurmコンピューターでテストする前に、テストマシン/ VMでテストしてください。
Step 1. Make sure pam_listfile.so exists on your system.
手順1.システムにpam_listfile.soが存在することを確認します。
The following command is an example on Redhat 6:
次のコマンドはRedhat 6の例です。
ls -la /lib64/security/pam_listfile.so
Step 2. Create user list (e.g. /etc/ssh/allowed_users):
ステップ2.ユーザーリストを作成します(例:/ etc / ssh / allowed_users):
# /etc/ssh/allowed_users root myadmin
And, change file mode to keep it secret from regular users(Optional):
そして、ファイルモードを変更して、通常のユーザーからそれを秘密に保ちます(オプション):
chmod 600 /etc/ssh/allowed_users
NOTE: root is not necessarily listed on the allowed_users, but I
feel somewhat safe if it's on the list.
注:rootは必ずしもallowed_usersに記載されているわけではありませんが、リストに記載されていれば多少安全だと感じています。
Step 3. On /etc/pam.d/sshd, add pam_listfile.so with sufficient flag
before pam_slurm.so (e.g. my /etc/pam.d/sshd looks like this):
ステップ3. /etc/pam.d/sshdで、pam_slurm.soの前に十分なフラグを付けてpam_listfile.soを追加します(たとえば、/ etc / pam.d / sshdは次のようになります)。
#%PAM-1.0 auth required pam_sepermit.so auth include password-auth account sufficient pam_listfile.so item=user sense=allow file=/etc/ssh/allowed_users onerr=fail account required pam_slurm.so account required pam_nologin.so account include password-auth password include password-auth # pam_selinux.so close should be the first session rule session required pam_selinux.so close session required pam_loginuid.so # pam_selinux.so open should only be followed by sessions to be executed in the user context session required pam_selinux.so open env_params session optional pam_keyinit.so force revoke session include password-auth
(Information courtesy of Koji Tanaka, Indiana University)
(情報提供:インディアナ大学田中浩二)
How can I dry up the workload for a
maintenance period?
メンテナンス期間のワークロードをどのように枯渇させることができますか?
Create a resource reservation as described b.
説明に従ってリソース予約を作成しますb。
Slurm's
Resource Reservation Guide.
Slurmのリソース予約ガイド。
How can PAM be used to control a user's limits on
or access to compute nodes?
PAMを使用して、計算ノードに対するユーザーの制限またはアクセスを制御するにはどうすればよいですか?
To control a user's limits on a compute node:
計算ノードでのユーザーの制限を制御するには:
First, enable Slurm's use of PAM by setting UsePAM=1 in
slurm.conf.
まず、slurm.confでUsePAM = 1を設定して、SlurmによるPAMの使用を有効にします。
Second, establish PAM configuration file(s) for Slurm in /etc/pam.conf
or the appropriate files in the /etc/pam.d directory (e.g.
/etc/pam.d/sshd by adding the line "account required pam_slurm.so".
次に、/ etc / pam.conf内のSlurmのPAM構成ファイル、または/etc/pam.dディレクトリ内の適切なファイル(/etc/pam.d/sshdなど)に、「account required pam_slurm。そう"。
A basic configuration you might use is:
使用できる基本的な構成は次のとおりです。
account required pam_unix.so account required pam_slurm.so auth required pam_localuser.so session required pam_limits.so
Third, set the desired limits in /etc/security/limits.conf.
3番目に、/ etc / security / limits.confで必要な制限を設定します。
For example, to set the locked memory limit to unlimited for all users:
たとえば、すべてのユーザーに対してロックされたメモリ制限を無制限に設定するには、次のようにします。
* hard memlock unlimited * soft memlock unlimited
Finally, you need to disable Slurm's forwarding of the limits from the
session from which the srun initiating the job ran.
最後に、ジョブを開始したsrunが実行されたセッションからのSlurmによる制限の転送を無効にする必要があります。
By default
all resource limits are propagated from that session.
デフォルトでは、すべてのリソース制限がそのセッションから伝達されます。
For example, adding
the following line to slurm.conf will prevent the locked memory
limit from being propagated:PropagateResourceLimitsExcept=MEMLOCK.
たとえば、slurm.confに次の行を追加すると、ロックされたメモリ制限が伝達されなくなります。PropagateResourceLimitsExcept= MEMLOCK。
To control a user's access to a compute node:
計算ノードへのユーザーのアクセスを制御するには:
The pam_slurm_adopt and pam_slurm modules prevent users from
logging into nodes that they have not been allocated (except for user
root, which can always login).
pam_slurm_adoptモジュールとpam_slurmモジュールは、割り当てられていないノードにユーザーがログインできないようにします(常にログインできるユーザーrootを除く)。
They are both included with the Slurm distribution.
どちらもSlurmディストリビューションに含まれています。
The pam_slurm_adopt module is highly recommended for most installations,
and is documented in its own guide.
pam_slurm_adoptモジュールは、ほとんどのインストールで強く推奨されており、独自のガイドに記載されています。
pam_slurm is older and less functional.
pam_slurmは古く、機能的ではありません。
These modules are built by default for RPM packages, but can be disabled using
the .rpmmacros option "%_without_pam 1" or by entering the command line
option "--without pam" when the configure program is executed.
これらのモジュールはRPMパッケージのデフォルトでビルドされますが、.rpmmacrosオプション "%_without_pam 1"を使用するか、configureプログラムの実行時にコマンドラインオプション "--without pam"を入力することで無効にできます。
Their source code is in the "contribs/pam" and "contribs/pam_slurm_adopt"
directories respectively.
それらのソースコードはそれぞれ「contribs / pam」および「contribs / pam_slurm_adopt」ディレクトリにあります。
The use of either pam_slurm_adopt or pam_slurm does not require
UsePAM being set. The two uses of PAM are independent.
pam_slurm_adoptまたはpam_slurmを使用する場合、UsePAMを設定する必要はありません。PAMの2つの使用法は独立しています。
Why are jobs allocated nodes and then unable
to initiate programs on some nodes?
ジョブがノードに割り当てられ、一部のノードでプログラムを開始できないのはなぜですか?
This typically indicates that the time on some nodes is not consistent
with the node on which the slurmctld daemon executes.
これは通常、一部のノードの時間が、slurmctldデーモンが実行されるノードと一致していないことを示しています。
In order to
initiate a job step (or batch job), the slurmctld daemon generates
a credential containing a time stamp.
ジョブステップ(またはバッチジョブ)を開始するために、slurmctldデーモンはタイムスタンプを含む資格情報を生成します。
If the slurmd daemon
receives a credential containing a time stamp later than the current
time or more than a few minutes in the past, it will be rejected.
slurmdデーモンが、現在時刻よりも後のタイムスタンプまたは過去数分よりも長いタイムスタンプを含む資格情報を受け取った場合、それは拒否されます。
If you check in the SlurmdLogFile on the nodes of interest, you
will likely see messages of this sort: "Invalid job credential from
<some IP address>: Job credential expired."
対象のノードでSlurmdLogFileをチェックインすると、次のようなメッセージが表示される可能性があります。 :ジョブ資格情報の有効期限が切れています。」
Make the times
consistent across all of the nodes and all should be well.
すべてのノードで時間を一致させ、すべてが適切である必要があります。
Why does slurmctld log that some nodes
are not responding even if they are not in any partition?
一部のノードがどのパーティションにもない場合でも、slurmctldが応答していないことをログに記録するのはなぜですか?
The slurmctld daemon periodically pings the slurmd
daemon on every configured node, even if not associated with any
partition.
slurmctldデーモンは、パーティションに関連付けられていない場合でも、構成されたすべてのノードのslurmdデーモンに定期的にpingします。
You can control the frequency of this ping with the
SlurmdTimeout configuration parameter in slurm.conf.
このpingの頻度は、slurm.confのSlurmdTimeout構成パラメーターで制御できます。
How should I relocate the primary or
backup controller?
プライマリコントローラまたはバックアップコントローラを再配置するにはどうすればよいですか?
If the cluster's computers used for the primary or backup controller
will be out of service for an extended period of time, it may be desirable
to relocate them.
プライマリコントローラーまたはバックアップコントローラーに使用されているクラスターのコンピューターが長期間サービスを停止する場合は、それらを再配置することが望ましい場合があります。
In order to do so, follow this procedure:
これを行うには、次の手順に従います。
- Stop all Slurm daemons
すべてのSlurmデーモンを停止します - Modify the SlurmctldHost values in the slurm.conf file
slurm.confファイルのSlurmctldHost値を変更します - Distribute the updated slurm.conf file to all nodes
更新されたslurm.confファイルをすべてのノードに配布します - Copy the StateSaveLocation directory to the new host and
make sure the permissions allow the SlurmUser to read and write it.
StateSaveLocationディレクトリーを新しいホストにコピーし、許可がSlurmUserによる読み取りと書き込みを許可していることを確認します。
- Restart all Slurm daemons
すべてのSlurmデーモンを再起動します
There should be no loss of any running or pending jobs.
実行中または保留中のジョブが失われることはありません。
Ensure that
any nodes added to the cluster have a current slurm.conf file
installed.
クラスターに追加されたすべてのノードに最新のslurm.confファイルがインストールされていることを確認します。
CAUTION: If two nodes are simultaneously configured as the primary
controller (two nodes on which SlurmctldHost specify the local host
and the slurmctld daemon is executing on each), system behavior will be
destructive.
注意:2つのノードが同時にプライマリコントローラーとして構成されている場合(SlurmctldHostがローカルホストを指定し、slurmctldデーモンがそれぞれで実行されている2つのノード)、システムの動作が破壊されます。
If a compute node has an incorrect SlurmctldHost parameter,
that node may be rendered unusable, but no other harm will result.
計算ノードに誤ったSlurmctldHostパラメーターがある場合、そのノードは使用できなくなる可能性がありますが、その他の害は発生しません。
Can multiple Slurm systems be run in
parallel for testing purposes?
テスト目的で複数のSlurmシステムを並行して実行できますか?
Yes, this is a great way to test new versions of Slurm.
はい、これはSlurmの新しいバージョンをテストする優れた方法です。
Just install the test version in a different location with a different
slurm.conf.
slurm.confが異なる別の場所にテストバージョンをインストールするだけです。
The test system's slurm.conf should specify different
pathnames and port numbers to avoid conflicts.
テストシステムのslurm.confでは、競合を避けるために異なるパス名とポート番号を指定する必要があります。
The only problem is if more than one version of Slurm is configured
with burst_buffer/* plugins or others that may interact with external
system APIs.
唯一の問題は、複数のバージョンのSlurmが、burst_buffer / *プラグイン、または外部システムAPIと相互作用する可能性のある他のプラグインで構成されている場合です。
In that case, there can be conflicting API requests from
the different Slurm systems.
その場合、異なるSlurmシステムからのAPIリクエストが競合する可能性があります。
This can be avoided by configuring the test system with burst_buffer/none.
これは、burst_buffer / noneを使用してテストシステムを構成することで回避できます。
Can Slurm emulate a larger cluster?
Slurmはより大きなクラスターをエミュレートできますか?
Yes, this can be useful for testing purposes.
はい、これはテスト目的で役立ちます。
It has also been used to partition "fat" nodes into multiple Slurm nodes.
また、「脂肪」ノードを複数のSlurmノードに分割するためにも使用されています。
There are two ways to do this.
これを行うには2つの方法があります。
The best method for most conditions is to run one slurmd
daemon per emulated node in the cluster as follows.
ほとんどの状況に最適な方法は、次のように、クラスター内のエミュレートされたノードごとに1つのslurmdデーモンを実行することです。
- When executing the configure program, use the option
--enable-multiple-slurmd (or add that option to your ~/.rpmmacros
file).
configureプログラムを実行するときは、オプション--enable-multiple-slurmdを使用します(または〜/ .rpmmacrosファイルにそのオプションを追加します)。 - Build and install Slurm in the usual manner.
通常の方法でSlurmをビルドしてインストールします。 - In slurm.conf define the desired node names (arbitrary
names used only by Slurm) as NodeName along with the actual
address of the physical node in NodeHostname.
slurm.confで、目的のノード名(Slurmでのみ使用される任意の名前)をNodeHostnameの物理ノードの実際のアドレスと共にNodeNameとして定義します。
Multiple NodeName values can be mapped to a single NodeHostname.
複数のNodeName値を単一のNodeHostnameにマップできます。
Note that each NodeName on a single physical node needs to be configured to use a different port number (set Port to a unique value on each line for each node).
単一の物理ノードの各NodeNameは、異なるポート番号を使用するように構成する必要があることに注意してください(Portを各ノードの各行で一意の値に設定します)。
You will also want to use the "%n" symbol in slurmd related path options in slurm.conf (SlurmdLogFile and SlurmdPidFile).
また、slurm.confのslurmd関連のパスオプション(SlurmdLogFileおよびSlurmdPidFile)で「%n」記号を使用することもできます。 - When starting the slurmd daemon, include the NodeName
of the node that it is supposed to serve on the execute line (e.g.
"slurmd -N hostname").
slurmdデーモンを起動するときは、実行行で機能することになっているノードのNodeNameを含めます(たとえば、「slurmd -N hostname」)。 - This is an example of the slurm.conf file with the emulated nodes
and ports configuration.
これは、エミュレートされたノードとポートの構成を含むslurm.confファイルの例です。
Any valid value for the CPUs, memory or other valid node resources can be specified.
CPU、メモリ、またはその他の有効なノードリソースに有効な値を指定できます。
NodeName=dummy26[1-100] NodeHostName=achille Port=[6001-6100] NodeAddr=127.0.0.1 CPUs=4 RealMemory=6000 PartitionName=mira Default=yes Nodes=dummy26[1-100]
See the
Programmers Guide
for more details about configuring multiple slurmd support.
複数のslurmdサポートの構成の詳細については、プログラマガイドを参照してください。
In order to emulate a really large cluster, it can be more
convenient to use a single slurmd daemon.
非常に大きなクラスターをエミュレートするには、単一のslurmdデーモンを使用する方が便利です。
That daemon will not be able to launch many tasks, but can
suffice for developing or testing scheduling software.
そのデーモンは多くのタスクを起動することはできませんが、スケジューリングソフトウェアの開発またはテストには十分です。
Do not run job steps with more than a couple of tasks each
or execute more than a few jobs at any given time.
一度に2つ以上のタスクを含むジョブステップを実行したり、同時にいくつかのジョブを実行したりしないでください。
Doing so may result in the slurmd daemon exhausting its
memory and failing.
これを行うと、slurmdデーモンがメモリを使い果たして失敗する可能性があります。
Use this method with caution.
この方法は注意して使用してください。
- Execute the configure program with your normal options
plus --enable-front-end (this will define HAVE_FRONT_END in
the resulting config.h file.
通常のオプションと--enable-front-endを指定してconfigureプログラムを実行します(これにより、生成されるconfig.hファイルでHAVE_FRONT_ENDが定義されます。 - Build and install Slurm in the usual manner.
通常の方法でSlurmをビルドしてインストールします。 - In slurm.conf define the desired node names (arbitrary
names used only by Slurm) as NodeName along with the actual
name and address of the one physical node in NodeHostName
and NodeAddr.
slurm.confで、NodeHostNameとNodeAddrの1つの物理ノードの実際の名前とアドレスとともに、目的のノード名(Slurmでのみ使用される任意の名前)をNodeNameとして定義します。
Up to 64k nodes can be configured in this virtual cluster.
この仮想クラスターでは、最大64kのノードを構成できます。 - Start your slurmctld and one slurmd daemon.
slurmctldと1つのslurmdデーモンを起動します。
It is advisable to use the "-c" option to start the daemons without trying to preserve any state files from previous executions.
「-c」オプションを使用して、以前の実行からの状態ファイルを保存しようとせずにデーモンを起動することをお勧めします。
Be sure to use the "-c" option when switching from this mode too.
このモードから切り替える場合も、必ず「-c」オプションを使用してください。 - Create job allocations as desired, but do not run job steps
with more than a couple of tasks.
必要に応じてジョブの割り当てを作成しますが、2つ以上のタスクでジョブステップを実行しないでください。
$ ./configure --enable-debug --enable-front-end --prefix=... --sysconfdir=... $ make install $ grep NodeHostName slurm.conf NodeName=dummy[1-1200] NodeHostName=localhost NodeAddr=127.0.0.1 $ slurmctld -c $ slurmd -c $ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST pdebug* up 30:00 1200 idle dummy[1-1200] $ cat tmp #!/bin/bash sleep 30 $ srun -N200 -b tmp srun: jobid 65537 submitted $ srun -N200 -b tmp srun: jobid 65538 submitted $ srun -N800 -b tmp srun: jobid 65539 submitted $ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 65537 pdebug tmp jette R 0:03 200 dummy[1-200] 65538 pdebug tmp jette R 0:03 200 dummy[201-400] 65539 pdebug tmp jette R 0:02 800 dummy[401-1200]
Can Slurm emulate nodes with more
resources than physically exist on the node?
Slurmは、ノードに物理的に存在するよりも多くのリソースを持つノードをエミュレートできますか?
Yes. In the slurm.conf file, configure SlurmdParameters=config_overrides
and specify
any desired node resource specifications (CPUs, Sockets,
CoresPerSocket, ThreadsPerCore, and/or TmpDisk).
はい。slurm.confファイルで、SlurmdParameters = config_overridesを構成し、必要なノードリソース仕様(CPU、ソケット、CoresPerSocket、ThreadsPerCore、TmpDisk、あるいはその両方)を指定します。
Slurm will use the resource specification for each node that is
given in slurm.conf and will not check these specifications
against those actually found on the node.
Slurmはslurm.confで指定された各ノードのリソース仕様を使用し、これらの仕様をノードで実際に検出された仕様と照合しません。
The system would best be configured
with TaskPlugin=task/none, so that launched tasks can run on any
available CPU under operating system control.
システムはTaskPlugin = task / noneで構成するのが最適です。これにより、起動されたタスクは、オペレーティングシステムの制御下で使用可能な任意のCPUで実行できます。
What does a
"credential replayed"
error in the SlurmdLogFile indicate?
SlurmdLogFileの「資格情報の再生」エラーは何を示していますか?
This error is indicative of the slurmd daemon not being able
to respond to job initiation requests from the srun command
in a timely fashion (a few seconds).
このエラーは、slurmdデーモンがsrunコマンドからのジョブ開始要求に適時に(数秒)応答できないことを示しています。
Srun responds by resending the job initiation request.
Srunは、ジョブ開始要求を再送信して応答します。
When the slurmd daemon finally starts to respond, it
processes both requests.
slurmdデーモンが最終的に応答を開始すると、両方の要求を処理します。
The second request is rejected and the event is logged with
the "credential replayed" error.
2番目の要求は拒否され、イベントは「資格情報の再生」エラーでログに記録されます。
If you check the SlurmdLogFile and SlurmctldLogFile,
you should see signs of the slurmd daemon's non-responsiveness.
SlurmdLogFileとSlurmctldLogFileを確認すると、slurmdデーモンが応答しない兆候が見られるはずです。
A variety of factors can be responsible for this problem
including
さまざまな要因がこの問題の原因である可能性があります
- Diskless nodes encountering network problems
ネットワークの問題が発生したディスクレスノード - Very slow Network Information Service (NIS)
非常に遅いネットワーク情報サービス(NIS) - The Prolog script taking a long time to complete
完了するのに長い時間がかかるPrologスクリプト
Configure MessageTimeout in slurm.conf to a value higher than the
default 5 seconds.
slurm.confのMessageTimeoutをデフォルトの5秒より高い値に設定します。
What does
"Warning: Note very large processing time"
in the SlurmctldLogFile indicate?
SlurmctldLogFileの「警告:処理時間が非常に長いことに注意してください」とはどういう意味ですか?
This error is indicative of some operation taking an unexpectedly
long time to complete, over one second to be specific.
このエラーは、特定の操作が完了するまでに予想以上に長い時間がかかり、1秒以上かかる操作があることを示しています。
Setting the value of the SlurmctldDebug configuration parameter
to debug2 or higher should identify which operation(s) are
experiencing long delays.
SlurmctldDebug構成パラメータの値をdebug2以上に設定すると、長時間の遅延が発生している操作を特定できます。
This message typically indicates long delays in file system access
(writing state information or getting user information).
このメッセージは通常、ファイルシステムアクセスの長い遅延(状態情報の書き込みまたはユーザー情報の取得)を示します。
Another possibility is that the node on which the slurmctld
daemon executes has exhausted memory and is paging.
別の可能性としては、slurmctldデーモンが実行されるノードがメモリを使い果たし、ページングしている可能性があります。
Try running the program top to check for this possibility.
プログラムtopを実行して、この可能性を確認してください。
Is resource limit propagation
useful on a homogeneous cluster?
同種のクラスターでリソース制限の伝播は役に立ちますか?
Resource limit propagation permits a user to modify resource limits
and submit a job with those limits.
リソース制限の伝播により、ユーザーはリソース制限を変更し、それらの制限を使用してジョブを送信できます。
By default, Slurm automatically propagates all resource limits in
effect at the time of job submission to the tasks spawned as part
of that job.
デフォルトでは、Slurmは、ジョブのサブミット時に有効なすべてのリソース制限を、そのジョブの一部として生成されたタスクに自動的に伝達します。
System administrators can utilize the PropagateResourceLimits
and PropagateResourceLimitsExcept configuration parameters to
change this behavior.
システム管理者は、PropagateResourceLimitsおよびPropagateResourceLimitsExcept構成パラメーターを使用して、この動作を変更できます。
Users can override defaults using the srun --propagate
option.
ユーザーは、srun --propagateオプションを使用してデフォルトを上書きできます。
See "man slurm.conf" and "man srun" for more information
about these options.
これらのオプションの詳細については、「man slurm.conf」および「man srun」を参照してください。
Do I need to maintain synchronized
clocks on the cluster?
クラスターで同期クロックを維持する必要がありますか?
In general, yes. Having inconsistent clocks may cause nodes to
be unusable.
一般的に、はい。一貫性のないクロックがあると、ノードが使用できなくなる可能性があります。
Slurm log files should contain references to
expired credentials. For example:
Slurmログファイルには、期限切れの認証情報への参照が含まれている必要があります。例えば:
error: Munge decode failed: Expired credential ENCODED: Wed May 12 12:34:56 2008 DECODED: Wed May 12 12:01:12 2008
Why are "Invalid job credential"
errors generated?
「無効なジョブ資格情報」エラーが生成されるのはなぜですか?
This error is indicative of Slurm's job credential files being inconsistent across
the cluster.
このエラーは、Slurmのジョブ資格情報ファイルがクラスター全体で一貫していないことを示しています。
All nodes in the cluster must have the matching public and private
keys as defined by JobCredPrivateKey and JobCredPublicKey in the
Slurm configuration file slurm.conf.
クラスター内のすべてのノードには、Slurm構成ファイルslurm.confのJobCredPrivateKeyおよびJobCredPublicKeyで定義されている一致する公開鍵と秘密鍵が必要です。
Why are
"Task launch failed on node ... Job credential replayed"
errors generated?
「ノードでタスクの起動に失敗しました...ジョブ資格情報が再生されました」というエラーが生成されるのはなぜですか?
This error indicates that a job credential generated by the slurmctld daemon
corresponds to a job that the slurmd daemon has already revoked.
このエラーは、slurmctldデーモンによって生成されたジョブ資格情報が、slurmdデーモンがすでに取り消したジョブに対応していることを示しています。
The slurmctld daemon selects job ID values based upon the configured
value of FirstJobId (the default value is 1) and each job gets
a value one larger than the previous job.
slurmctldデーモンは、FirstJobIdの構成された値(デフォルト値は1)に基づいてジョブID値を選択し、各ジョブは前のジョブより1つ大きい値を取得します。
On job termination, the slurmctld daemon notifies the slurmd on each
allocated node that all processes associated with that job should be
terminated.
ジョブの終了時に、slurmctldデーモンは、割り当てられた各ノードのslurmdに、そのジョブに関連付けられたすべてのプロセスを終了する必要があることを通知します。
The slurmd daemon maintains a list of the jobs which have already been
terminated to avoid replay of task launch requests.
slurmdデーモンは、タスクの起動要求の再生を回避するために、すでに終了したジョブのリストを維持します。
If the slurmctld daemon is cold-started (with the "-c" option
or "/etc/init.d/slurm startclean"), it starts job ID values
over based upon FirstJobId.
slurmctldデーモンが(「-c」オプションまたは「/etc/init.d/slurm startclean」を使用して)コールドスタートされている場合、FirstJobIdに基づいてジョブID値を開始します。
If the slurmd is not also cold-started, it will reject job launch requests
for jobs that it considers terminated.
slurmdもコールドスタートされていない場合、終了したと見なされるジョブのジョブ起動要求を拒否します。
This solution to this problem is to cold-start all slurmd daemons whenever
the slurmctld daemon is cold-started.
この問題のこの解決策は、slurmctldデーモンがコールドスタートされるたびに、すべてのslurmdデーモンをコールドスタートすることです。
Can Slurm be used with Globus?
SlurmをGlobusで使用できますか?
Yes. Build and install Slurm's Torque/PBS command wrappers along with
the Perl APIs from Slurm's contribs directory and configure
Globus to use those PBS commands.
はい。SlurmのcontribsディレクトリからPerl APIとともにSlurmのTorque / PBSコマンドラッパーをビルドしてインストールし、それらのPBSコマンドを使用するようにGlobusを構成します。
Note there are RPMs available for both of these packages, named
torque and perlapi respectively.
これらのパッケージの両方で利用可能なRPMがあり、それぞれトルクとperlapiと名付けられています。
What causes the error
"Unable to accept new connection: Too many open files"?
「新しい接続を受け入れることができません:開いているファイルが多すぎます」というエラーの原因は何ですか?
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に設定することをお勧めします。
Why does the setting of SlurmdDebug
fail to log job step information at the appropriate level?
SlurmdDebugの設定がジョブステップ情報を適切なレベルでログに記録できないのはなぜですか?
There are two programs involved here.
ここには2つのプログラムが関係しています。
One is slurmd, which is
a persistent daemon running at the desired debug level.
1つはslurmdです。これは、目的のデバッグレベルで実行される永続的なデーモンです。
The second
program is slurmstepd, which executes the user job and its
debug level is controlled by the user.
2番目のプログラムはslurmstepdで、ユーザージョブを実行し、そのデバッグレベルはユーザーによって制御されます。
Submitting the job with
an option of --debug=# will result in the desired level of
detail being logged in the SlurmdLogFile plus the output
of the program.
--debug =#のオプションを指定してジョブを送信すると、SlurmdLogFileとプログラムの出力に、必要な詳細レベルが記録されます。
Why aren't pam_slurm.so, auth_none.so, or other components in a
Slurm RPM?
Slurm RPMにpam_slurm.so、auth_none.so、またはその他のコンポーネントがないのはなぜですか?
It is possible that at build time the required dependencies for building the
library are missing.
ビルド時に、ライブラリのビルドに必要な依存関係が欠落している可能性があります。
If you want to build the library then install pam-devel
and compile again.
ライブラリをビルドする場合は、pam-develをインストールして、再度コンパイルします。
See the file slurm.spec in the Slurm distribution for a list
of other options that you can specify at compile time with rpmbuild flags
and your rpmmacros file.
rpmbuildフラグとrpmmacrosファイルを使用してコンパイル時に指定できるその他のオプションのリストについては、Slurmディストリビューションのslurm.specファイルを参照してください。
The auth_none plugin is in a separate RPM and not built by default.
auth_noneプラグインは別のRPMにあり、デフォルトではビルドされません。
Using the auth_none plugin means that Slurm communications are not
authenticated, so you probably do not want to run in this mode of operation
except for testing purposes.
auth_noneプラグインを使用することは、Slurm通信が認証されないことを意味します。したがって、テスト目的を除いて、この操作モードで実行したくないでしょう。
If you want to build the auth_none RPM then
add --with auth_none on the rpmbuild command line or add
%_with_auth_none to your ~/rpmmacros file.
auth_none RPMをビルドする場合は、rpmbuildコマンドラインで--with auth_noneを追加するか、%/ with_auth_noneを〜/ rpmmacrosファイルに追加します。
See the file slurm.spec
in the Slurm distribution for a list of other options.
他のオプションのリストについては、Slurmディストリビューションのslurm.specファイルを参照してください。
Why should I use the slurmdbd instead of the
regular database plugins?
通常のデータベースプラグインの代わりにslurmdbdを使用する必要があるのはなぜですか?
While the normal storage plugins will work fine without the added
layer of the slurmdbd there are some great benefits to using the
slurmdbd.
通常のストレージプラグインはslurmdbdのレイヤーを追加しなくても正常に動作しますが、slurmdbdを使用することにはいくつかの大きな利点があります。
- Added security. Using the slurmdbd you can have an authenticated
connection to the database.
セキュリティを追加しました。slurmdbdを使用すると、データベースへの認証された接続を確立できます。 - Offloading processing from the controller. With the slurmdbd there is no
slowdown to the controller due to a slow or overloaded database.
コントローラーからの処理のオフロード。slurmdbdを使用すると、データベースの速度が低下したり、データベースが過負荷になったりしても、コントローラーの速度が低下することはありません。 - Keeping enterprise wide accounting from all Slurm clusters in one database.
The slurmdbd is multi-threaded and designed to handle all the
accounting for the entire enterprise.
すべてのSlurmクラスターからの企業全体の会計を1つのデータベースに保持します。slurmdbdはマルチスレッドであり、企業全体のすべてのアカウンティングを処理するように設計されています。 - With the database plugins you can query with sacct accounting stats from
any node Slurm is installed on. With the slurmdbd you can also query any
cluster using the slurmdbd from any other cluster's nodes. Other tools like
sreport are also available.
データベースプラグインを使用すると、Slurmがインストールされている任意のノードからsacctアカウンティング統計でクエリを実行できます。slurmdbdを使用すると、他のクラスターのノードからslurmdbdを使用して任意のクラスターをクエリすることもできます。sreportなどの他のツールも使用できます。
How can I build Slurm with debugging symbols?
デバッグシンボルを使用してSlurmをビルドするにはどうすればよいですか?
When configuring, run the configure script with --enable-developer option.
構成するときは、-enable-developerオプションを指定して構成スクリプトを実行します。
That will provide asserts, debug messages and the -Werror flag, that
will in turn activate --enable-debug.
これにより、アサート、デバッグメッセージ、および-Werrorフラグが提供され、次に--enable-debugがアクティブになります。
With the --enable-debug flag, the code will be compiled with
-ggdb3 and -g -O1 -fno-strict-aliasing flags that will produce
extra debugging information.
--enable-debugフラグを使用すると、コードは-ggdb3および-g -O1 -fno-strict-aliasingフラグを使用してコンパイルされ、追加のデバッグ情報が生成されます。
Another possible option to use is
--disable-optimizations that will set -O0.
使用できるもう1つのオプションは、-O0を設定する--disable-optimizationsです。
See also auxdir/x_ac_debug.m4 for more details.
詳細については、auxdir / x_ac_debug.m4も参照してください。
How can I easily preserve drained node
information between major Slurm updates?
Slurmの主要な更新間でドレインされたノード情報を簡単に保持するにはどうすればよいですか?
Major Slurm updates generally have changes in the state save files and
communication protocols, so a cold-start (without state) is generally
required.
Slurmのメジャーアップデートでは通常、状態保存ファイルと通信プロトコルが変更されるため、通常はコールドスタート(状態なし)が必要です。
If you have nodes in a DRAIN state and want to preserve that
information, you can easily build a script to preserve that information
using the sinfo command.
ノードがDRAIN状態でその情報を保持したい場合は、sinfoコマンドを使用して、その情報を保持するスクリプトを簡単に作成できます。
The following command line will report the
Reason field for every node in a DRAIN state and write the output
in a form that can be executed later to restore state.
次のコマンドラインは、DRAIN状態のすべてのノードのReasonフィールドを報告し、後で実行して状態を復元できる形式で出力を書き込みます。
sinfo -t drain -h -o "scontrol update nodename='%N' state=drain reason='%E'"
Why doesn't the HealthCheckProgram
execute on DOWN nodes?
HealthCheckProgramがDOWNノードで実行されないのはなぜですか?
Hierarchical communications are used for sending this message.
このメッセージの送信には階層通信が使用されます。
If there
are DOWN nodes in the communications hierarchy, messages will need to
be re-routed.
通信階層にDOWNノードがある場合は、メッセージを再ルーティングする必要があります。
This limits Slurm's ability to tightly synchronize the
execution of the HealthCheckProgram across the cluster, which
could adversely impact performance of parallel applications.
これにより、クラスター全体でHealthCheckProgramの実行を緊密に同期するSlurmの機能が制限され、並列アプリケーションのパフォーマンスに悪影響を与える可能性があります。
The use of CRON or node startup scripts may be better suited to ensure
that HealthCheckProgram gets executed on nodes that are DOWN
in Slurm.
CRONまたはノード起動スクリプトの使用は、SlurmでダウンしているノードでHealthCheckProgramが確実に実行されるようにするのに適している場合があります。
What is the meaning of the error
"Batch JobId=# missing from batch node <node> (not found
BatchStartTime after startup)"?
「バッチノードにバッチジョブID =#がありません」というエラーの意味は何ですか (起動後にBatchStartTimeが見つかりません) "?
A shell is launched on node zero of a job's allocation to execute
the submitted program.
シェルは、ジョブの割り当てのノード0で起動され、送信されたプログラムを実行します。
The slurmd daemon executing on each compute
node will periodically report to the slurmctld what programs it
is executing.
各計算ノードで実行されているslurmdデーモンは、実行しているプログラムをslurmctldに定期的に報告します。
If a batch program is expected to be running on some
node (i.e. node zero of the job's allocation) and is not found, the
message above will be logged and the job canceled.
バッチプログラムが何らかのノード(つまり、ジョブの割り当てのノード0)で実行されていると予想され、見つからない場合、上記のメッセージがログに記録され、ジョブがキャンセルされます。
This typically is
associated with exhausting memory on the node or some other critical
failure that cannot be recovered from.
これは通常、ノードのメモリの枯渇、または回復できないその他の重大な障害に関連しています。
What does the message
"srun: error: Unable to accept connection: Resources temporarily unavailable"
indicate?
「srun:エラー:接続を受け入れることができません:リソースが一時的に利用できません」というメッセージは何を示していますか?
This has been reported on some larger clusters running SUSE Linux when
a user's resource limits are reached.
これは、ユーザーのリソース制限に達したときに、SUSE Linuxを実行している一部の大規模クラスターで報告されています。
You may need to increase limits
for locked memory and stack size to resolve this problem.
この問題を解決するには、ロックされたメモリとスタックサイズの制限を増やす必要がある場合があります。
How could I automatically print a job's
Slurm job ID to its standard output?
ジョブのSlurmジョブIDを標準出力に自動的に印刷するにはどうすればよいですか?
The configured TaskProlog is the only thing that can write to
the job's standard output or set extra environment variables for a job
or job step.
構成されたTaskPrologは、ジョブの標準出力に書き込むか、ジョブまたはジョブステップに追加の環境変数を設定できる唯一のものです。
To write to the job's standard output, precede the message
with "print ".
ジョブの標準出力に書き込むには、メッセージの前に「print」を付けます。
To export environment variables, output a line of this
form "export name=value".
環境変数をエクスポートするには、「export name = value」という形式の行を出力します。
The example below will print a job's Slurm
job ID and allocated hosts for a batch job only.
以下の例では、ジョブのSlurmジョブIDと、バッチジョブにのみ割り当てられたホストを出力します。
#!/bin/sh # # Sample TaskProlog script that will print a batch job's # job ID and node list to the job's stdout # if [ X"$SLURM_STEP_ID" = "X" -a X"$SLURM_PROCID" = "X"0 ] then echo "print ==========================================" echo "print SLURM_JOB_ID = $SLURM_JOB_ID" echo "print SLURM_JOB_NODELIST = $SLURM_JOB_NODELIST" echo "print ==========================================" fi
Why are user processes and srun
running even though the job is supposed to be completed?
ジョブが完了しているはずなのに、ユーザープロセスとsrunが実行されているのはなぜですか?
Slurm relies upon a configurable process tracking plugin to determine
when all of the processes associated with a job or job step have completed.
Slurmは、構成可能なプロセス追跡プラグインに依存して、ジョブまたはジョブステップに関連付けられたすべてのプロセスがいつ完了したかを判断します。
Those plugins relying upon a kernel patch can reliably identify every process.
カーネルパッチに依存するプラグインは、すべてのプロセスを確実に識別できます。
Those plugins dependent upon process group IDs or parent process IDs are not
reliable.
プロセスグループIDまたは親プロセスIDに依存するプラグインは信頼できません。
See the ProctrackType description in the slurm.conf
man page for details.
詳細については、slurm.confのmanページにあるProctrackTypeの説明を参照してください。
We rely upon the cgroup plugin for most systems.
ほとんどのシステムではcgroupプラグインに依存しています。
How can I prevent the slurmd and
slurmstepd daemons from being killed when a node's memory
is exhausted?
ノードのメモリが使い果たされたときにslurmdとslurmstepdデーモンが強制終了されるのを防ぐにはどうすればよいですか?
You can set the value in the /proc/self/oom_adj for
slurmd and slurmstepd by initiating the slurmd
daemon with the SLURMD_OOM_ADJ and/or SLURMSTEPD_OOM_ADJ
environment variables set to the desired values.
SLURMD_OOM_ADJまたはSLURMSTEPD_OOM_ADJ環境変数を目的の値に設定してslurmdデーモンを開始することにより、slururdおよびslurmstepdの/ proc / self / oom_adjに値を設定できます。
A value of -17 typically will disable killing.
値-17は通常、強制終了を無効にします。
I see the host of my calling node as 127.0.1.1
instead of the correct IP address. Why is that?
呼び出し元ノードのホストが正しいIPアドレスではなく127.0.1.1として表示されます。何故ですか?
Some systems by default will put your host in the /etc/hosts file as
something like
一部のシステムでは、デフォルトで/ etc / hostsファイルに次のようにホストを配置します
127.0.1.1 snowflake.llnl.gov snowflake
This will cause srun and Slurm commands to use the 127.0.1.1 address
instead of the correct address and prevent communications between nodes.
これにより、srunおよびSlurmコマンドは正しいアドレスの代わりに127.0.1.1アドレスを使用し、ノード間の通信を妨げます。
The solution is to either remove this line or configure a different NodeAddr
that is known by your other nodes.
解決策は、この行を削除するか、他のノードが認識している別のNodeAddrを構成することです。
The CommunicationParameters=NoInAddrAny configuration parameter is subject to
this same problem, which can also be addressed by removing the actual node
name from the "127.0.1.1" as well as the "127.0.0.1"
addresses in the /etc/hosts file.
CommunicationParameters = NoInAddrAny構成パラメーターもこの同じ問題の影響を受けます。この問題は、/ etc / hostsファイルの「127.0.1.1」および「127.0.0.1」アドレスから実際のノード名を削除することによっても対処できます。
It is ok if they point to
localhost, but not the actual name of the node.
localhostを指していても問題ありませんが、実際のノード名は指していません。
How can I stop Slurm from scheduling jobs?
Slurmでジョブのスケジュールを停止するにはどうすればよいですか?
You can stop Slurm from scheduling jobs on a per partition basis by setting
that partition's state to DOWN.
Slurmがパーティションの状態をDOWNに設定することにより、パーティションごとにジョブをスケジュールするのを停止できます。
Set its state UP to resume scheduling.
For example:
状態をUPに設定して、スケジューリングを再開します。例えば:
$ scontrol update PartitionName=foo State=DOWN $ scontrol update PartitionName=bar State=UP
Can I update multiple jobs with a
single scontrol command?
1つのscontrolコマンドで複数のジョブを更新できますか?
No, but you can probably use squeue to build the script taking
advantage of its filtering and formatting options. For example:
いいえ。ただし、squeueを使用して、フィルタリングとフォーマットのオプションを利用してスクリプトを作成できます。例えば:
$ squeue -tpd -h -o "scontrol update jobid=%i priority=1000" >my.script
Can Slurm be used to run jobs on
Amazon's EC2?
Slurmを使用してAmazonのEC2でジョブを実行できますか?
Yes, here is a description of Slurm use with
Amazon's EC2 courtesy of
Ashley Pittman:
はい、アシュリーピットマンの厚意により、AmazonのEC2でのSlurmの使用について説明します。
I do this regularly and have no problem with it, the approach I take is to
start as many instances as I want and have a wrapper around
ec2-describe-instances that builds a /etc/hosts file with fixed hostnames
and the actual IP addresses that have been allocated.
私はこれを定期的に行って問題はありません。私が取るアプローチは、必要な数のインスタンスを開始し、固定ホスト名と実際のIPアドレスを含む/ etc / hostsファイルを構築するec2-describe-instancesのラッパーを使用することです。割り当てられています。
The only other step
then is to generate a slurm.conf based on how many node you've chosen to boot
that day.
次に、他の唯一の手順は、その日に起動するように選択したノードの数に基づいてslurm.confを生成することです。
I run this wrapper script on my laptop and it generates the files
and they rsyncs them to all the instances automatically.
私はラップトップでこのラッパースクリプトを実行すると、ファイルが生成され、自動的にすべてのインスタンスにrsyncされます。
One thing I found is that Slurm refuses to start if any nodes specified in
the slurm.conf file aren't resolvable, I initially tried to specify cloud[0-15]
in slurm.conf, but then if I configure less than 16 nodes in /etc/hosts this
doesn't work so I dynamically generate the slurm.conf as well as the hosts
file.
私が見つけた1つのことは、slurm.confファイルで指定されたノードが解決できない場合、Slurmが起動を拒否することです。最初にslurm.confでcloud [0-15]を指定しようとしましたが、16ノード未満を構成した場合/ etc / hostsではこれは機能しないため、slurm.confおよびhostsファイルを動的に生成します。
As a comment about EC2 I run just run generic AMIs and have a persistent EBS
storage device which I attach to the first instance when I start up.
EC2についてのコメントとして、私は一般的なAMIを実行し、起動時に最初のインスタンスに接続する永続的なEBSストレージデバイスを実行しています。
This
contains a /usr/local which has my software like Slurm, pdsh and MPI installed
which I then copy over the /usr/local on the first instance and NFS export to
all other instances.
これには、Slurm、pdsh、MPIなどのソフトウェアがインストールされた/ usr / localが含まれており、最初のインスタンスの/ usr / localにコピーし、他のすべてのインスタンスにNFSエクスポートします。
This way I have persistent home directories and a very
simple first-login script that configures the virtual cluster for me.
このように、永続的なホームディレクトリと、仮想クラスターを構成する非常に単純な初回ログインスクリプトを用意しています。
If a Slurm daemon core dumps, where can I find the
core file?
Slurmデーモンコアダンプの場合、コアファイルはどこにありますか?
If slurmctld is started with the -D option, then the core file will be
written to the current working directory.
slurmctldが-Dオプションを指定して開始された場合、コアファイルは現在の作業ディレクトリに書き込まれます。
If SlurmctldLogFile is an
absolute path, the core file will be written to this directory.
SlurmctldLogFileが絶対パスの場合、コアファイルはこのディレクトリに書き込まれます。
Otherwise the
core file will be written to the StateSaveLocation, or "/var/tmp/" as a
last resort.
それ以外の場合、コアファイルはStateSaveLocationまたは「/ var / tmp /」に最後の手段として書き込まれます。
SlurmUser must have write permission on the directories.
SlurmUserには、ディレクトリに対する書き込み権限が必要です。
If none of the above
directories have write permission for SlurmUser, no core file will be produced.
上記のディレクトリのいずれにもSlurmUserに対する書き込み権限がない場合、コアファイルは生成されません。
For testing purposes the command "scontrol abort" can be used to abort the
slurmctld daemon and generate a core file.
テストの目的で、コマンド「scontrol abort」を使用して、slurmctldデーモンを中止し、コアファイルを生成できます。
If slurmd is started with the -D option, then the core file will also be
written to the current working directory.
slurmdが-Dオプションを指定して開始された場合、コアファイルも現在の作業ディレクトリに書き込まれます。
If SlurmdLogFile is an
absolute path, the core file will be written to the this directory.
SlurmdLogFileが絶対パスの場合、コアファイルはthisディレクトリに書き込まれます。
Otherwise the core file will be written to the SlurmdSpoolDir, or
"/var/tmp/" as a last resort.
それ以外の場合、コアファイルはSlurmdSpoolDir、または "/ var / tmp /"に最後の手段として書き込まれます。
If none of the above directories can be written, no core file will be produced.
上記のディレクトリのいずれも書き込むことができない場合、コアファイルは生成されません。
For slurmstepd, the core file will depend upon when the failure
occurs.
slurmstepdの場合、コアファイルはいつ障害が発生するかによって異なります。
If it is running in a privileged phase, it will be in the same location
as that described above for the slurmd daemon.
特権フェーズで実行されている場合、上記のslurmdデーモンと同じ場所にあります。
If it is running in an
unprivileged phase, it will be in the spawned job's working directory.
非特権フェーズで実行されている場合、生成されたジョブの作業ディレクトリになります。
Nevertheless, in some operating systems this can vary:
それにもかかわらず、一部のオペレーティングシステムでは、これは異なる場合があります。
-
I.e. in RHEL the event
may be captured by abrt daemon and generated in the defined abrt configured
dump location (i.e. /var/spool/abrt).
つまり、RHELでは、イベントはabrtデーモンによってキャプチャされ、定義されたabrt構成のダンプの場所(つまり、/ var / spool / abrt)で生成されます。
-
In Cray XC ATP
(Abnormal Termination Processing) daemon acts the same way, if it is enabled.
Cray XCでは、ATP(異常終了処理)デーモンは、有効になっている場合、同じように動作します。
Normally, distributions need some more tweaking in order to allow the core
files to be generated correctly.
通常、ディストリビューションでは、コアファイルを正しく生成するために、さらに調整が必要です。
slurmstepd uses the setuid() (set user ID) function to escalate
privileges.
slurmstepdは、setuid()(ユーザーIDの設定)関数を使用して特権を昇格させます。
It is possible that in certain systems and for security policies,
this causes the core files not to be generated.
特定のシステムおよびセキュリティポリシーでは、コアファイルが生成されない可能性があります。
To allow the generation in such systems you usually must enable the
suid_dumpable kernel parameter:
このようなシステムで生成できるようにするには、通常、suid_dumpableカーネルパラメータを有効にする必要があります。
/proc/sys/fs/suid_dumpable to 2
or
sysctl fs.suid_dumpable=2
or set it permanently in sysctl.conf
または、sysctl.confに永続的に設定します
fs.suid_dumpable = 2
The value of 2, "suidsafe", makes any binary which normally not be dumped is
dumped readable by root only.
2の値「suidsafe」は、通常はダンプされないバイナリを、rootだけが読み取り可能にダンプできるようにします。
This allows the end user to remove such a dump
but not access it directly.
これにより、エンドユーザーはそのようなダンプを削除できますが、直接アクセスすることはできません。
For security reasons core dumps in this mode will
not overwrite one another or other files.
セキュリティ上の理由から、このモードのコアダンプは、他のファイルや他のファイルを上書きしません。
This mode is appropriate when
administrators are attempting to debug problems in a normal environment.
このモードは、管理者が通常の環境で問題をデバッグしようとしている場合に適しています。
Then you must also set the core pattern to an absolute pathname:
次に、コアパターンを絶対パス名に設定する必要があります。
sysctl kernel.core_pattern=/tmp/core.%e.%p
We recommend reading your distribution's documentation about the
configuration of these parameters.
これらのパラメータの設定については、ディストリビューションのドキュメントを読むことをお勧めします。
It is also usually needed to configure the system core limits, since it can be
set to 0.
また、0に設定できるため、システムのコア制限を構成するためにも必要です。
$ grep core /etc/security/limits.conf # - core - limits the core file size (KB) * hard core unlimited * soft core unlimited
In some systems it is not enough to set a hard limit, you must set also a
soft limit.
一部のシステムでは、ハード制限を設定するだけでは不十分で、ソフト制限も設定する必要があります。
Also, for generating the limits in userspace, the
PropagateResourceLimits=CORE parameter in slurm.conf could be needed.
また、ユーザー空間で制限を生成するには、slurm.confのPropagateResourceLimits = COREパラメータが必要になる場合があります。
Be also sure to give SlurmUser the appropriate permissions to write in the
core location directories.
また、コアロケーションディレクトリに書き込むための適切な権限をSlurmUserに付与してください。
NOTE: On a diskless node depending on the core_pattern or if
/var/spool/abrt is pointing to an in-memory filespace like tmpfs, if the job
caused an OOM, then the generation of the core may fill up your machine's
memory and hang it.
注:core_patternに依存するディスクレスノード上、または/ var / spool / abrtがtmpfsなどのメモリ内ファイルスペースを指している場合、ジョブがOOMを引き起こした場合、コアの生成がマシンのメモリをいっぱいにしてハングする可能性があります。それ。
It is encouraged then to make coredumps go to a persistent
storage.
コアダンプを永続的なストレージに移動させることをお勧めします。
Be careful of multiple nodes writting a core dump to a shared
filesystem since it may significantly impact it.
共有ファイルシステムにコアダンプを書き込む複数のノードには、大きな影響を与える可能性があるので注意してください。
On Centos 6, also set "ProcessUnpackaged = yes" in the file
/etc/abrt/abrt-action-save-package-data.conf.
Centos 6では、/ etc / abrt / abrt-action-save-package-data.confファイルで「ProcessUnpackaged = yes」も設定します。
On RHEL6, also set "DAEMON_COREFILE_LIMIT=unlimited" in the file
rc.d/init.d/functions.
RHEL6では、rc.d / init.d / functionsファイルで「DAEMON_COREFILE_LIMIT = unlimited」も設定します。
On a SELinux enabled system, or on a distribution with similar security
system, get sure it is allowing to dump cores:
SELinux対応システム、または同様のセキュリティシステムを備えたディストリビューションで、コアをダンプできることを確認します。
$ getsebool allow_daemons_dump_core
coredumpctl can also give valuable information:
coredumpctlも貴重な情報を提供します:
$ coredumpctl info
How can TotalView be configured to operate with
Slurm?
TotalViewをSlurmで動作するように構成するにはどうすればよいですか?
The following lines should also be added to the global .tvdrc file
for TotalView to operate with Slurm:
TotalViewがSlurmで動作するように、次の行もグローバル.tvdrcファイルに追加する必要があります。
# Enable debug server bulk launch: Checked dset -set_as_default TV::bulk_launch_enabled true # Command: # Beginning with TV 7X.1, TV supports Slurm and %J. # Specify --mem-per-cpu=0 in case Slurm configured with default memory # value and we want TotalView to share the job's memory limit without # consuming any of the job's memory so as to block other job steps. dset -set_as_default TV::bulk_launch_string {srun --mem-per-cpu=0 -N%N -n%N -w`awk -F. 'BEGIN {ORS=","} {if (NR==%N) ORS=""; print $1}' %t1` -l --input=none %B/tvdsvr%K -callback_host %H -callback_ports %L -set_pws %P -verbosity %V -working_directory %D %F} # Temp File 1 Prototype: # Host Lines: # Slurm NodeNames need to be unadorned hostnames. In case %R returns # fully qualified hostnames, list the hostnames in %t1 here, and use # awk in the launch string above to strip away domain name suffixes. dset -set_as_default TV::bulk_launch_tmpfile1_host_lines {%R}
How can a patch file be generated from a Slurm
commit in GitHub?
GitHubのSlurmコミットからパッチファイルを生成するにはどうすればよいですか?
Find and open the commit in GitHub then append ".patch" to the URL and save
the resulting file. For an example, see:
GitHubでコミットを見つけて開き、URLに「.patch」を追加して、結果のファイルを保存します。例については、以下を参照してください。
https://github.com/SchedMD/slurm/commit/91e543d433bed11e0df13ce0499be641774c99a3.patch
Why are the resource limits set in the
database not being enforced?
データベースに設定されているリソース制限が適用されないのはなぜですか?
In order to enforce resource limits, set the value of
AccountingStorageEnforce in each cluster's slurm.conf configuration
file appropriately.
リソース制限を実施するには、各クラスターのslurm.conf構成ファイルでAccountingStorageEnforceの値を適切に設定します。
If AccountingStorageEnforce does not contains
an option of "limits", then resource limits will not be enforced on that cluster.
AccountingStorageEnforceに「制限」のオプションが含まれていない場合、リソース制限はそのクラスターに適用されません。
See Resource Limits for more information.
詳細については、リソース制限を参照してください。
After manually setting a job priority
value, how can its priority value be returned to being managed by the
priority/multifactor plugin?
ジョブの優先度の値を手動で設定した後、優先度の値を優先度/多要素プラグインによる管理に戻すにはどうすればよいですか?
Hold and then release the job as shown below.
以下に示すように、ジョブをホールドしてからリリースします。
$ scontrol hold <jobid> $ scontrol release <jobid>
Does anyone have an example node
health check script for Slurm?
誰かがSlurmのノードヘルスチェックスクリプトの例を持っていますか?
Probably the most comprehensive and lightweight health check tool out
there is
Node Health Check.
おそらく、最も包括的で軽量なヘルスチェックツールはノードヘルスチェックです。
It has integration with Slurm as well as Torque resource managers.
SlurmおよびTorqueリソースマネージャと統合されています。
What process should I follow to add nodes to Slurm?
ノードをSlurmに追加するには、どのプロセスに従う必要がありますか?
The slurmctld daemon has a multitude of bitmaps to track state of nodes and cores
in the system.
slurmctldデーモンには、システム内のノードとコアの状態を追跡するための多数のビットマップがあります。
Adding nodes to a running system would require the slurmctld daemon
to rebuild all of those bitmaps, which the developers feel would be safer to do by
restarting the daemon.
実行中のシステムにノードを追加するには、slurmctldデーモンがそれらのビットマップをすべて再構築する必要があります。開発者は、デーモンを再起動することで安全に行うことができます。
Communications from the slurmd daemons on the compute
nodes to the slurmctld daemon include a configuration file checksum, so you
probably also want to maintain a common slurm.conf file on all nodes.
計算ノード上のslurmdデーモンからslurmctldデーモンへの通信には構成ファイルのチェックサムが含まれているため、すべてのノードで共通のslurm.confファイルも維持する必要があります。
The
following procedure is recommended:
次の手順をお勧めします。
- Stop the slurmctld daemon (e.g. "systemctl stop slurmctld" on the head node)
slurmctldデーモンを停止します(たとえば、ヘッドノードの「systemctl stop slurmctld」) - Update the slurm.conf file on all nodes in the cluster
クラスター内のすべてのノードでslurm.confファイルを更新します - Restart the slurmd daemons on all nodes (e.g. "systemctl restart slurmd" on all nodes)
すべてのノードでslurmdデーモンを再起動します(たとえば、すべてのノードで「systemctl restart slurmd」) - Restart the slurmctld daemon (e.g. "systemctl start slurmctld" on the head node)
slurmctldデーモンを再起動します(たとえば、ヘッドノードで「systemctl start slurmctld」)
NOTE: Jobs submitted with srun, and that are waiting for an allocation,
prior to new nodes being added to the slurm.conf can fail if the job is
allocated one of the new nodes.
注記:新しいノードがslurm.confに追加される前に、srunで送信され、割り当てを待機しているジョブは、ジョブが新しいノードの1つに割り当てられている場合、失敗する可能性があります。
Can Slurm be configured to manage licenses?
ライセンスを管理するようにSlurmを構成できますか?
Slurm is not currently integrated with FlexLM, but it does provide for the
allocation of global resources called licenses.
Slurmは現在FlexLMと統合されていませんが、ライセンスと呼ばれるグローバルリソースの割り当てを提供します。
Use the Licenses configuration
parameter in your slurm.conf file (e.g. "Licenses=foo:10,bar:20").
slurm.confファイルでLicenses構成パラメーターを使用します(例: "Licenses = foo:10、bar:20")。
Jobs can request licenses and be granted exclusive use of those resources
(e.g. "sbatch --licenses=foo:2,bar:1 ...").
ジョブはライセンスを要求し、それらのリソースの排他的使用を許可することができます(例: "sbatch --licenses = foo:2、bar:1 ...")。
It is not currently possible to change the total number of licenses on a system
without restarting the slurmctld daemon, but it is possible to dynamically
reserve licenses and remove them from being available to jobs on the system
(e.g. "scontrol update reservation=licenses_held licenses=foo:5,bar:2").
現在、slurmctldデーモンを再起動せずにシステム上のライセンスの総数を変更することはできませんが、ライセンスを動的に予約して、システム上のジョブで使用できないようにすることができます(例: "scontrol update reservation = licenses_held licenses = foo:5、bar:2 ")。
Can the salloc command be configured to
launch a shell on a node in the job's allocation?
ジョブの割り当てのノードでシェルを起動するようにsallocコマンドを構成できますか?
Yes, just use the SallocDefaultCommand configuration parameter in your
slurm.conf file as shown below.
はい、以下に示すように、slurm.confファイルでSallocDefaultCommand構成パラメーターを使用するだけです。
SallocDefaultCommand="srun -n1 -N1 --mem-per-cpu=0 --pty --preserve-env --cpu-bind=no --mpi=none $SHELL"
For Cray systems, add --gres=craynetwork:0 to the options.
Crayシステムの場合、オプションに--gres = craynetwork:0を追加します。
SallocDefaultCommand="srun -n1 -N1 --mem-per-cpu=0 --gres=craynetwork:0 --pty --preserve-env --mpi=none $SHELL"
What should I be aware of when upgrading Slurm?
Slurmをアップグレードするときに注意すべきことは何ですか?
See the Quick Start Administrator Guide Upgrade
section for details.
詳細については、クイックスタート管理者ガイドのアップグレードセクションを参照してください。
How easy is it to switch from PBS or Torque to Slurm?
PBSまたはTorqueからSlurmに切り替えるのはどれほど簡単ですか?
A lot of users don't even notice the difference.
多くのユーザーは違いに気づくことすらありません。
Slurm has wrappers available for the mpiexec, pbsnodes, qdel, qhold, qrls,
qstat, and qsub commands (see contribs/torque in the distribution and the
"slurm-torque" RPM).
Slurmには、mpiexec、pbsnodes、qdel、qhold、qrls、qstat、およびqsubコマンド用のラッパーがあります(ディストリビューションのcontribs / torqueおよび「slurm-torque」RPMを参照)。
There is also a wrapper for the showq command at
https://github.com/pedmon/slurm_showq.
https://github.com/pedmon/slurm_showqには、showqコマンドのラッパーもあります。
Slurm recognizes and translates the "#PBS" options in batch scripts.
Slurmは、バッチスクリプトの「#PBS」オプションを認識して翻訳します。
Most, but not all options are supported.
すべてではありませんが、ほとんどのオプションがサポートされています。
Slurm also includes a SPANK plugin that will set all of the PBS environment
variables based upon the Slurm environment (e.g. PBS_JOBID, PBS_JOBNAME,
PBS_WORKDIR, etc.).
Slurmには、Slurm環境に基づいてすべてのPBS環境変数を設定するSPANKプラグインも含まれています(PBS_JOBID、PBS_JOBNAME、PBS_WORKDIRなど)。
One environment not set by PBS_ENVIRONMENT, which if set would result in the
failure of some MPI implementations.
PBS_ENVIRONMENTによって設定されていない1つの環境。設定すると、一部のMPI実装でエラーが発生します。
The plugin will be installed in
<install_directory>/lib/slurm/spank_pbs.so
プラグインはにインストールされます/lib/slurm/spank_pbs.so
See the SPANK man page for configuration details.
設定の詳細については、SPANKのマニュアルページを参照してください。
How can I get SSSD to work with Slurm?
SSSDをSlurmと連携させるにはどうすればよいですか?
SSSD or System Security Services Deamon does not allow enumeration of
group members by default.
SSSDまたはSystem Security Services Deamonは、デフォルトではグループメンバーの列挙を許可しません。
Note that enabling enumeration in large
environments might not be feasible.
大規模な環境で列挙を有効にするのは現実的でない場合があることに注意してください。
However, Slurm does not need enumeration
except for some specific quirky configurations (multiple groups with the same
GID), so it's probably safe to leave enumeration disabled.
ただし、Slurmは特定の風変わりな設定(同じGIDを持つ複数のグループ)を除いて列挙を必要としないため、列挙を無効のままにしても安全です。
SSSD is also case sensitive by default for some configurations, which could
possibly raise other issues.
SSSDは、一部の設定ではデフォルトで大文字と小文字を区別するため、他の問題を引き起こす可能性があります。
Add the following lines
to /etc/sssd/sssd.conf on your head node to address these issues:
これらの問題に対処するには、ヘッドノードの/etc/sssd/sssd.confに次の行を追加します。
enumerate = True case_sensitive = False
How critical is configuring high availability for my
database?
データベースの高可用性の構成はどの程度重要ですか?
- Consider if you really need a mysql failover. A short outage of slurmdbd is not
a problem, because slurmctld will store all data in memory and send it to
slurmdbd when it's back operating. The slurmctld daemon will also cache all
user limits and fair share information.
mysqlフェイルオーバーが本当に必要かどうかを検討してください。slurmctldはすべてのデータをメモリに保存し、再び動作しているときにslurmdbdに送信するため、slurmdbdの短い停止は問題になりません。slurmctldデーモンは、すべてのユーザー制限とフェアシェア情報もキャッシュします。 - You cannot use ndb, since slurmdbd/mysql uses keys on BLOB values (and
maybe something more from the incompatibility list).
slurmdbd / mysqlはBLOB値のキーを使用するため(そして非互換性リストからさらに何かを使用するため)、ndbを使用することはできません。 - You can set up "classical" Linux HA, with heartbeat/corosync to migrate
IP between master/backup mysql servers and:
ハートビート/コロシンクを使用して「クラシック」Linux HAをセットアップし、マスター/バックアップmysqlサーバー間でIPを移行します。 - Configure one way replication of mysql, and change master/backup roles on
failure
mysqlの一方向レプリケーションを構成し、障害時にマスター/バックアップの役割を変更する - Use shared storage for master/slave mysql servers database, and start
backup on master mysql failure.
マスター/スレーブmysqlサーバーデータベースの共有ストレージを使用し、マスターmysqlの障害時にバックアップを開始します。
How can I use double quotes in MySQL queries?
MySQLクエリで二重引用符を使用するにはどうすればよいですか?
Execute:
SET session sql_mode='ANSI_QUOTES';
This will allow double quotes in queries like this:
これにより、次のようなクエリで二重引用符を使用できます。
show columns from "tux_assoc_table" where Field='is_def';
Why is a compute node down with the reason set to
"Node unexpectedly rebooted"?
理由が「ノードが予期せず再起動しました」に設定されているコンピューティングノードがダウンしているのはなぜですか?
This is indicative of the slurmctld daemon running on the cluster's head node
as well as the slurmd daemon on the compute node when the compute node reboots.
これは、計算ノードの再起動時に、クラスターのヘッドノードで実行されているslurmctldデーモンと、計算ノードのslurmdデーモンを示しています。
If you want to prevent this condition from setting the node into a DOWN state
then configure ReturnToService to 2. See the slurm.conf man page for details.
この状態によってノードがDOWN状態に設定されないようにするには、ReturnToServiceを2に構成します。詳細については、slurm.confのマニュアルページを参照してください。
Otherwise use scontrol or sview to manually return the node to service.
それ以外の場合は、scontrolまたはsviewを使用して、手動でノードをサービスに戻します。
How can a job which has exited with a specific exit
code be requeued?
特定の終了コードで終了したジョブを再キューイングするにはどうすればよいですか?
Slurm supports requeue in hold with a SPECIAL_EXIT state using the
command:
Slurmは、次のコマンドを使用して、SPECIAL_EXIT状態で保留中のリキューをサポートします。
scontrol requeuehold State=SpecialExit job_id
This is useful when users want to requeue and flag a job which has exited
with a specific error case. See man scontrol(1) for more details.
これは、ユーザーが特定のエラーケースで終了したジョブを再度キューに入れてフラグを付けたい場合に便利です。詳細については、man scontrol(1)を参照してください。
$ scontrol requeuehold State=SpecialExit 10 $ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 10 mira zoppo david SE 0:00 1 (JobHeldUser)
The job can be later released and run again.
ジョブは後で解放して、再度実行できます。
The requeueing of jobs which exit with a specific exit code can be
automated using an EpilogSlurmctld, see man(5) slurm.conf.
特定の終了コードで終了するジョブのリキューは、EpilogSlurmctldを使用して自動化できます。man(5)slurm.confを参照してください。
This is an example of a script which exit code depends on the existence
of a file.
これは、終了コードがファイルの存在に依存するスクリプトの例です。
$ cat exitme #!/bin/sh # echo "hi! `date`" if [ ! -e "/tmp/myfile" ]; then echo "going out with 8" exit 8 fi rm /tmp/myfile echo "going out with 0" exit 0
This is an example of an EpilogSlurmctld that checks the job exit value
looking at the SLURM_JOB_EXIT2 environment variable and requeues a job if
it exited with value 8.
これは、SLURM_JOB_EXIT2環境変数を調べてジョブの終了値を確認し、値8で終了した場合にジョブを再キューイングするEpilogSlurmctldの例です。
The SLURM_JOB_EXIT2 has the format "exit:sig", the first
number is the exit code, typically as set by the exit() function.
SLURM_JOB_EXIT2の形式は「exit:sig」で、最初の番号は通常、exit()関数で設定される終了コードです。
The second number of the signal that caused the process to terminate if
it was terminated by a signal.
プロセスがシグナルによって終了された場合にプロセスを終了させたシグナルの2番目の番号。
$ cat slurmctldepilog #!/bin/sh export PATH=/bin:/home/slurm/linux/bin LOG=/home/slurm/linux/log/logslurmepilog echo "Start `date`" >> $LOG 2>&1 echo "Job $SLURM_JOB_ID exitcode $SLURM_JOB_EXIT_CODE2" >> $LOG 2>&1 exitcode=`echo $SLURM_JOB_EXIT_CODE2|awk '{split($0, a, ":"); print a[1]}'` >> $LOG 2>&1 if [ "$exitcode" == "8" ]; then echo "Found REQUEUE_EXIT_CODE: $REQUEUE_EXIT_CODE" >> $LOG 2>&1 scontrol requeuehold state=SpecialExit $SLURM_JOB_ID >> $LOG 2>&1 echo $? >> $LOG 2>&1 else echo "Job $SLURM_JOB_ID exit all right" >> $LOG 2>&1 fi echo "Done `date`" >> $LOG 2>&1 exit 0
Using the exitme script as an example, we have it exit with a value of 8 on
the first run, then when it gets requeued in hold with SpecialExit state
we touch the file /tmp/myfile, then release the job which will finish
in a COMPLETE state.
例としてexitmeスクリプトを使用すると、最初の実行で値8で終了します。次に、SpecialExit状態で保持されてキューに再キューイングされると、ファイル/ tmp / myfileに触れ、ジョブを解放します。 COMPLETE状態。
Can a user's account be changed in the database?
データベースでユーザーのアカウントを変更できますか?
A user's account can not be changed directly.
ユーザーのアカウントを直接変更することはできません。
A new association needs to be
created for the user with the new account.
新しい関連付けを持つユーザーに対して、新しいアカウントを作成する必要があります。
Then the association with the old
account can be deleted.
その後、古いアカウントとの関連付けを削除できます。
# Assume user "adam" is initially in account "physics" sacctmgr create user name=adam cluster=tux account=physics sacctmgr delete user name=adam cluster=tux account=chemistry
What might account for MPI performance being below
the expected level?
MPIのパフォーマンスが期待されるレベルを下回っている理由は何ですか?
Starting the slurmd daemons with limited locked memory can account for this.
ロックされたメモリが制限された状態でslurmdデーモンを起動すると、これを説明できます。
Adding the line "ulimit -l unlimited" to the /etc/sysconfig/slurm file can
fix this.
/ etc / sysconfig / slurmファイルに「ulimit -l unlimited」という行を追加すると、これを修正できます。
How could some jobs submitted immediately before
the slurmctld daemon crashed be lost?
slurmctldデーモンがクラッシュする直前に送信された一部のジョブがどのように失われる可能性がありますか?
Any time the slurmctld daemon or hardware fails before state information reaches
disk can result in lost state.
状態情報がディスクに到達する前にslurmctldデーモンまたはハードウェアに障害が発生すると、いつでも状態が失われる可能性があります。
Slurmctld writes state frequently (every five seconds by default), but with
large numbers of jobs, the formatting and writing of records can take seconds
and recent changes might not be written to disk.
Slurmctldは状態を頻繁に(デフォルトでは5秒ごと)書き込みますが、ジョブの数が多いと、レコードのフォーマットと書き込みに数秒かかることがあり、最近の変更がディスクに書き込まれない場合があります。
Another example is if the state information is written to file, but that
information is cached in memory rather than written to disk when the node fails.
もう1つの例は、状態情報がファイルに書き込まれるが、ノードに障害が発生したときにその情報がディスクに書き込まれるのではなくメモリにキャッシュされる場合です。
The interval between state saves being written to disk can be configured at
build time by defining SAVE_MAX_WAIT to a different value than five.
ディスクに書き込まれる状態保存の間隔は、SAVE_MAX_WAITを5以外の値に定義することにより、ビルド時に構成できます。
How do I safely remove partitions?
パーティションを安全に削除するにはどうすればよいですか?
Partitions should be removed using the
"scontrol delete PartitionName=<partition>" command.
パーティションは、「scontrol delete PartitionName ="コマンド。
This is because
scontrol will prevent any partitions from being removed that are in use.
これは、scontrolが使用中のパーティションが削除されないようにするためです。
Partitions need to be removed from the slurm.conf after being removed using
scontrol or they will return after a restart.
パーティションは、scontrolを使用して削除した後、slurm.confから削除する必要があります。そうしないと、再起動後にパーティションが元に戻ります。
An existing job's partition(s) can be updated with the "scontrol update
JobId=<jobid> Partition=<partition(s)>" command.
既存のジョブのパーティションは、「scontrol update JobId = パーティション="コマンド。
Removing a partition from the slurm.conf and restarting will cancel any existing
jobs that reference the removed partitions.
slurm.confからパーティションを削除して再起動すると、削除されたパーティションを参照する既存のジョブがキャンセルされます。
Why is Slurm unable to set the CPU frequency for
jobs?
SlurmがジョブのCPU周波数を設定できないのはなぜですか?
First check that Slurm is configured to bind jobs to specific CPUs by
making sure that TaskPlugin is configured to either affinity or cgroup.
最初に、Slurmが特定のCPUにジョブをバインドするように構成されていることを確認し、TaskPluginが親和性またはcgroupのいずれかに構成されていることを確認します。
Next check that that your processor is configured to permit frequency
control by examining the values in the file
/sys/devices/system/cpu/cpu0/cpufreq where "cpu0" represents a CPU ID 0.
次に、ファイル/ sys / devices / system / cpu / cpu0 / cpufreqの値を調べて、プロセッサーが周波数制御を許可するように構成されていることを確認します。「cpu0」はCPU ID 0を表します。
Of particular interest is the file scaling_available_governors,
which identifies the CPU governors available.
特に興味深いのは、使用可能なCPUガバナーを識別するファイルscaling_available_governorsです。
If "userspace" is not an available CPU governor, this may well be due to the
intel_pstate driver being installed.
「userspace」が使用可能なCPUガバナーでない場合は、インストールされているintel_pstateドライバーが原因である可能性があります。
Information about disabling the intel_pstate driver is available
from
intel_pstateドライバーの無効化に関する情報は、
https://bugzilla.kernel.org/show_bug.cgi?id=57141 and
http://unix.stackexchange.com/questions/121410/setting-cpu-governor-to-on-demand-or-conservative.
When adding a new cluster, how can the Slurm cluster
configuration be copied from an existing cluster to the new cluster?
新しいクラスターを追加するときに、Slurmクラスター構成を既存のクラスターから新しいクラスターにコピーするにはどうすればよいですか?
Accounts need to be configured for the cluster.
クラスター用にアカウントを構成する必要があります。
An easy way to copy information from
an existing cluster is to use the sacctmgr command to dump that cluster's information,
modify it using some editor, the load the new information using the sacctmgr
command.
既存のクラスターから情報をコピーする簡単な方法は、sacctmgrコマンドを使用してそのクラスターの情報をダンプし、エディターを使用して変更し、sacctmgrコマンドを使用して新しい情報をロードすることです。
See the sacctmgr man page for details, including an example.
例を含む詳細については、sacctmgrのマニュアルページを参照してください。
How can I update Slurm on a Cray DVS file system
without rebooting the nodes?
ノードを再起動せずにCray DVSファイルシステムでSlurmを更新するにはどうすればよいですか?
The problem with DVS caching is related to the fact that the dereferenced value
of /opt/slurm/default symlink is cached in the DVS attribute cache, and that
cache is not dropped when the rest of the VM caches are.
DVSキャッシングの問題は、/ opt / slurm / defaultシンボリックリンクの間接参照された値がDVS属性キャッシュにキャッシュされ、残りのVMキャッシュがキャッシュされてもそのキャッシュはドロップされないという事実に関連しています。
The Cray Native Slurm installation manual indicates that Slurm should
have a "default" symlink run through /etc/alternatives.
Cray Native Slurmインストールマニュアルは、Slurmが/ etc / alternativesを介して実行される「デフォルト」のシンボリックリンクを持つ必要があることを示しています。
As an alternative to that:
その代わりとして:
- Institute a policy that all changes to files which could be open
persistently (i.e., .so files) are always modified by creating a new access
path. I.e., installations go to a new directory.
永続的に開くことができるファイル(つまり、.soファイル)へのすべての変更は、新しいアクセスパスを作成することによって常に変更されるというポリシーを設定します。つまり、インストールは新しいディレクトリに移動します。 - Dump the /etc/alternatives stuff, just use a regular symlink, e.g., default
points to 15.8.0-1.
/ etc / alternativesのものをダンプし、通常のシンボリックリンクを使用します。たとえば、デフォルトは15.8.0-1を指します。 - Add a new mountpoint on all the compute nodes for /dsl/opt/slurm where the
attrcache_timeout attribute is reduced from 14440s to 60s (or 15s -- whatever):
/ dsl / opt / slurmのすべての計算ノードに新しいマウントポイントを追加します。ここで、attrcache_timeout属性は14440秒から60秒(または15秒-何でも)に削減されます。
mount -t dvs /opt/slurm /dsl/opt/slurm -o
path=/dsl/opt/slurm,nodename=c0-0c0s0n0,loadbalance,cache,ro,attrcache_timeout=15
In the example above, c0-0c0s0n0 is the single DVS server for the system.
上記の例では、c0-0c0s0n0がシステムの単一のDVSサーバーです。
Using this strategy avoids the caching problems, making upgrades simple.
この戦略を使用すると、キャッシュの問題が回避され、アップグレードが簡単になります。
One just has to wait for about 20 seconds after changing the default symlinks
before starting the slurmds again.
デフォルトのシンボリックリンクを変更してから約20秒間待ってから、slurmdを再び開始する必要があります。
(Information courtesy of Douglas Jacobsen, NERSC,
Lawrence Berkeley National Laboratory)
(情報提供:Douglas Jacobsen、NERSC、ローレンスバークレー国立研究所)
How can I rebuild the database hierarchy?
データベース階層を再構築するにはどうすればよいですか?
If you see errors of this sort:
この種のエラーが発生した場合:
error: Can't find parent id 3358 for assoc 1504, this should never happen.
in the slurmctld log file, this is indicative that the database hierarchy
information has been corrupted, typically due to a hardware failure or
administrator error in directly modifying the database.
slurmctldログファイルでは、これは通常、データベースを直接変更する際のハードウェア障害または管理者のエラーが原因で、データベース階層情報が破損していることを示しています。
In order to rebuild
the database information, start the slurmdbd daemon with the "-R" option
followed by an optional comma separated list of cluster names to operate on.
データベース情報を再構築するには、「-R」オプションを付けてslurmdbdデーモンを開始し、その後に、操作するクラスター名のオプションのコンマ区切りリストを続けます。
How can a routing queue be configured?
ルーティングキューはどのように構成できますか?
A job submit plugin is designed to have access to a job request from a user,
plus information about all of the available system partitions/queue.
ジョブ送信プラグインは、ユーザーからのジョブ要求に加えて、利用可能なすべてのシステムパーティション/キューに関する情報にアクセスできるように設計されています。
An administrator can write a C plugin or LUA script to set an incoming job's
partition based upon its size, time limit, etc.
管理者は、CプラグインまたはLUAスクリプトを作成して、サイズ、制限時間などに基づいて受信ジョブのパーティションを設定できます。
See the Job Submit Plugin API
guide for more information.
詳細については、ジョブ送信プラグインAPIガイドを参照してください。
Also see the available job submit plugins distributed with Slurm for examples
(look in the "src/plugins/job_submit" directory).
例については、Slurmで配布されている使用可能なジョブ送信プラグインも参照してください(「src / plugins / job_submit」ディレクトリを確認してください)。
How can I suspend, resume, hold or release all
of the jobs belonging to a specific user, partition, etc?
特定のユーザー、パーティションなどに属するすべてのジョブを一時停止、再開、保留、または解放するにはどうすればよいですか?
There isn't any filtering by user, partition, etc.
ユーザー、パーティションなどによるフィルタリングはありません。
available in the scontrol
command; however the squeue command can be used to perform the filtering and
build a script which you can then execute. For example:
scontrolコマンドで使用できます。ただし、squeueコマンドを使用して、フィルタリングを実行し、実行可能なスクリプトを作成できます。例えば:
$ squeue -u adam -h -o "scontrol hold %i" >hold_script
I had to change a user's UID and now they cannot submit
jobs. How do I get the new UID to take effect?
ユーザーのUIDを変更する必要があり、ジョブを送信できなくなりました。新しいUIDを有効にするにはどうすればよいですか?
When changing UIDs, you will also need to restart the slurmctld for the changes to
take effect.
UIDを変更する場合は、変更を有効にするためにslurmctldを再起動する必要もあります。
Normally, when adding a new user to the system, the UID is filled in
automatically and immediately.
通常、システムに新しいユーザーを追加すると、UIDは自動的かつ即座に入力されます。
If the user isn't known on the system yet, there is a
thread that runs every hour that fills in those UIDs when they become known, but it
doesn't recognize UID changes of preexisting users.
ユーザーがシステム上でまだ知られていない場合は、1時間ごとに実行されるスレッドがあり、それらのUIDが知らされたときにそれらを入力しますが、既存のユーザーのUIDの変更は認識しません。
But you can simply restart the
slurmctld for those changes to be recognized.
ただし、これらの変更を認識させるには、slurmctldを再起動するだけです。
Slurmdbd is failing to start with a 'Duplicate entry'
error in the database. How do I fix that?
Slurmdbdは、データベースの「重複エントリ」エラーで開始に失敗します。どうすれば修正できますか?
This problem has been rarely observed with MySQL, but not MariaDB.
この問題はMySQLではほとんど発生しませんが、MariaDBでは発生しません。
The root cause of the failure seems to be reaching the upper limit on the auto increment field.
失敗の根本的な原因は、自動インクリメントフィールドの上限に達しているようです。
Upgrading to MariaDB is recommended.
MariaDBへのアップグレードをお勧めします。
If that is not possible then: backup the database, remove the duplicate record(s),
and restart the slurmdbd daemon as shown below.
それが不可能な場合は、データベースをバックアップし、重複するレコードを削除して、次に示すようにslurmdbdデーモンを再起動します。
$ slurmdbd -Dvv ... slurmdbd: debug: Table "cray_job_table" has changed. Updating... slurmdbd: error: mysql_query failed: 1062 Duplicate entry '2711-1478734628' for key 'id_job' ... $ mysqldump --single-transaction -u<user> -p<user> slurm_acct_db >/tmp/slurm_db_backup.sql $ mysql mysql> use slurm_acct_db; mysql> delete from cray_job_table where id_job='2711-1478734628'; mysql> quit; Bye
If necessary, you can edit the database dump and recreate the database as
shown below.
必要に応じて、データベースダンプを編集して、以下に示すようにデータベースを再作成できます。
$ mysql mysql> drop database slurm_acct_db; mysql> create database slurm_acct_db; mysql> quit; Bye $ mysql -u<user> -p<user> </tmp/slurm_db_backup.sql
Why are applications on my Cray system failing
with SIGBUS (bus error)?
Crayシステム上のアプリケーションがSIGBUS(バスエラー)で失敗するのはなぜですか?
By default, Slurm flushes Lustre file system and kernel caches upon completion
of each job step.
デフォルトでは、Slurmは各ジョブステップの完了時にLusterファイルシステムとカーネルキャッシュをフラッシュします。
If multiple applications are run simultaneously on compute
nodes (either multiple applications from a single Slurm job or multiple jobs)
the result can be significant performance degradation and even bus errors.
複数のアプリケーションが計算ノードで同時に実行される場合(単一のSlurmジョブからの複数のアプリケーションまたは複数のジョブ)、結果としてパフォーマンスが大幅に低下し、バスエラーが発生する可能性があります。
Failures occur more frequently when more applications are executed at the same
time on individual compute nodes.
個々の計算ノードで同時により多くのアプリケーションが実行されると、障害がより頻繁に発生します。
Failures are also more common when Lustre file systems are used.
光沢は、Lustreファイルシステムが使用されている場合にも一般的です。
Two approaches exist to address this issue.
この問題に対処するには、2つの方法があります。
One is to disable the flushing of caches, which can be accomplished by adding
"LaunchParameters=lustre_no_flush" to your Slurm configuration file
"slurm.conf".
1つは、キャッシュのフラッシュを無効にすることです。これは、Slurm構成ファイル「slurm.conf」に「LaunchParameters = lustre_no_flush」を追加することで実行できます。
A second approach is to modify the Cray file system as described below in order to
prevent Slurm-specific files needing to be re-resolved over DFS.
2番目のアプローチは、Slurm固有のファイルをDFS経由で再解決する必要がないように、以下で説明するようにCrayファイルシステムを変更することです。
This second approach does not address files used by applications, only those
used directly by Slurm.
この2番目のアプローチは、アプリケーションが使用するファイルではなく、Slurmが直接使用するファイルのみを扱います。
On Cray CLE6.0, by default, nodes get the operating system, including the
Slurm installation and all of its plugins, via a DVS mount of "/".
Cray CLE6.0では、デフォルトで、ノードは "/"のDVSマウントを介して、Slurmインストールとそのすべてのプラグインを含むオペレーティングシステムを取得します。
Really "/" is an overlay filesystem where the lower portion is a loop-mounted
squashfs layer and the upper layer is tmpfs.
本当に「/」はオーバーレイファイルシステムで、下部はループマウントされたsquashfsレイヤー、上部はtmpfsです。
When buffer caches are flushed during a dlopen (used by Slurm to load its
plugins), a timeout may result from waiting to re-resolve a Slurm plugin over
DVS.
dlopen(プラグインをロードするためにSlurmによって使用される)中にバッファーキャッシュがフラッシュされると、DVS経由でSlurmプラグインを再解決するのを待っているとタイムアウトが発生する場合があります。
The NERSC solution is to localize all files related to Slurm or involved in
slurmstepd launch into that tmpfs layer at boot time.
NERSCソリューションは、Slurmに関連するすべてのファイル、または起動時にそのtmpfsレイヤーへのslurmstepd起動に関連するすべてのファイルをローカライズすることです。
This is possible by creating a new netroot preload file:
これは、新しいnetrootプリロードファイルを作成することで可能です。
# cat compute-preload.nersc /usr/lib64/libslurm*so* /usr/lib64/slurm/*.so /usr/sbin/slurmd /usr/sbin/slurmstepd /usr/bin/sbatch /usr/bin/srun /usr/bin/sbcast /usr/bin/numactl /usr/lib64/libnuma*so* /lib64/ast/libast.so* /lib64/ast/libcmd.so* /lib64/ast/libdll.so* /lib64/ast/libshell.so* /lib64/libacl.so* /lib64/libattr.so* /lib64/libc.so* /lib64/libcap.so* /lib64/libdl.so* /lib64/libgcc_s.so* ...
NERSC generates its preload file by including everything installed by Slurm
RPMs plus files identified as being used by Slurm's slurmd daemon on the compute
node by running the "strace -f" command while the slurmd daemon is launching
a job step.
NERSCは、Slurm RPMによってインストールされたすべてのものと、slurmdデーモンがジョブステップを起動している間に「strace -f」コマンドを実行することにより、計算ノード上のSlurmのslurmdデーモンによって使用されていると識別されたファイルを含めることにより、プリロードファイルを生成します。
Once the netroot preload file is generated, it needs to then be included in the
cray_netroot_preload_worksheet CLE configuration. For example:
netrootプリロードファイルが生成されたら、それをcray_netroot_preload_worksheet CLE構成に含める必要があります。例えば:
cray_netroot_preload.settings.load.data.label.compute: null cray_netroot_preload.settings.load.data.compute.targets: [] cray_netroot_preload.settings.load.data.compute.content_lists: - dist/compute-preload.cray - dist/compute-preload.nersc cray_netroot_preload.settings.load.data.compute.size_limit: 0
This is a generally useful technique for preventing remote lookups of commonly
accessed files within jobs.
これは、ジョブ内で一般的にアクセスされるファイルのリモートルックアップを防ぐための一般的に有用な手法です。
Last modified 4 March 2020