高通量計算框架HTCondor(六)——拾遺

1. 正文

1.1. 一些問題

如果真正要將HTCondor高通量計算產品化還需要很多工作要做,HTCondor並沒有GUI界面,更多更全面的功能在Linux系統下的命令窗口下更方便。

拆分任務也是使用者值得考慮的問題,很多的密集運算其實不太方便拆分,拆分後大概率要進行合併操作,這種合併操作可能也相當耗時,且只能單機運算不能進行分佈式計算。拆分任務還需要一定的經驗,即如何保證負載均衡,讓所有的任務同時完成。

文件訪問也是個值得研究的問題。Windows下回默認使用文件傳輸機制,也就是將數據隨着任務程序發送到任務機上區運行,這種方式往往會造成巨大的IO阻塞;再運行完成後,傳送的數據又會被清空刪除,也造成了IO性能浪費。所以,如果條件允許的情況下,最好還是使用分佈式文件管理系統,當然這又是另外一個問題。

Windows下使用的vanilla模式部分功能還是受限的:

  1. 是發送到任務機的任務程序無法訪問任務機的網絡地址資源,這是由於安全策略決定的;
  2. 發送的任務程序被進一步封裝了,默認參數有改變;
  3. 在任務機計算資源存在問題時,不能自動遷移以及斷點續作。這個功能對於HTC來說是比較重要的,HTC處理的就是穩定的進行規模運算的問題。這個問題也需要進一步深究。

HTCondor本身的計算資源是按照CPU的核心數劃分的;這一點也很值得商榷。如果給一個8核的機器提交任務,這臺機器就會同時運行8個任務,如果恰好這個任務是與IO密集相關的,就會造成IO性能的浪費。畢竟硬盤總是隻有一個磁頭,單個磁頭在磁盤中反覆移動,會造成磁盤的損耗。而且CPU可以按照核心數劃分,那麼GPU資源呢?對於基於GPU計算的任務程序該如何劃分呢?很多實際的情況下可能是把一臺機器作爲一個節點更合理一些。

爲了達到更好的性能,我曾經簡單的採用文件共享機制的辦法。也就是HTCondor的任務程序雖然無法訪問網絡資源,但是可以在計算之前把文件共享做好,把需要的數據提前傳送到任務機器上去,保證任務程序訪問本地資源即可。這樣發送的數據可以反覆使用,有助於後續任務的執行效率。這種辦法怎麼說呢,除非你對網絡文件共享那一套非常熟悉,否則建議不要這麼做。

1.2. 使用建議

  1. condor_q顯示任務爲H也就是掛起,說明發送的任務程序可能無法正常運行,一般是任務機器缺少必要的運行環境如一些dll。
  2. 網絡環境需要保持穩定。一些安全軟件、防火牆、網絡工具可能會造成網絡環境的變動,造成任務無法執行。上一篇的實例是基於本地局域網的。
  3. HTC更強調穩定性而不僅是高性能,所有的改動都要基於這個原則。
  4. HTCondor有設置任務隊列優先級運行的功能condor_prio,可以查看文檔內相關的說明。
  5. 在HTCondor幫助文檔的7.2.4節"Executing Jobs as the Submitting User"提到了訪問任務程序網絡資源的問題:

By default, HTCondor executes jobs on Windows using dedicated run accounts that have minimal access rights and privileges, and which are recreated for each new job. As an alternative, HTCondor can be configured to allow users to run jobs using their Windows login accounts. This may be useful if jobs need access to files on a network share, or to other resources that are not available to the low-privilege run account.
This feature requires use of a condor_credd daemon for secure password storage and retrieval. With the condor_credd daemon running, the user’s password must be stored, using the condor_store_cred tool. Then, a user that wants a job to run using their own account places into the job’s submit description file
run_as_owner = True

這一段的意思是更後臺condor_credd進程有關,需要配置相關的環境。但是我根據7.2.5節"The condor_credd Daemon"進行配置並沒有成功,有興趣的童靴可以自己試一試。

2. 相關

上一篇
目錄

發佈了73 篇原創文章 · 獲贊 10 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章