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?
1つのスクリプト内から複数のジョブを実行するにはどうすればよいですか? - 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:強制終了ジョブ」は何を示していますか? - What does this mean: "srun: First task exited
30s ago" followed by "srun Job Failed"?
これはどういう意味ですか:「srun:最初のタスクは30秒前に終了しました」、続いて「srun JobFailed」? - 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(および「scontrolshowjobid」)がジョブの推定開始時間を表示しないことがあるのはなぜですか? - 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.
Slurmのドキュメントでは、CPU、コア、スレッドについて言及しています。
What exactly is considered a CPU?
正確には何がCPUと見なされますか? - What is the difference between the sbatch
and srun commands?
sbatchコマンドとsrunコマンドの違いは何ですか? - Can squeue output be color coded?
スキュー出力を色分けできますか? - 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.
Slurmデーモンが起動すると、「Xプラグイン操作を解決できません」と出力して終了します。
What does this mean?
これは何を意味するのでしょうか? - 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?
pam_slurm.so、auth_none.so、またはその他のコンポーネントがSlurm RPMに含まれていないのはなぜですか? - 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)"?
「バッチJobId =#がバッチノード<ノード>にありません(起動後に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.
呼び出し元ノードのホストが正しいIPアドレスではなく127.0.1.1と表示されます。
Why is that?
何故ですか? - 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?
ノードを再起動せずにCrayDVSファイルシステムで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.
ユーザーのUIDを変更する必要がありましたが、今ではユーザーはジョブを送信できません。
How do I get the new UID to take effect?
新しいUIDを有効にするにはどうすればよいですか? - Slurmdbd is failing to start with a 'Duplicate entry'
error in the database.
Slurmdbdは、データベースの「重複エントリ」エラーで開始できません。
How do I fix that?
どうすれば修正できますか? - 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時間年中無休のオンサイト担当者までの幅広いサポートオプションを提供しています。
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に変更し(例:「scontrolupdate NodeName = name State = DOWN Reason = hung_completing」)、再起動する必要があります。次に、ノードの状態をIDLEにリセットします(例:「scontrolupdate 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.
これらのパラメーターの詳細については、「manslurm.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 ...").
エラーメッセージは、ユーザーがリソース制限を伝達する必要があることを明示的に指定した場合、またはsrunコマンドがslurmdデーモンからのアクションの詳細なロギングで実行されている場合にのみ出力されます(例:「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.
主なものは、Slurmが使用するスケジューラーです。
Executing the command
コマンドの実行
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 showjobを使用してジョブの優先順位を確認できます。
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 job <jobid>を発行し、フィールドState and Reasonを調べて、原因を調査します。
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.
srunの有効なオプションではない最初のトークンは実行するコマンドと見なされ、それ以降はすべてコマンドのオプションとして扱われます。
For example:
例えば:
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」はhostnameコマンドのオプションとして扱われます。
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?
1つのスクリプト内から複数のジョブを実行するにはどうすればよいですか?
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.
ファイルcontribs / make-3.81.slurm.patchには、Slurmディストリビューションの一部として利用可能なGNUmakeバージョン3.81用のパッチがあります。
For GNU make version 4.0 you
can use the patch in the file contribs/make-4.0.slurm.patch.
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.
最後に、X11機能を利用して、グラフィカル端末を実行できます。
(e.g. srun xterm).
(例:srun xterm)。
What does "srun: Force Terminated job"
indicate?
「srun:強制終了ジョブ」は何を示していますか?
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:ForceTerinatedjob」というメッセージが出力されます。
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 JobFailed」?
The srun command monitors when tasks exit.
srunコマンドは、タスクがいつ終了するかを監視します。
By default, 30 seconds
after the first task exists, the job is killed.
デフォルトでは、最初のタスクが存在してから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.
この動作は、srunの--wait = <time>オプションを使用して変更し、タイムアウト期間を変更するか、タイムアウトを完全に無効にすることができます。
See srun's man page
for details.
詳細については、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.
ユーザーのリソース制限が伝播されない場合、slurmdデーモンに有効な制限が生成されたジョブに使用されます。
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).
たとえば、ユーザーrootのロックされたメモリ制限ulimitを計算ノードで無制限に設定し(「manlimits.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つは、' arbitrary 'です。
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つのタスクを実行したい場合、ノードはSLURM_JOB_NODELISTから割り当てられます。ここで、tux [0-1]のsrun行は次のようになります。
srun -n5 -m arbitrary -w tux[0,0,0,0,1] hostname
srun -n5-m任意-wtux [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任意-wtux [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.
これは、任意の.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:<jobid>を指定します。
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 = <jobid> NumNodes = 0
The jobid above is that of the job to relinquish its resources.
上記のジョブIDは、リソースを放棄するジョブのジョブ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 = <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.
たとえば、バージョン5.1以前のDAKOTAには、POSIX正規表現関数ではなく使用される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(および「scontrolshowjobid」)がジョブの推定開始時間を表示しないことがあるのはなぜですか?
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.
Slurmは、完了または失敗した状態でのジョブの再キューイングをサポートします。
Use the
command:
次のコマンドを使用します。
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".
コマンド「scontrolshownode」を使用し、「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?
スキュー出力を色分けできますか?
The squeue command output is not color coded, but other tools can be used to
add color.
squeueコマンドの出力は色分けされていませんが、他のツールを使用して色を追加できます。
One such tool is ColorWrapper
(https://github.com/rrthomas/cw).
そのようなツールの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.
バージョン17.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.
詳細については、「manslurm.conf」および「manscontrol」を参照してください。
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.
ノード上のslurmdデーモンがslurm.confで定義されている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.
これらの構成パラメーターの詳細については、manslurm.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:
次のコマンドは、Redhat6の例です。
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.
説明に従ってリソース予約を作成します。
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 requiredpam_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_pam1」を使用するか、configureプログラムの実行時にコマンドラインオプション「--withoutpam」を入力することで無効にできます。
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.
pam_slurm_adoptまたはpam_slurmのいずれかを使用する場合、UsePAMを設定する必要はありません。
The two uses of PAM are independent.
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をチェックインすると、「<一部のIPアドレス>からの無効なジョブ資格情報:ジョブ資格情報の有効期限が切れています」というメッセージが表示される可能性があります。
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でのみ使用される任意の名前)をNodeNameとして、NodeHostnameの物理ノードの実際のアドレスとともに定義します。
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-Nhostname」)。 - 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で、目的のノード名(Slurmでのみ使用される任意の名前)をNodeNameとして定義し、NodeHostNameとNodeAddrの1つの物理ノードの実際の名前とアドレスを指定します。
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.
もう1つの可能性は、slurmctldデーモンが実行されるノードがメモリを使い果たしてページングしていることです。
Try running the program top to check for this possibility.
プログラムトップを実行して、この可能性を確認してください。
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.
これらのオプションの詳細については、「manslurm.conf」および「mansrun」を参照してください。
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.
Slurmログファイルには、期限切れの資格情報への参照が含まれている必要があります。
For example:
例えば:
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/slurmstartclean」を使用)、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ディレクトリからPerlAPIとともにSlurmのTorque / PBSコマンドラッパーをビルドしてインストールし、それらのPBSコマンドを使用するようにGlobusを構成します。
Note there are RPMs available for both of these packages, named
torque and perlapi respectively.
これらのパッケージの両方で、それぞれtorqueおよびperlapiという名前のRPMが利用可能であることに注意してください。
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?
pam_slurm.so、auth_none.so、またはその他のコンポーネントがSlurm RPMに含まれていないのはなぜですか?
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を追加するか、〜/ rpmmacrosファイルに%_with_auth_noneを追加します。
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.
1つのデータベース内のすべてのSlurmクラスターから企業全体のアカウンティングを維持します。
The slurmdbd is multi-threaded and designed to handle all the accounting for the entire enterprise.
slurmdbdはマルチスレッドであり、企業全体のすべてのアカウンティングを処理するように設計されています。 - With the database plugins you can query with sacct accounting stats from
any node Slurm is installed on.
データベースプラグインを使用すると、Slurmがインストールされている任意のノードからsacctアカウンティング統計を使用してクエリを実行できます。
With the slurmdbd you can also query any cluster using the slurmdbd from any other cluster's nodes.
slurmdbdを使用すると、他のクラスターのノードからslurmdbdを使用して任意のクラスターにクエリを実行することもできます。
Other tools like sreport are also available.
sreportのような他のツールも利用できます。
How can I build Slurm with debugging symbols?
デバッグシンボルを使用してSlurmをビルドするにはどうすればよいですか?
When configuring, run the configure script with --enable-developer option.
構成するときは、-enable-developerオプションを指定してconfigureスクリプトを実行します。
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.
SlurmでダウンしているノードでHealthCheckProgramが確実に実行されるようにするには、CRONまたはノード起動スクリプトを使用する方が適している場合があります。
What is the meaning of the error
"Batch JobId=# missing from batch node <node> (not found
BatchStartTime after startup)"?
「バッチJobId =#がバッチノード<ノード>にありません(起動後に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.
これは、ユーザーのリソース制限に達したときにSUSELinuxを実行している一部の大規模なクラスターで報告されています。
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のマニュアルページにある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デーモンを開始することにより、slurmdおよび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.
呼び出し元ノードのホストが正しいIPアドレスではなく127.0.1.1と表示されます。
Why is that?
何故ですか?
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.
パーティションの状態をDOWNに設定することで、Slurmがパーティションごとにジョブをスケジュールするのを停止できます。
Set its state UP to resume scheduling.
状態をUPに設定して、スケジューリングを再開します。
For example:
例えば:
$ 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.
いいえ。ただし、squeueを使用して、フィルタリングとフォーマットのオプションを利用してスクリプトを作成できます。
For example:
例えば:
$ 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:
はい、AshleyPittmanの厚意により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が絶対パスの場合、コアファイルはこのディレクトリに書き込まれます。
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 / pool / abrt)で生成される場合があります。
-
In Cray XC ATP
(Abnormal Termination Processing) daemon acts the same way, if it is enabled.
Cray XC ATP(Abnormal Termination Processing)では、デーモンが有効になっている場合、デーモンは同じように動作します。
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」は、通常はダンプされないバイナリをルートのみで読み取り可能にします。
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 / pool / 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.
GitHubでコミットを見つけて開き、URLに「.patch」を追加して、結果のファイルを保存します。
For an example, see:
例については、以下を参照してください。
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デーモンを停止します(例:ヘッドノードの「systemctlstopslurmctld」) - 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デーモンを再起動します(例:すべてのノードで「systemctlrestartslurmd」) - Restart the slurmctld daemon (e.g. "systemctl start slurmctld" on the head node)
slurmctldデーモンを再起動します(例:ヘッドノードの「systemctlstartslurmctld」)
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デーモンを再起動せずにシステムのライセンスの総数を変更することはできませんが、ライセンスを動的に予約して、システム上のジョブで使用できないようにすることはできます(例:「scontrolupdatereservation = licenses_heldlicenses = 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環境変数(PBS_JOBID、PBS_JOBNAME、PBS_WORKDIRなど)を設定するSPANKプラグインも含まれています。
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
プラグインは<install_directory> /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またはSystemSecurity 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.
mysqlフェイルオーバーが本当に必要かどうかを検討してください。
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.
slurmctldはすべてのデータをメモリに保存し、動作が再開したときにそれをslurmdbdに送信するため、slurmdbdの短時間の停止は問題ではありません。
The slurmctld daemon will also cache all user limits and fair share information.
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:
ハートビート/ corosyncを使用して「クラシック」LinuxHAをセットアップし、マスター/バックアップ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.
この状態でノードがDOWN状態になるのを防ぎたい場合は、ReturnToServiceを2に構成します。
See the slurm.conf man page for details.
詳細については、slurm.confのmanページを参照してください。
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.
「ulimit-lunlimited」という行を/ etc / sysconfig / slurmファイルに追加すると、これを修正できます。
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 deletePartitionName = <partition>」コマンドを使用して削除する必要があります。
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 = <jobid> Partition = <partition(s)>」コマンドで更新できます。
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.
まず、TaskPluginがアフィニティまたはcgroupのいずれかに設定されていることを確認して、Slurmがジョブを特定のCPUにバインドするように設定されていることを確認します。
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 ID0を表します。
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ドライバーの無効化に関する情報は、次のURLから入手できます。
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のmanページを参照してください。
How can I update Slurm on a Cray DVS file system
without rebooting the nodes?
ノードを再起動せずにCrayDVSファイルシステムで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秒待ってから、slurmdsを再開する必要があります。
(Information courtesy of Douglas Jacobsen, NERSC,
Lawrence Berkeley National Laboratory)
(情報提供:ダグラス・ジェイコブセン、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.
scontrolコマンドで使用できます。ただし、squeueコマンドを使用してフィルタリングを実行し、スクリプトを作成して実行することができます。
For example:
例えば:
$ 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.
Slurmdbdは、データベースの「重複エントリ」エラーで開始できません。
How do I fix that?
どうすれば修正できますか?
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は各ジョブステップの完了時にLustreファイルシステムとカーネルキャッシュをフラッシュします。
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.
Lusterファイルシステムを使用すると、障害もより一般的になります。
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に関連する、またはslurmstepdの起動に関係するすべてのファイルを起動時にそのtmpfsレイヤーにローカライズすることです。
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.
netrootプリロードファイルが生成されたら、それをcray_netroot_preload_worksheetCLE構成に含める必要があります。
For example:
例えば:
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