我想找到一個用戶空間工具(最好在Python中 - 禁止在任何我可以輕易修改的東西中,如果它尚未完成我所需的工作)來替換很短的劇本我一直在使用,做以下兩件事情:負載,可用內存用於作業調度的Python庫,ssh
- 投票少於100臺計算機(Fedora 13的,所以發生),如果它看起來像有人使用他們
- 爲作業選擇好的主機,通過ssh運行這些作業。這些作業是執行任意命令行程序,讀寫共享文件系統 - 通常是圖像處理腳本或類似的 - CPU,有時是內存密集型任務。
例如,使用我的當前腳本,我可以在一個python提示
>>> import hosts
>>> hosts.run_commands(['users']*5)
或從命令行
% hosts.py "users" "users" "users" "users" "users"
運行命令users
5倍(發現5後通過從配置文件檢查至少5臺計算機上的CPU負載和可用內存來運行命令的計算機)。除了剛剛運行的腳本之外,不應該有任何作業服務器,並且在運行這些命令的計算機上不需要工作守護進程或進程。
我還希望能夠跟蹤作業,在失敗時再次運行作業等,但這些是額外的功能(在真正的作業調度程序中非常標準),我實際上並不需要。
我發現很好的Python ssh庫,例如classh和PuSSH,它們沒有我想要的(非常簡單的)負載平衡功能。另一方面,我想要的是Condor或Slurm,正如Crispamares在我澄清之前所建議的,我希望更輕一些。那些人會以正確的方式做事,但是從閱讀他們的信息來看,他們聽起來像是在我需要的時候在用戶空間中旋轉它們會令人討厭是不可能的。這不是一個專用的羣集,我沒有在這些主機上的root訪問權限。
我目前正計劃圍繞classh使用一些基本輪詢計算機的包裝,每當我需要知道他們有多忙時,如果我找不到別的東西。
什麼樣的工作? [fabric](http://docs.fabfile.org/en/1.0.1/index.html)(ssh wrapper,沒有作業調度),[jenkins](https://wiki.jenkins-ci.org/display/JENKINS/Meet + Jenkins)(CI工具:可重複任務,零設置,簡單負載均衡),[disco](http://discoproject.org/)(MapReduce,erlang + python,只有python jobs?),hadoop (大,需要root?),PBS(轉矩 - 傳統工作負載管理系統)。 – jfs 2011-04-12 16:37:46
謝謝J.F.編輯的問題,說作業正在運行處理圖像,讀寫共享文件系統的命令行程序。 – Thomas 2011-04-12 17:11:58
這種用法可能是合理的,但是直到平行執行代碼纔是特徵。 – Thomas 2011-04-12 17:31:43