2

我们的 SGE 集群设置要求控制器和引擎启动之间存在延迟。如果不存在此延迟,则某些服务器会使用“旧”ipcontroller-client.json文件并尝试连接到以前的(且未运行的)控制器。这是 NFS 的“功能”,因此为了补救,我c.IPClusterStart.delay = 30在 ipcluster_config.py 文件中进行了设置,一切正常。控制器被提交给 SGE,有足够的时间启动和写入它的 json 文件,然后引擎可以正确启动到新运行的控制器。但是,我还希望能够从笔记本启动集群。不幸的是,似乎没有使用此超时,控制器和引擎同时启动(如watch qstat),一些引擎连接(因为从 json 文件中获取新设置)而一些不连接(因为 NFS)。

我在笔记本上运行了一个 strace ,发现它正在使用sge_controllersge_engines脚本(当您按下开始时由笔记本创建)来启动这些进程。

我想知道是否有任何方法可以在这里实现延迟。它以正确的方式启动控制器和引擎(SGE),所以我知道它正在读取ipcluster_config.py.

我用谷歌搜索并搜索了这个网站,但没有运气。希望也许有人可以阐明这种行为的更深层次的运作方式。

谢谢,克里斯

4

1 回答 1

2

好吧,这对于 OP 来说可能为时已晚,但希望它对某人有所帮助。

如果是超时问题,只需将其设置c.EngineFactory.timeoutc.IPEngineApp.wait_for_url_file更大的时间。

如果是由于第一次运行后失败,则可能是由于挥之不去的安全文件,应该从相关的 iPython 配置文件中删除(ipcontroller-engine.json和)以获取完整路径。为了自动执行此操作并使其不那么痛苦,可以将此删除步骤附加到同一配置文件的开头。ipcontroller-client.jsonIPython.utils.path.get_security_fileipcluster_config.py

仅这些更改就足以让我轻松地让集群与笔记本一起运行。

如果这些都不能解决问题,还有其他一些想法(http://mail.scipy.org/pipermail/ipython-user/2011-November/008741.html)。

于 2015-07-02T19:31:04.977 回答