2014-10-30 22 views
0

我正在編寫一個並行構建場,以針對各種平臺/環境構建C++跨平臺應用程序。每次將新代碼推送到git倉庫時,我都會針對所有平臺構建和測試最新的代碼。GNU並行主機粘性作業

我已經安裝了並行設備,使用--sshlogin選項在幾臺主機之間正確分配作業。 我傳輸文件,收集輸出和結果。這一切都工作得很好,我喜歡這個工具。

對於某些平臺,構建時間有時相當長,我希望構建儘可能增量。

我唯一的問題是,如果調度程序將作業發送到同一臺計算機並在此特定主機上重複使用先前構建的工件,則構建僅爲增量。

說我有3個主機,我有1個機會在3爲建設增量。如果主機一段時間沒有構建這個平臺,則可能需要很長時間。

是否有可能獲得對主機的控制權,一個特定的輸入源將在其上運行並且只有在主機繁忙時纔回退到其他主機?

理想情況下,我很希望看到一個標籤系統,在該標籤系統中,我將輸入源標記爲名稱並標記多個具有名稱的主機,從而創建專用於該類型構建的作業池和池池。

但是一個非常簡單的實現,其中輸入源以與sshlogins的定義順序相同的順序進行分發,在我的情況下可以是一個簡單的&快速修復。

我試圖找到自己實現它的源代碼,但是當我瀏覽Savannah上的代碼時,我只能看到文檔生成。

任何想法?

感謝,

中號

回答

0

我一直試圖在郵件列表上討論這個想法,正如你所建議的,但從未在10多天內有過任何回覆......我想你現在一定在忙於其他事情。所以我沿着並分離了源代碼進行必要的更改並使我的解決方案能夠正常工作。 我推它有一個星期前:

http://michakfromparis.github.io/gnu-parallel-sticky/

的源代碼可以在GitHub上的位置:

https://github.com/michaKFromParis/gnu-parallel-sticky

不完全是簡單的,沒有任何指導的源代碼有很多的歷史,所以我試圖保持手術的變化,以減輕未來版本的合併。 我已經在生產中使用它一個多星期了,它在我的配置中完美工作。 它也與舊格式兼容,應該是常用並行使用的附加替代品,具有附加功能。 很想得到其他用戶的反饋,儘管它可能不完全乾燥。 感謝您分享原始源代碼。

最好的問候,

中號

0

目前對於給定的參數優先給定sshlogin不支持。源代碼是https://savannah.gnu.org/git/?group=parallel

隨時加入郵件列表和討論的想法:https://lists.gnu.org/mailman/listinfo/parallel

在代碼中的唯一任務是當作業失敗上sshlogin,然後GNU並行喜歡重試在另一個sshlogin上工作。也許這可能會延長?

如果某個作業被標記爲某個sshlogin的-1時間失敗,那麼GNU Parallel應該更喜歡在該sshlogin上運行該作業。