2013-03-13 65 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)。