PBS任务只排队,不运行

问题描述

自上次重启之后,pbs队列系统再次出现同样的问题,任务能够正常提交,并进入队列系统,但是始终都处于排队状态,即使有大量的空闲节点。

网上常见的解答

关于这个问题,网上也有大量的讨论,其中说的比较多的解决方案就是更改时区,但是这个解答好像并不适用于我的情况。
链接中提到的是任务提交失败,修改时区后能正常提交任务,但是提交后的任务仍不能自动调度,只能通过qrun来手动调度。

调试过程

因为这几天输入的命令较多,没有及时记录,所以这里只能根据回忆提供大概的过程。

任务列表查询

[root@master ~]# qstat
Job ID                    Name             User            Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
82327.ILC                  conformation     engzsinger			  0 Q hpc001         
82460.ILC                  ...mole-n01      engzsinger            0 Q hpc001         
82471.ILC                  conformation     engzsinger     03:02:58 R hpc001         
82472.ILC                  remote           cosmo1                0 Q hpc001         
82473.ILC                  remote           cosmo1                0 Q hpc001         
82474.ILC                  remote           cosmo1                0 Q hpc001         
82475.ILC                  remote           cosmo1                0 Q hpc001 

使用命令qstat进行查询,看到除了一个运行任务,所有任务都在排队,即状态码为Q,而此时服务器上明显有大量空闲节点。查看这几个排队任务的提交脚本,发现提交任务时指定的节点并不跟正在运行的任务冲突,所以认定这个排队状态是调度失败导致的。

任务调度系统

既然认为是任务调度出了问题,那自然就要解决任务调度的问题。torque的工作模式是

  • 管理节点上运行 pbs_server 服务,向队列提交任务
  • 计算节点上运行pbs_mom 服务,监听管理节点的分派,并进行计算
  • 管理节点上运行pbs_sched 服务或 maui.d 服务,进行任务的调度

相应的服务可以通过命令ps -e | grep "service_name"进行查询,这里我们关心的是任务调度服务,torque默认的调度方式是pbs_sched,用户也可以根据自己的需要,采用功能更强大的maui,所以这一步要做的是找到自己运行的任务调度程序,并将其重启。
这一尝试在前几天 已经尝试过,但是效果很短暂,而且道理没搞清楚。

查看单个任务的详细信息

  • torque本身带有的命令tracejob能够对队列中任务的状态进行追踪
[engzsinger@master ION_DCM]$ tracejob 82327
/var/spool/torque/server_priv/accounting/20200822: Permission denied
/var/spool/torque/mom_logs/20200822: No matching job records located
/var/spool/torque/sched_logs/20200822: No such file or directory

Job: 82327.ILC

08/22/2020 01:07:27  S    Unauthorized Request, request type: 15, Object: Job, Name: 82327.ILC, request from: root@159.226.63.32
08/22/2020 01:10:42  S    Unauthorized Request, request type: 15, Object: Job, Name: 82327.ILC, request from: root@159.226.63.32
08/22/2020 02:07:57  S    Unauthorized Request, request type: 15, Object: Job, Name: 82327.ILC, request from: root@159.226.63.32
08/22/2020 03:08:27  S    Unauthorized Request, request type: 15, Object: Job, Name: 82327.ILC, request from: root@159.226.63.32
08/22/2020 04:08:57  S    Unauthorized Request, request type: 15, Object: Job, Name: 82327.ILC, request from: root@159.226.63.32
08/22/2020 05:09:27  S    Unauthorized Request, request type: 15, Object: Job, Name: 82327.ILC, request from: root@159.226.63.32
08/22/2020 06:09:45  S    Job Run at request of root@ILC
08/22/2020 06:09:48  S    unable to run job, MOM rejected/timeout
08/22/2020 06:09:48  S    unable to run job, send to MOM '10.0.10.11' failed
08/22/2020 07:09:54  S    Job Run at request of root@ILC
08/22/2020 07:09:57  S    unable to run job, MOM rejected/timeout
08/22/2020 07:09:57  S    unable to run job, send to MOM '10.0.10.11' failed
08/22/2020 08:10:10  S    Job Run at request of root@ILC
08/22/2020 08:10:13  S    unable to run job, MOM rejected/timeout
08/22/2020 08:10:13  S    unable to run job, send to MOM '10.0.10.11' failed

这里能看到系统几次调度该任务的尝试,都以失败告终,而原因是发送到MOM失败,也就是计算节点接受不到任务。

  • 采用maui包中的checkjob命令进行查看,
[engzsinger@master ~]$ checkjob 82460


checking job 82460

State: Idle  EState: Deferred
Creds:  user:engzsinger  group:users  class:hpc001  qos:DEFAULT
WallTime: 00:00:00 of   INFINITY
SubmitTime: Fri Aug 21 16:54:49
  (Time Queued  Total: 1:05:17:54  Eligible: 00:00:00)

StartDate: -00:58:28  Sat Aug 22 21:14:15
Total Tasks: 24

Req[0]  TaskCount: 24  Partition: DEFAULT
Network: [NONE]  Memory >= 0  Disk >= 0  Swap >= 0
Opsys: [NONE]  Arch: [NONE]  Features: [new]


IWD: [NONE]  Executable:  [NONE]
Bypass: 0  StartCount: 21
PartitionMask: [ALL]
Flags:       HOSTLIST RESTARTABLE
HostList: 
  [n01:24]
job is deferred.  Reason:  RMFailure  (cannot start job - RM failure, rc: 15025, msg: 'Bad UID for job execution MSG=connection to mom timed out')
Holds:    Defer  (hold reason:  RMFailure)
PE:  24.00  StartPriority:  58
cannot select job 82460 for partition DEFAULT (job hold active)

这里显示的信息主要是任务目前的详细状态,以及对应提交的节点,可能的错误,其中提到了Bad UID for job execution MSG=connection to mom timed out的错误,而通过这个错误进行搜索,也能找到很多解答

主要原因分析

综合上面的分析,这个问题主要是节点之间通讯导致的问题,管理节点于计算节点的通讯失败。从tracejob的输出结果看,调度系统一直在尝试提交任务,但始终没有被接受执行。
之前一直笃定是调度服务的错误导致的,而且深信计算节点没有问题,结合以上分析后,登录到计算节点看一下,结果提示输入密码,而且输入密码后提示密码错误。这之前也没改过密码啊,怎么突然就不行了。
搭建PBS服务器的过程中,考虑到计算节点安装软件的不便利,各节点创建用户比较麻烦,会同时搭建文件共享服务器和用户信息共享服务器,这样,只需要在管理节点上配置用户,用户可以直接使用相同的登录选项登陆计算节点。现在这个问题可能是计算节点的用户信息共享服务不正常导致的,那下一步主要从这一方面考虑如何解决问题。


版权声明:本文为EngzSinger原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。