问题描述
自上次重启之后,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服务器的过程中,考虑到计算节点安装软件的不便利,各节点创建用户比较麻烦,会同时搭建文件共享服务器和用户信息共享服务器,这样,只需要在管理节点上配置用户,用户可以直接使用相同的登录选项登陆计算节点。现在这个问题可能是计算节点的用户信息共享服务不正常导致的,那下一步主要从这一方面考虑如何解决问题。