Skip to content

Why Job Restart?

2022.11.20

起因是发现突然多了 slurm 的输出文件,

$ ll -at | head -10
       0 Nov 19 17:56 slurm-1144481.out

第一感觉是 dummy.job 超过时间限制了,然后一看

             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
           1144481   statdgx dummy.jo s******  R    6:57:16      1 chpc-gpu019

竟然才运行 6 小时,而当前时间为

$ date
Sun Nov 20 00:53:59 HKT 2022

这刚好能跟 slurm-1144481.out 的更新时间对得上 (17:56 + 6:57 = 24:53),但是 6h 前我可还在睡梦中,不可能自己提交 job。

第一个猜测是

触发时间限制了,然后 job 自动重启了?

毕竟此前没遇到过触发时间限制,所以并不确信触发时间限制后的行为。如果是这样,下面要验证的就是此 job 实际提交于 2022-10-20 左右。

首先检查 slurm-1144481.out 详细的时间戳,

$ stat slurm-1144481.out 
  File: ‘slurm-1144481.out’
  Size: 0           Blocks: 0          IO Block: 1048576 regular empty file
Device: 2ah/42d Inode: 3225764414  Links: 1

Context: system_u:object_r:user_home_t:s0
Access: 2022-11-02 06:23:31.643498231 +0800
Modify: 2022-11-19 17:56:05.643506847 +0800
Change: 2022-11-19 17:56:05.643506847 +0800
 Birth: -

早于 2022-11-02 就有过访问行为,至少表明该文件不是刚刚创建的。

进一步查看 job 提交日志,

$ sacct --format=JobID,JobName,NodeList,Submit,Start,SystemComment,End,State,Reason,Suspended,Timelimit,Comment --starttime=2022-10-01 | grep dummy
1114583       dummy.job      chpc-cn116 2022-09-29T05:29:58 2022-09-29T05:29:58                 2022-10-14T10:24:05 CANCELLED+                   None   00:00:00 30-00:00:+                
1114584       dummy.job      chpc-cn116 2022-09-29T05:37:18 2022-09-29T05:37:18                 2022-10-14T10:24:03 CANCELLED+                   None   00:00:00 30-00:00:+                
1144480       dummy.job   None assigned 2022-11-02T06:21:39 2022-11-02T06:21:39                 2022-11-02T06:21:39     FAILED                   None   00:00:00 30-00:00:+                
1144481       dummy.job     chpc-gpu019 2022-11-19T17:52:26 2022-11-19T17:56:05                             Unknown    RUNNING              BeginTime   00:00:00 30-00:00:+         

发现相邻的上一个 job 1144480 是 2022-11-02T06:21:39 提交,这说明 1144481 应不早于这个时间戳提交。那第一个猜测不成立。

那问题就来了,

既然没触发 30 天的时间限制,为什么会被重启?

刚好在另一处记录了此次提交 job 提交的记录

image

修改时间换成 HKT 的话是 2022-11-02T06:25,刚好在 job 1144480 的 submit 时间戳的几分钟之后。

还有一点,注意到 REASON 一列 1144481 值为 “BeginTime”,根据🔗,这应该是 pending job 的 reason, 但 job 的详细信息中 Reason = None,可能是因为已经处于 RUNNING 状态,只是 sacct 没有相应地更新 REASON.

$ scontrol show job 1144481
JobId=1144481 JobName=dummy.job

   Priority=29422 Nice=0 Account=stat QOS=stat
   JobState=RUNNING Reason=None Dependency=(null)
   Requeue=1 Restarts=27 BatchFlag=1 Reboot=0 ExitCode=0:0
   RunTime=07:52:04 TimeLimit=30-00:00:00 TimeMin=N/A
   SubmitTime=2022-11-19T17:52:26 EligibleTime=2022-11-19T17:54:27
   AccrueTime=2022-11-19T17:54:27
   StartTime=2022-11-19T17:56:05 EndTime=2022-12-19T17:56:05 Deadline=N/A
   SuspendTime=None SecsPreSuspend=0 LastSchedEval=2022-11-19T17:56:05
   Partition=statdgx AllocNode:Sid=chpc-sandbox:25884
   ReqNodeList=chpc-gpu019 ExcNodeList=(null)
   NodeList=chpc-gpu019
   BatchHost=chpc-gpu019
   NumNodes=1 NumCPUs=1 NumTasks=1 CPUs/Task=1 ReqB:S:C:T=0:0:*:*
   TRES=cpu=1,mem=16000M,node=1,billing=1,gres/gpu=1
   Socks/Node=* NtasksPerN:B:S:C=0:0:*:* CoreSpec=*
   MinCPUsNode=1 MinMemoryNode=0 MinTmpDiskNode=0
   Features=(null) DelayBoot=00:00:00
   OverSubscribe=OK Contiguous=0 Licenses=(null) Network=(null)
   Power=
   MemPerTres=gpu:16000
   TresPerNode=gpu:1
   NtasksPerTRES:0

所以还有另一种可能性,1144481 虽然被提交了,但是一直在队列中,处于 PENDING 状态,直至 2022-11-02T06:21:39 才运行。但 slurm 的提交日志确实也区分了 submit 和 start 这两个时间戳,对于 1144481,这两个时间戳都是 2022-11-19,且中间确有 4 分钟的间隔。另一方面,截图中也明确写成 1144481 已经 submitted,所以它的 submit 时间绝不应该是 2022-11-19T17:52:26. 除非…

解除 PENDING 后,系统重新提交,产生了新的 submit 时间戳?

于是检查是否存在 STATE 为 RUNNING 而 REASON 也为 BeginTime 的 job,还真有几个,

$ sacct -a -X --format=JobID,JobName,NodeList,Submit,Start,SystemComment,End,State,Reason,Suspended,Timelimit,Comment --starttime=2022-10-01 | grep RUNNING | grep BeginTime
1150975           s1h71 chpc-cn[023-02+ 2022-11-17T11:43:44 2022-11-18T21:06:01                             Unknown    RUNNING              BeginTime   00:00:00 7-00:00:00                
1151170      PRD.71.02+      chpc-cn002 2022-11-17T16:36:11 2022-11-18T01:01:59                             Unknown    RUNNING              BeginTime   00:00:00 7-00:00:00                
1144481       dummy.job     chpc-gpu019 2022-11-19T17:52:26 2022-11-19T17:56:05                             Unknown    RUNNING              BeginTime   00:00:00 30-00:00:+                
1150938      tc_aipw_g+     chpc-gpu019 2022-11-19T17:52:26 2022-11-19T17:56:05                             Unknown    RUNNING              BeginTime   00:00:00 4-04:00:00                
1150942      1tc_aipw_+     chpc-gpu019 2022-11-19T17:52:26 2022-11-19T17:56:05                             Unknown    RUNNING              BeginTime   00:00:00 4-04:00:00

而且注意最后三条的 submit, start 时间戳竟然一模一样,而且也在 chpc-gpu019,这不是巧合!于是根据时间戳搜索,看看还有没有更多的 job,又发现两条,但它们运行几个小时后被 cancel 了。

$ sacct -a -X --format=JobID,JobName,NodeList,Submit,Start,SystemComment,End,State,Reason,Suspended,Timelimit,Comment --starttime=2022-10-01 | grep 2022-11-19T17:52:26
1152221       p0.3_glm1 chpc-cn[053-05+ 2022-11-18T20:24:06 2022-11-18T20:24:06                 2022-11-19T17:52:26  NODE_FAIL                   None   00:00:00 7-00:00:00                
1144481       dummy.job     chpc-gpu019 2022-11-19T17:52:26 2022-11-19T17:56:05                             Unknown    RUNNING              BeginTime   00:00:00 30-00:00:+                
1150938      tc_aipw_g+     chpc-gpu019 2022-11-19T17:52:26 2022-11-19T17:56:05                             Unknown    RUNNING              BeginTime   00:00:00 4-04:00:00                
1150942      1tc_aipw_+     chpc-gpu019 2022-11-19T17:52:26 2022-11-19T17:56:05                             Unknown    RUNNING              BeginTime   00:00:00 4-04:00:00                
1152285      mulch_201+ chpc-large-mem+ 2022-11-19T17:52:26 2022-11-19T17:55:05                 2022-11-19T20:49:15 CANCELLED+              BeginTime   00:00:00 7-00:00:00                
1152287      nomulch_2+      chpc-cn051 2022-11-19T17:52:26 2022-11-19T17:56:05                 2022-11-19T20:49:17 CANCELLED+              BeginTime   00:00:00 7-00:00:00 

然而这些只能说明系统在同一时间点进行了某项处理,但并不能指明这是把 1144481 是同其它几个 job 同时从 PENDING 转为 RUNNING,还是把本来是 RUNNING 的几个 job 被突然一起被重新提交。

虽然如此,还是很怀疑是被重新提交的,毕竟根据经验,排队 18 天是几乎不可能的,而且按照 priority 算的话,现在就这一个 job,priority 也应该早就到了。但在无其它证据之前,这只能成为悬案。

不过如果它会重新提交,那有可能会再次“作案”……

2022.11.24

果然,发现了新的 Submit 时间点 2022-11-23T15:50:41,而此前的 Submit 时间点为 2022-11-19T17:52:26

$ date
Thu Nov 24 09:24:13 HKT 2022
$ scontrol show job 1144481
JobId=1144481 JobName=dummy.job
   Priority=29597 Nice=0 Account=stat QOS=stat
   JobState=RUNNING Reason=None Dependency=(null)
   Requeue=1 Restarts=34 BatchFlag=1 Reboot=0 ExitCode=0:0
   RunTime=17:29:58 TimeLimit=30-00:00:00 TimeMin=N/A
   SubmitTime=2022-11-23T15:50:41 EligibleTime=2022-11-23T15:52:42
   AccrueTime=2022-11-23T15:52:42
   StartTime=2022-11-23T15:54:17 EndTime=2022-12-23T15:54:17 Deadline=N/A

Comments