这个问题与

pbs job no output when busy有关.即我提交的一些工作在PBS / Torque“忙”时不产生输出.我想,当一个接一个地提交许多工作时,它更加繁忙,并且正如它所发生的那样,以这种方式提交的工作,我经常会得到一些不产生任何输出的工作.

这是一些代码.

假设我有一个名为“x_analyse.py”的python脚本,它将包含一些数据的文件作为输入,并分析存储在文件中的数据:

./x_analyse.py data_1.pkl

现在,假设我需要:

(1)准备N个这样的数据文件:data_1.pkl,data_2.pkl,…,data_N.pkl

(2)让“x_analyse.py”对它们各自起作用,并将结果写入每个文件的文件中.

(3)由于不同数据文件的分析都是相互独立的,我将使用PBS / Torque并行运行它们以节省时间. (我认为这实际上是一个’令人尴尬的并行问题’.)

我有这个python脚本来执行上述操作:

import os

import sys

import time

N = 100

for k in range(1, N+1):

datafilename = 'data_%d' % k

file = open(datafilename + '.pkl', 'wb')

#Prepare data set k, and save it in the file

file.close()

jobname = 'analysis_%d' % k

file = open(jobname + '.sub', 'w')

file.writelines( [ '#!/bin/bash\n',

'#PBS -N %s\n' % jobname,

'#PBS -o %s\n' % (jobname + '.out'),

'#PBS -q compute\n' ,

'#PBS -j oe\n' ,

'#PBS -l nodes=1:ppn=1\n' ,

'#PBS -l walltime=5:00:00\n' ,

'cd $PBS_O_WORKDIR\n' ,

'\n' ,

'./x_analyse.py %s\n' % (datafilename + '.pkl') ] )

file.close()

os.system('qsub %s' % (jobname + '.sub'))

time.sleep(2.)

该脚本准备要分析的一组数据,将其保存到文件中,写入用于分析此数据集的pbs提交文件,提交作业以执行此操作,然后再次使用下一组数据执行相同操作, 等等.

实际上,当脚本运行时,作业ID列表会在提交作业时打印到标准输出. ‘ls’显示有N个.sub文件和N .pkl数据文件. ‘qstat’显示所有作业都在运行,状态为’R’,然后完成,状态为’C’.但是,之后,’ls’表示输出文件少于N.out,而“x_analyse.py”生成的结果文件少于N个.实际上,某些作业不会产生任何输出.如果我要清除所有内容,并重新运行上面的脚本,我会得到相同的行为,一些工作(但不一定与上次相同)不产生任何输出.

有人建议,通过增加连续工作提交之间的等待时间,事情会有所改善.

time.sleep(10.) #or some other waiting time

但我觉得这不是最令人满意的,因为我已经尝试过0.1s,0.5s,1.0s,2.0s,3.0s,其中没有一个真的有帮助.我被告知,50多岁的等待时间似乎工作正常,但如果我必须提交100份工作,等待时间将是大约5000s,这似乎非常长.

我尝试通过提交作业数组来减少’qsub’的使用次数.我会像以前一样准备所有数据文件,但只有一个提交文件“analyse_all.sub”:

#!/bin/bash

#PBS -N analyse

#PBS -o analyse.out

#PBS -q compute

#PBS -j oe

#PBS -l nodes=1:ppn=1

#PBS -l walltime=5:00:00

cd $PBS_O_WORKDIR

./x_analyse.py data_$PBS_ARRAYID.pkl

然后提交

qsub -t 1-100 analyse_all.sub

但即便如此,一些工作仍然无法产生产量.

这是个常见的问题吗?我做的事情不对吗?在工作提交之间等待最好的解决方案?我可以做些什么来改善这个吗?

在此先感谢您的帮助.

编辑1:

我正在使用Torque版本2.4.7和Maui版本3.3.

另外,假设作业ID为1184430.mgt1的作业不生成输出,作业ID为1184431.mgt1的作业按预期生成输出,当我在这些上使用’tracejob’时,我得到以下内容:

[batman@gotham tmp]$tracejob 1184430.mgt1

/var/spool/torque/server_priv/accounting/20121213: Permission denied

/var/spool/torque/mom_logs/20121213: No such file or directory

/var/spool/torque/sched_logs/20121213: No such file or directory

Job: 1184430.mgt1

12/13/2012 13:53:13 S enqueuing into compute, state 1 hop 1

12/13/2012 13:53:13 S Job Queued at request of batman@mgt1, owner = batman@mgt1, job name = analysis_1, queue = compute

12/13/2012 13:53:13 S Job Run at request of root@mgt1

12/13/2012 13:53:13 S Not sending email: User does not want mail of this type.

12/13/2012 13:54:48 S Not sending email: User does not want mail of this type.

12/13/2012 13:54:48 S Exit_status=135 resources_used.cput=00:00:00 resources_used.mem=15596kb resources_used.vmem=150200kb resources_used.walltime=00:01:35

12/13/2012 13:54:53 S Post job file processing error

12/13/2012 13:54:53 S Email 'o' to batman@mgt1 failed: Child process '/usr/lib/sendmail -f adm batman@mgt1' returned 67 (errno 10:No child processes)

[batman@gotham tmp]$tracejob 1184431.mgt1

/var/spool/torque/server_priv/accounting/20121213: Permission denied

/var/spool/torque/mom_logs/20121213: No such file or directory

/var/spool/torque/sched_logs/20121213: No such file or directory

Job: 1184431.mgt1

12/13/2012 13:53:13 S enqueuing into compute, state 1 hop 1

12/13/2012 13:53:13 S Job Queued at request of batman@mgt1, owner = batman@mgt1, job name = analysis_2, queue = compute

12/13/2012 13:53:13 S Job Run at request of root@mgt1

12/13/2012 13:53:13 S Not sending email: User does not want mail of this type.

12/13/2012 13:53:31 S Not sending email: User does not want mail of this type.

12/13/2012 13:53:31 S Exit_status=0 resources_used.cput=00:00:16 resources_used.mem=19804kb resources_used.vmem=154364kb resources_used.walltime=00:00:18

编辑2:

对于不产生输出的作业,’qstat -f’返回以下内容:

[batman@gotham tmp]$qstat -f 1184673.mgt1

Job Id: 1184673.mgt1

Job_Name = analysis_7

Job_Owner = batman@mgt1

resources_used.cput = 00:00:16

resources_used.mem = 17572kb

resources_used.vmem = 152020kb

resources_used.walltime = 00:01:36

job_state = C

queue = compute

server = mgt1

Checkpoint = u

ctime = Fri Dec 14 14:00:31 2012

Error_Path = mgt1:/gpfs1/batman/tmp/analysis_7.e1184673

exec_host = node26/0

Hold_Types = n

Join_Path = oe

Keep_Files = n

Mail_Points = a

mtime = Fri Dec 14 14:02:07 2012

Output_Path = mgt1.gotham.cis.XXXX.edu:/gpfs1/batman/tmp/analysis_7.out

Priority = 0

qtime = Fri Dec 14 14:00:31 2012

Rerunable = True

Resource_List.nodect = 1

Resource_List.nodes = 1:ppn=1

Resource_List.walltime = 05:00:00

session_id = 9397

Variable_List = PBS_O_HOME=/gpfs1/batman,PBS_O_LANG=en_US.UTF-8, PBS_O_LOGNAME=batman,

PBS_O_PATH=/gpfs1/batman/bin:/usr/mpi/gcc/openmpi-1.4/bin:/gpfs1/batman/workhere/instal

ls/mygnuplot-4.4.4/bin/:/gpfs2/condor-7.4.4/bin:/gpfs2/condor-7.4.4/sb

in:/usr/lib64/openmpi/1.4-gcc/bin:/usr/kerberos/bin:/usr/local/bin:/bi

n:/usr/bin:/opt/moab/bin:/opt/moab/sbin:/opt/xcat/bin:/opt/xcat/sbin,

PBS_O_MAIL=/var/spool/mail/batman,PBS_O_SHELL=/bin/bash,

PBS_SERVER=mgt1,PBS_O_WORKDIR=/gpfs1/batman/tmp,

PBS_O_QUEUE=compute,PBS_O_HOST=mgt1

sched_hint = Post job file processing error; job 1184673.mgt1 on host node

26/0Unknown resource type REJHOST=node26 MSG=invalid home directory '

/gpfs1/batman' specified, errno=116 (Stale NFS file handle)

etime = Fri Dec 14 14:00:31 2012

exit_status = 135

submit_args = analysis_7.sub

start_time = Fri Dec 14 14:00:31 2012

Walltime.Remaining = 1790

start_count = 1

fault_tolerant = False

comp_time = Fri Dec 14 14:02:07 2012

与产生输出的工作相比:

[batman@gotham tmp]$qstat -f 1184687.mgt1

Job Id: 1184687.mgt1

Job_Name = analysis_1

Job_Owner = batman@mgt1

resources_used.cput = 00:00:16

resources_used.mem = 19652kb

resources_used.vmem = 162356kb

resources_used.walltime = 00:02:38

job_state = C

queue = compute

server = mgt1

Checkpoint = u

ctime = Fri Dec 14 14:40:46 2012

Error_Path = mgt1:/gpfs1/batman/tmp/analysis_1.e118468

7

exec_host = ionode2/0

Hold_Types = n

Join_Path = oe

Keep_Files = n

Mail_Points = a

mtime = Fri Dec 14 14:43:24 2012

Output_Path = mgt1.gotham.cis.XXXX.edu:/gpfs1/batman/tmp/analysis_1.out

Priority = 0

qtime = Fri Dec 14 14:40:46 2012

Rerunable = True

Resource_List.nodect = 1

Resource_List.nodes = 1:ppn=1

Resource_List.walltime = 05:00:00

session_id = 28039

Variable_List = PBS_O_HOME=/gpfs1/batman,PBS_O_LANG=en_US.UTF-8,

PBS_O_LOGNAME=batman,

PBS_O_PATH=/gpfs1/batman/bin:/usr/mpi/gcc/openmpi-1.4/bin:/gpfs1/batman/workhere/instal

ls/mygnuplot-4.4.4/bin/:/gpfs2/condor-7.4.4/bin:/gpfs2/condor-7.4.4/sb

in:/usr/lib64/openmpi/1.4-gcc/bin:/usr/kerberos/bin:/usr/local/bin:/bi

n:/usr/bin:/opt/moab/bin:/opt/moab/sbin:/opt/xcat/bin:/opt/xcat/sbin,

PBS_O_MAIL=/var/spool/mail/batman,PBS_O_SHELL=/bin/bash,

PBS_SERVER=mgt1,PBS_O_WORKDIR=/gpfs1/batman/tmp,

PBS_O_QUEUE=compute,PBS_O_HOST=mgt1

etime = Fri Dec 14 14:40:46 2012

exit_status = 0

submit_args = analysis_1.sub

start_time = Fri Dec 14 14:40:47 2012

Walltime.Remaining = 1784

start_count = 1

似乎一个的退出状态是0而不是另一个的退出状态.

编辑3:

从’qstat -f’输出如上所述,似乎问题与后期作业文件处理中的“陈旧NFS文件句柄”有关.通过提交数百个测试作业,我已经能够识别出许多产生失败作业的节点.通过sshing到这些,我可以在/ var / spool / torque / spool中找到丢失的PBS输出文件,其中我还可以看到属于其他用户的输出文件.这些有问题的节点的一个奇怪之处在于,如果它们是选择使用的唯一节点,则作业可以正常运行.只有当它们与其他节点混合时才会出现问题.

由于我不知道如何修复后期作业处理“过时的NFS文件句柄”,我通过向他们提交“虚拟”作业来避免这些节点

echo sleep 60 | qsub -lnodes=badnode1:ppn=2+badnode2:ppn=2

在提交真正的工作之前.现在所有工作都按预期产生输出,并且无需在连续提交之前等待.

最佳答案 我在失败的作业的tracejob输出中看到两个问题.

首先是Exit_status = 135.此退出状态不是Torque错误代码,而是脚本返回的退出状态x_analyse.py. Python没有使用sys.exit()函数的约定,135代码的源代码可能位于脚本中使用的模块之一.

第二个问题是作业文件处理失败.这可能表示节点配置错误.

从现在开始,我猜.由于成功的工作大约需要00:00:16,因此延迟50秒可能会让您的所有工作都落在第一个可用节点上.延迟较小时,您将获得更多节点,并最终命中错误配置的节点,或者在单个节点上同时执行两个脚本.我会修改提交脚本添加一行

'echo $PBS_JOBID :: $PBS_O_HOST >> debug.log',

到生成.sub文件的python脚本.这会将执行主机的名称添加到debug.log中,如果我正确理解您的设置,它将驻留在公共文件系统上.

然后,您(或Torque管理员)可能希望在故障节点上的MOM假脱机目录中查找未处理的输出文件,以获取进一步诊断的一些信息.

python qsub是啥意思_python – 使用qsub提交连续和独立作业的速度有多快?相关推荐

  1. python 爬虫 博客园_Python爬虫爬取博客园作业

    分析一下他们的代码,我在浏览器中对应位置右键,然后点击检查元素,可以找到对应部分的代码.但是,直接查看当前网页的源码发现,里面并没有对应的代码.我猜测这里是根据服务器上的数据动态生成的这部分代码,所以 ...

  2. python运行代码不成功_python的运行时易犯错误,你中招了没?快来学习了

    小编话不多说,上干货!!欢迎分享跟多python知识,转发++关注,帮助跟多学习的程序猿!!! 1)忘记在 if , elif, else, for, while, class,def声明末尾添加 : ...

  3. 知道python程序设计基础期末答案_Python程序设计基础_知到答案章节作业期末答案...

    资本主义积累的历史趋势是()A.剥夺者被剩夺,资本主义被种新的社会形态所取代B.无产阶级的贫 第一掌骨基底部骨折整复后,应将拇指固定于()A.背伸位B.掌屈位C.内收位D.中立位E.外展位 货币最基本 ...

  4. python log函数怎么打_Python的log日志功能及设置方法

    python log函数怎么打_Python的log日志功能及设置方法_Elaine要当律师的博客-CSDN博客

  5. python判断素数的函数_Python素数prime函数练习_Python源码实操

    Python素数prime函数练习_Python源码实操 素数prime函数练习 1) 写一个函数isprime(x) 判断x是否为素数,如果是素数,返回True,否则返回False def ispr ...

  6. c语言实现爬虫功能,用C/C 扩展Python语言_python 调用c语言 python实现简单爬虫功能_python实现简单爬虫...

    用C/C 扩展Python语言 Python是一门功能强大的脚本语言,它的强大不仅表现在功能上,还表现在其扩展性上.她提供大量的API以方便程序员利用C/C++对Python进行扩展.因为执行速度慢几 ...

  7. python一个字母红了_Python练习:最后一个字母/第一个字母

    当您需要测试lst中的每个单词时,您可以使用一个双for循环,但这不是我们想要的.我们只需要一个for循环,我们需要存储前一个单词,这样我们就可以针对当前单词对其进行测试.像这样:def lastfi ...

  8. python内置数据结构教程_python课程第二周 内置数据结构——列表和元组

    5种内置数据结构:列表.元组.字典.集合.字符串.列表.字典.字符串三种被称为线性结构.针对线性结构的操作有:切片.封包和解包.成员运算符.迭代. 针对数据结构的操作有解析式:解析式分为列表解析.生成 ...

  9. python和r语言比较_Python和R语言之分析对比 - 数据分析

    在Python中调用R或在R中调用Python,为什么是"和"而不是"或"? 在互联网中,关于"R和Python"的文章,排名前十的搜索结果 ...

最新文章

  1. 函数声明(函数原型)的一些关键技巧
  2. Java - Poi 操作 Excel
  3. 将HTML字符转换为DOM节点并动态添加到文档中
  4. android ui布局适配,Android适配全面总结(一)----屏幕适配
  5. linux 修改时区_教你在Centos8中更改时区
  6. sicknss剖解整理
  7. wampserver启动报错:1 of 2 services running - 解决篇
  8. java puzzlers英文版_java puzzlers [更新至14.04.03]
  9. Zookeeper-单机/集群安装
  10. Java利用URL实现文件下载
  11. 【Android】spinner下拉框样式修改
  12. laravel excel 导出图片
  13. 基于JS实现简单甘特图
  14. 12306 抢票助手 Java
  15. Ubuntu 设置合上笔记本盖子不休眠的方法
  16. 不想周末被工作提醒打扰?你需要这个手机便签消息免打扰设置
  17. 冰羚 example-icedelivery-README.md翻译
  18. 异贝,通过移动互联网技术,为中小微实体企业联盟、线上链接、线上线下自定义营销方案推送。案例60
  19. 数字芯片加工生产全流程漫谈
  20. CCW 下填Modbus Mapping简单方法

热门文章

  1. GUI 图形用户界面编程实例-文件对话框获取文件
  2. 如何制定产品知识培训方案
  3. 2022 6月软件测试面试题(400道)【附带答案】持续更新...
  4. 数学分析教程史济怀练习6.3
  5. 案例分享 | 纽扣电池石墨片厚度及缺陷检测
  6. MybatisPlus快速入门上手
  7. 在M1芯片arm架构上的mac安装origin和materials studio
  8. 建筑力学与结构【12】
  9. 我爱上了幕布这个软件
  10. css3动态画廊,11个非常棒的CSS3实现的图片画廊