避免" sbatch:错误:slurm_receive_msg:套接字在发送/接收操作上超时"什么时候调度程序忙?

时间:2016-08-16 22:08:34

标签: bash sockets scheduler slurm

我在使用slurm作为调度程序的群集上运行作业。

通常,我想要做的是首先向队列提交一些作业,然后等待所有作业完成,收集数据,分析并再次向队列提交相同数量的作业。这个过程重复了很多次。

single_job.sh中,我有:

sbatch -p partition_name -n 1 -c 1 --job-name=job_name --wrap="some_excutable"

multiple_jobs.sh中,我有:

for (( i=0 ; i < ${n_rounds} ; i ++ ))
do 
  #### submit jobs
  for (( j=0 ;  j < ${n_jobs} ; j ++ ))
  do
    bash single_job.sh
  done

  #### Check whether the jobs have finished, if not, wait
  njobs=`qstat -u user_name | grep ${job_name} | grep -v ' C ' | wc -l`
  count=1
  while [ $njobs -gt 0 ]
  do
    sleep 10
    njobs=`qstat -u user_name | grep ${job_name} | grep -v ' C ' | wc -l`
    count=`expr $count + 1 `
  done

 #### collect data and analyze
 python collect_data_analyze.py 

done

但是,当调度程序系统遇到高负载的IO负担时,我的程序会在作业提交或等待期间终止。以下是返回的消息。

sbatch: error: slurm_receive_msg: Socket timed out on send/recv operation
sbatch: error: Batch job submission failed: Socket timed out on send/recv operation

在那些时刻,用qstat检查作业运行状态需要很长时间。

我想知道有没有办法检测系统何时忙碌并等待几秒钟才能解决这个问题?

0 个答案:

没有答案