前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【科研利器】slurm作业调度系统(四)

【科研利器】slurm作业调度系统(四)

作者头像
自学气象人
发布2022-10-09 09:43:30
3.1K0
发布2022-10-09 09:43:30
举报
文章被收录于专栏:自学气象人

大家好哇!上一期我们介绍了作业脚本中两个非常重要的概念Partition 和 QoS 进行介绍,并给出一些实用技巧。今天呢,我们给出一些在slurm作业系统中常见的报错提示的含义及解决方法。

在我们实际操作过程中,最常见的一种情况就是我提交了作业却没有被运行。前面的教程【科研利器】slurm作业调度系统(一)中我们说过,超算集群上不只有我们在使用,还有很多的用户同时也在提交作业、运行程序。而超算上的计算资源却是有限的。所以当作业被提交以后,其能否运行会取决于用户申请的资源配置情况以及当前系统内计算资源被使用的情况。如果遇到了作业被提交但一直没能运行的情况,可以通过 squeue 命令来查看作业状态(该命令有很多可选参数,能帮助我们更快的掌握想知道的信息,详见【科研利器】slurm作业调度系统(二))。其中 NODELIST(REASON) 一栏包含很多非常有用的信息,在作业未运行时,它会显示未运行的原因;当作业在运行时,它会显示作业是在哪个节点运行的、运行了多长时间等信息。

北大超算指导手册中整理出了下面的表格,涵盖了常见作业未运行的原因(即 squeue 查询后 NODELIST 一栏的显示结果),用户可根据此来调整自己的脚本。其中的加粗部分表示异常原因,用户需要修改 slurm 脚本或联系管理员。这里需要注意的是,用户申请的资源超过当前 QoS 限制时,slurm作业调度系统会直接拒绝该任务。当申请的资源超过当前分区限制时,任务提交成功但是永远不会被运行。

除此以外,你可能还会遇到如下问题:

(1)

Q:我用sinfo查看任务提交的分区,显示idle(即存在空闲节点),但我的任务还在排队等待。

A:有两种可能的情况,一是排队在你前面的任务中有需要较大计算资源的,调度可能为它保留着部分计算资源。二是我们前面说过QoS的概念(详见【科研利器】slurm作业调度系统(三)),在队列中可能有需要占用多节点的高优先级任务正在等待资源,调度器会一定程度上为这些作业保留资源,以确保它们能够运行。

(2)

Q:提交任务后报错

代码语言:javascript
复制
Job submit/allocate failed: Invalidpartition name specified

A:报错显示你没有指定正确的partition。这可能是由于你并没有使用作业脚本中所指定分区的权限造成的,可以通过更改分区解决。

(3)
Q:提交任务后报错
代码语言:javascript
复制
QOSMaxWallDurationPerJobLimit

A:报错显示你所提交的任务时长超过了QoS允许的最大时长。所以需要修改作业脚本中的-t, --time=参数,以满足qos的时间限制。如果不知道所用qos对应的最大时长,可以通过以下命令进行查看。

代码语言:javascript
复制
sacctmgr show qos format=name,MaxWall
(4)
Q:提交任务后报错
代码语言:javascript
复制
batch job submission failed: Requested node configuration is not available

A:报错显示你所申请资源的节点配置不匹配,如该分区中每个节点只有32个核心,但是你在脚本中申请的单节点核心数超过32,就会报这个错误。所以仔细检查你的作业脚本,尤其是节点数、核心数、进程数之间的配置是否一致。

(5)
Q:提交任务后报错
代码语言:javascript
复制
QOS Not Allowed

A:报错显示没有指定正确的qos。可能是由于不同分区下能够使用的QoS有限制造成的。可以通过以下命令可以查看不同分区下可用的qos,在作业脚本在进行相应的修改。

代码语言:javascript
复制
sacctmgr show ass user=`whoami`  format=user,part,qos
(6)
Q:提交任务后报错
代码语言:javascript
复制
Account Not Allowed

A:哈哈哈,前面说过要节约计算资源,毕竟都是用钱买的。如果出现该错误的,通常都是账户里面没钱啦。当然,也有可能是账户被超算管理员封锁了。

(7)
Q:我的任务只需要20G的内存,在作业脚本中我申请了一个128G的节点,但是还是报错说内存不足。

A:这里需要注意节点与核心的关系。比如说一个节点有32个CPU核心,每个核心有4G的内存,那么这个节点就有128G的内存。如果你仅在该节点申请了1个核心,那么实际可使用的内存为4G。所以出现这个报错的时候,可以去作业脚本里面指定 #SBATCH --cpu-per-task 参数解决。

参考资料:

https://hpc.pku.edu.cn/_book/guide/slurm/sbatch.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 自学气象人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (3)
  • Q:提交任务后报错
  • (4)
  • Q:提交任务后报错
  • (5)
  • Q:提交任务后报错
  • (6)
  • Q:提交任务后报错
  • (7)
  • Q:我的任务只需要20G的内存,在作业脚本中我申请了一个128G的节点,但是还是报错说内存不足。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档