2013-03-13 40 views
2

我们的SGE集群设置要求启动控制器和引擎之间存在延迟。如果此延迟不存在,则某些服务器使用“旧”ipcontroller-client.json文件并尝试连接到以前(并且不在运行中)的控制器。这是一个NFS“功能”,所以为了解决这个问题,我在ipcluster_config.py文件中设置了c.IPClusterStart.delay = 30,并且工作正常。控制器被提交给SGE,有足够的时间来启动和写入其json文件,然后引擎可以正确启动到新运行的控制器。不过,我也想从笔记本启动集群。不幸的是,这个超时似乎没有被使用,控制器和引擎同时启动(如watch qstat所示),一些引擎连接(因为从json文件中获取新的设置),有些则不(由于NFS)。延迟从笔记本启动IPython集群

我在笔记本上跑了一段strace,看到它使用sge_controllersge_engines脚本(当你按下开始时由笔记本创建)来启动这些进程。

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

我搜索了一下,搜索了这个网站,没有运气。希望也许有人能够对这种行为的更深层次的工作有所了解。

谢谢, 克里斯

+0

我发现了一些似乎现在可以工作的东西,但我仍然认为它应该能够在每个群集的基础上进行配置。在'lib/python2.7/site-packages/IPython/frontend/html/notebook/clustermanager.py'中,我将'delay = CFloat(1。,config = True,...)'改为'delay = CFloat( 30.,config = True,...)'。现在,集群以控制器和引擎之间的30段延迟开始。 – 2013-03-13 04:51:05

回答

2

嗯,这可能是太晚了OP,但希望它可以帮助别人。

如果是超时问题,请将c.EngineFactory.timeoutc.IPEngineApp.wait_for_url_file设置为较大的时间。

如果在第一次运行后,由于故障,也可能是由于使用IPython.utils.path.get_security_file获取完整路径的相关IPython的轮廓挥之不去的安全性文件,应该将其删除(ipcontroller-engine.jsonipcontroller-client.json)。为了实现自动化并使其稍微不痛苦,可以将此删除步骤添加到相同配置文件的ipcluster_config.py的开头。

这些更改本身足以让我轻松地使笔记本电脑运行集群。

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