EMi*_*ler 5 environment sync qsub sungridengine
我有一个perl脚本,它准备文件以输入二进制程序,并将二进制程序的执行提交给SGE排队系统版本6.2u2.
提交的作业带有-sync y允许父perl脚本使用waitpid函数监视已提交作业状态的选项.
这也非常有用,因为将SIGTERM发送到父perl脚本会将此信号传播给每个子节点,然后将这些信号转发到qsub,从而优雅地终止所有关联的已提交作业.
因此,能够使用此-sync y选项提交作业至关重要.
不幸的是,我一直收到以下错误:
Unable to initialize environment because of error: range_list containes no elements
请注意"容器"的拼写错误.那不是拼写错误.它只是向您展示了代码/错误消息的这个区域必须维护得多么糟糕.
产生这种错误的尝试失败提交甚至产生输出和错误文件*.e{JOBID}和*.o{JOBID}.提交完全失败了.
搜索谷歌此错误消息只会导致隐藏的留言板上的未解决的帖子.
甚至不能可靠地发生此错误.我可以重新运行我的脚本,相同的工作甚至不一定会产生错误.我尝试提交作业的节点似乎也无关紧要.
我希望有人可以解决这个问题.
因此,任何这些问题的答案都可以解决我的问题:
小智 9
我们的网站在SGE 6.2u5中遇到了这个问题.我在邮件列表上发布了一些问题,但没有解决方案.到现在.
事实证明,错误信息是虚假的.我通过阅读Univa github"open-core"repo上的更改日志来发现这一点.我后来看到了Son of Gridengine v8.0.0c发行说明中提到的问题.
以下是github repo中的相关提交:
错误消息应该说的是您已达到qsub sync -y系统中作业数量的限制.此参数称为MAX_DYN_EC.我们版本中的默认值为99,上面的更改将默认值增加到1000.
的定义MAX_DYN_EC(从参阅sge_conf(5)手册页)是:
设置动态事件客户端的最大数量(由qsub -sync y和Grid Engine DRMAA API库会话使用).默认设置为99.动态事件客户端的数量不应大于系统具有的文件描述符数量的一半.文件描述符的数量在与所有exec主机,所有事件客户端和qmaster所需的文件句柄的连接之间共享.
您可以使用以下命令检查有多少动态事件客户端:
$ qconf -secl | grep qsub | wc -l
Run Code Online (Sandbox Code Playgroud)
我们已添加MAX_DYN_EC=1000到qmaster_paramsvia qconf -mconf.我已经测试了提交数百个qsub -sync y作业,我们不再遇到range_list错误.在MAX_DYN_EC更改之前,这样做会可靠地触发错误.