一直以來資源調度就不會成為一個誘人的話題,這是無可避免肯定要完成的事情,而且一般情況下都很複雜且容易讓使用者感到沮喪、讓系統管理員感到忙碌。 一般在進行這項工作能聽到的最多的抱怨就是:「我的作業為什麼沒有運行? 」而答案基本上都是對一些調度規則的解釋,或者乾脆告訴你已經滿負載了,還有一個極個別的情況下會告訴你是由於某個使用者的程式導致了該問題。
如果你對什麼是資源的時刻表還不是很瞭解,那這接下來的幾段就是你必須要看的。 首先需要知道這個名詞代表著的含義:您有很多個資源和作業正在排隊中,需要列出這些資源和工作的最佳工作狀態。 常見的資源調度有SunGird、Engine, Torque/Maui、Moab、PBS、Platform和Platform Lava等。 能夠體現資源調度的一個最好的例子就是集群。 在一個128節點的集群裡,每個計算節點有八個核。 大部分的使用者的程式需要1—16個核來工作,但是有一些需要256個核。 問題就是,給出一個工作的清單,什麼才是這個集群被充分利用的最佳工作方式?
使用者在提交「作業」的時候經常通過一個腳本(類似于qsub,queue summit)使得作業插入到佇列調度中去,如果被允許,使用者可以使用類似qstat(queue status,佇列狀態)的腳本來控制自己的程式, 同時列印出一些讓人困擾的資訊,沒有一個資訊可以回答你「為什麼我的作業沒有運行」(當然,這裡也提供了這條消息,但是看起來最簡單的方式還是給系統管理員發個郵件)。
為了使調度問題更棘手一點,在某些情況下,我們不知道這些應用程式將會運行多長時間,而且也許有一些其它所需的資源(比如記憶體容量、存儲、處理器類型等)。 因此,資源調度這個工作並不簡單,但是對於集群利用率來說非常重要。 實際上,多核的出現使得內核級調度工作比以前更加重要(當然也更加困難)。 在內核級,內核必須被安排,而且將任務在核心之間互相轉移必須基於緩存。 有趣的是,高層次的資源調度能力已經延伸到CPU,控制核心的位置對獲得最好性能是非常必要的。
為什麼資源調度將會成為高性能計算以後新的、很酷的工具? 並不是因為一種新的額GUI或者一些其它的神秘的功能。 真正的原因是雲計算。 但是這並不意味著雲將會很快到處都是,實際上,資源調度將會把雲放在合適的地方。
最近,我聽到一個新澤西技術研究所的David Perel使用Sun Grid Engine(SGE)所做的Apache Hadoop動態資源配置實驗。 隨後有一個深入的研究,有關Sun Grid Engine更新的文章。 在新的版本裡有兩個誘人的更新,第一個是雲計算,第二個則是Hadoop,類似于一種大眾雲計算的東西。
最特別的是,SGE新的版本允許雲中的互換,就好像亞馬遜的EC2。 作業被允許,SGE可以控制之間的聯繫。 使用EC2的話,使用者需要為應用程式構建AMI圖像。 除此之外,他們還需要提供EC2上的帳戶資訊。 一旦做到這一點,使用者可以講作業插入佇列,對於EC2來說,則有了一個「雲爆發」。
另外一個新功能是與Hadoop的整合。 如果你不知道什麼是Hadoop的話,那就Google一下。 只是架設好一個Hadopp集群並非易事。 這是一種不依賴一個資料庫的強大的搜索模式。 通常,地圖搜索減少啟動伺服器的數量,給每個本地硬碟磁碟機設置不同的資料。 SGE已經得到增強,現在Hadoop作業可以直接提交。
在這一點上行,雲中的高性能計算是一件喜憂參半的事情。 除非你使用一個特別設計的HPC雲計算,就好像Penguin的POD服務,對HPC性能至關重要的I/O資源可以多樣化。 這可能會改變。 作為單獨伺服器包含更多內核。 HPC應用調查顯示,57%的HPC使用者使用32處理器或者更少的核心。 這些人證實了ClusterMoney.net有關此調查55%的數位。 當雲計算開始使用48個內核的伺服器時,可能會消除一些伺服器到伺服器通信問題的形成。
高性能計算可能會採取一種不同的、使用密集多核伺服器的方式進入雲計算。 使用者可以在桌面上就將作業加到SGE中去。 這種資源調度方式會接觸可以運行虛擬機器的本地資源或者雲中資源。 這種資源調度方式可能會讓HPC實現寶貴的桌面化。 聽起來像網格計算,但是更簡單。