私がSLURMで直面している問題は以下のようにまとめることができます。 bashスクリプトを考えましょう test.sh
これは8個のCPUを要求しますが、実際には10個のCPUを使用してジョブを開始します。
#!/bin/sh
#SBATCH --ntasks=8
stress -c 10
32個のCPUを搭載したサーバーで、このスクリプトを5回起動すると sbatch test.sh
、そのうちの4つはすぐに実行を開始し、最後のものは、によって示されているように、保留中として表示されます squeue
コマンド:
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
5 main test.sh jack PD 0:00 1 (Resources)
1 main test.sh jack R 0:08 1 server
2 main test.sh jack R 0:08 1 server
3 main test.sh jack R 0:05 1 server
4 main test.sh jack R 0:05 1 server
問題は、これら4つのジョブが実際に40個のCPUを使用しており、システムに過負荷をかけていることです。それどころか、SLURMは、ユーザーが要求した以上のリソースを実際に使用しているジョブを開始しないか、それらを開始するのに十分なリソースがあるまでそれらを保留にすることを期待します。
私についてのいくつかの役に立つ詳細 slurm.conf
ファイル:
# SCHEDULING
#DefMemPerCPU=0
FastSchedule=1
#MaxMemPerCPU=0
SchedulerType=sched/backfill
SchedulerPort=7321
SelectType=select/cons_res
SelectTypeParameters=CR_CPU
# COMPUTE NODES
NodeName=server CPUs=32 RealMemory=10000 State=UNKNOWN
# PARTITIONS
PartitionName=main Nodes=server Default=YES Shared=YES MaxTime=INFINITE State=UP
私はSLURMから始めたばかりで、この振る舞いに困惑しています。自分のサーバーのユーザーが、あまりにも多くのCPUを使用するジョブを開始しないようにするにはどうすればよいですか。私はマニュアルを読み、フォーラムの情報を探すのに多くの時間を費やしました、しかし残念ながら私は何も役に立ちませんでした。
ご協力ありがとうございます。