Slurmノードの割り当てをランダム化する運があった人はいますか? 12ノードの小さなクラスターがあり、さまざまなサイズ/長さのジョブで一度に1〜8人のユーザーが使用できます。新しいSlurmセットアップをテストするとき、インタラクティブジョブとバッチジョブの両方に他のユーザーがいない場合、ジョブは常にパーティションの最初のノードに移動します。このスケジュールをランダム化する方法はありますか?
ユーザーのタイムラインによっては、一貫して同じノードを取得できるようであり、これにより、他の方法では表示される可能性のあるハードウェア/構成の問題が隠蔽される可能性があります。私たちのノードは常に排他的であるため、ノードレベルのスケジューリングのランダム化のみを検討しています...
パーティションに「LLN = YES」を追加できます。
LLN(アイドル状態のCPUの数に基づいて)最も負荷の少ないノード上のジョブにリソースをスケジュールします。
Slurm.confの重み設定を見てください
スケジューリングのためのノードの優先度。すべてが等しい場合、ジョブには、要件を満たす最小の重みを持つノードが割り当てられます。たとえば、ノードの異種コレクションを単一のパーティションに配置して、システムの使用率、応答性、および機能を向上させることができます。どちらかがジョブの要件を満たす場合は、大きなメモリノードよりも小さなメモリノードを割り当てることが望ましいでしょう。重みの単位は任意ですが、より多くのプロセッサ、メモリ、ディスクスペース、より高速なプロセッサ速度などを備えたノードに、より大きな重みを割り当てる必要があります。次に重みが小さいノードのセットが、使用を検討しているノードのセットに追加されます(重みの値が大きい場合は、必要に応じて繰り返します)。ジョブに割り当てられる重みの大きいノードの数を絶対に最小限に抑えたい場合は(スケジューリングのオーバーヘッドが高くなります)、各ノードに個別の重み値を指定すると、個別にスケジューリングすることを検討しているノードのプールに追加されます。デフォルト値は1です。
コードを変更したり、独自のプラグインを提供したりせずに、ノードの割り当てをランダム化することは不可能だと思います。特定のジョブによってどのノードが選択されるかに影響を与える方法はたくさんありますが、どれもランダムではありません。 @Tux_DEV_NULLが指摘したように、重みを使用してノードのサブセットを優先することができますが、重みをランダムに変更しない限り、クラスター全体がアイドル状態の場合は、同じノードに何度も到達することになります。ノードの稼働時間は、究極のタイブレーカーとして使用されていると思います。
誤って構成されたノードや壊れたノードが見つからないことが心配な場合は、slurm.confのHealthCheckProgramパラメーターを使用してノードヘルスチェックスクリプトを使用する必要があります。使用するのに適したものはここにあります: https://github.com/mej/nhc