我正在一个远程集群上工作(westgrid > 怪物),我通过文件提交流程.pbs
。我的.pbs
看起来像这样
#!/bin/bash
#PBS -l procs=1
#PBS -l walltime=100:00:00
#PBS -N SimulationName
#PBS -m ea
#PBS -M [email protected]
#PBS -l pmem=3000mb
#PBS -t 1-100
echo "Starting run at: `date`"
R --vanilla --args ${PBS_ARRAYID} < /Path/To/code.R
echo "Job finished with exit code $? at: `date`"
,其中PBS_ARRAYID
将为每个特定作业取 1 到 100 的值。/Path/To/code.R
是使用 编写的某个二进制文件的 R 包装器C
。当我提交作业时
$ qsub mypbs.pbs
一切似乎都运行正常。模拟按预期运行,我得到了输出。问题是,在模拟运行的某个时刻,我经常在“被阻止的作业”中看到奇怪的作业。
$ showq -u myName
active jobs------------------------
JOBID USERNAME STATE PROCS REMAINING STARTTIME
0 active jobs 0 of 4516 processors in use by local jobs (0.00%)
428 of 436 nodes active (98.17%)
eligible jobs----------------------
JOBID USERNAME STATE PROCS WCLIMIT QUEUETIME
0 eligible jobs
blocked jobs-----------------------
JOBID USERNAME STATE PROCS WCLIMIT QUEUETIME
30004048[] matthey NotQueued 1 2:02:00:00 Wed Mar 23 12:56:27
30156104[] matthey NotQueued 1 2:02:00:00 Mon Mar 28 01:14:16
2 blocked jobs
Total jobs: 2
PBS_ARRAYID
作业 ID 确实与正在运行(或之前运行)的作业相同,但这两个被阻止的作业在方括号之间没有任何内容。这些作业在那里停留了很长时间,我无法删除它们
$ qdel 30004048[]
qdel: nonexistent job id: 30004048[]
此外,我无法提交任何新工作(这是主要问题),因为我收到消息
$ qsub mypbs.pbs
qsub: submit error (Maximum number of jobs already in queue MSG=Job 30893576.b0 violates the global server limit of 500 jobs queued per user)
即使我没有违反此服务器限制。最终这些“未排队”作业会消失,但需要相对较长的时间。
这个问题过去曾多次发生在我身上,在这个集群的所有用户中,我似乎是唯一遇到这个问题的人。当联系支持人员时,他们通常会以某种方式删除这两个作业,但到目前为止我还没有收到任何针对此问题的长期解决方案。
- 你知道发生什么事了吗?
- 我可以删除这两个奇怪的工作吗?
- 我怎样才能避免此类事情再次发生?
答案1
“这些作业会在那里停留很长时间”,我猜/希望两年后它们会最终确定下来。无论如何,我偶然发现了同样的问题(“我可以删除这些(…)奇怪的[数组]作业吗”),使用(打字机)引号(单引号或双引号)解决了这个问题:
qdel "job_identifier[]"
删除整个数组。此外,您还可以使用选项指定特定$PBS_ARRAYID
(或范围)-t