我们的SGE群集设置要求控制器和引擎启动之间存在延迟。如果没有这种延迟,一些服务器使用" old" ipcontroller-client.json
个文件,并尝试连接到以前(而不是正在运行)的控制器。这是一个NFS"功能",为了解决这个问题,我在ipcluster_config.py文件中设置了c.IPClusterStart.delay = 30
,并且运行良好。控制器被提交给SGE,有足够的时间来启动和写入其json文件,然后引擎可以正确启动到新运行的控制器。但是,我也希望能够从笔记本电脑启动集群。不幸的是,似乎没有使用此超时,控制器和引擎同时启动(如watch qstat
所示),一些引擎连接(因为从json文件中获取新设置)有些人没有(因为NFS)。
我在笔记本上运行了一个strace,看到它使用sge_controller
和sge_engines
脚本(按下启动时由笔记本创建)来启动这些过程。
我想知道是否有任何方法可以在这里实施延迟。它以正确的方式(SGE)启动控制器和引擎,所以我知道它正在阅读ipcluster_config.py
。
我用Google搜索并搜索了这个网站,没有运气。希望也许有人可以对这种行为的深层运作有所了解。
谢谢, 克里斯
答案 0 :(得分:2)
嗯,对于OP来说这可能为时已晚,但希望它有助于某人。
如果是超时问题,只需将c.EngineFactory.timeout
和c.IPEngineApp.wait_for_url_file
设置为更长的时间。
如果是第一次运行后失败,可能是由于延迟的安全文件,应使用{{1}从相关的iPython配置文件中删除(ipcontroller-engine.json
和ipcontroller-client.json
)获得完整的路径。为了使其自动化并减少痛苦,可以将此删除步骤添加到相同配置文件IPython.utils.path.get_security_file
的开头。
仅这些更改就足以让我轻松地使用笔记本运行集群。
如果这些都没有解决问题,还有其他一些想法(http://mail.scipy.org/pipermail/ipython-user/2011-November/008741.html)。