微軟HPC解決方案

首先我們先來看下高性能羣集與其它幾種羣集的不同

 

高可用羣集:羣集所有節點,來維持一個應用的持續運作,如果當前應用所在節點失敗,自動故障轉移至其它節點

負載均衡羣集:羣集所有節點來平衡一個應用的訪問請求,利用每個節點的響應,以提高應用效能,同時支持故障轉移

分佈式羣集:羣集所有節點來共同完成一件事,一件事可以被分散成若干小事由不同節點處理,最終彙總結果

高性能羣集:羣集所有節點來共同完成一件事,通常以計算爲主,綜合羣集的性能來達到快速完成計算目的

 

分佈式羣集與高性能羣集進一步探討

 

這兩種羣集模型,某些程度上存在一定相似度,但某些程度又不太一樣

 

例如,一個分佈式羣集的節點,可以是server,pc,hpc,可以是跨機房,跨地區,跨國,可以是windows,linux,unix,可以分佈式計算裏面再包括多個羣集,多個節點,基本上分佈式羣集最大的一個特點,就是對提供計算的節點沒有更多的要求,只要能夠提供計算能力就行,是鬆耦合化的,不會和某一種OS,某一種硬件綁定

 

高性能羣集在這一點上則與分佈式羣集不同,高性能羣集強調的是高性能,因此,如果這個羣集裏面各個節點來自不同國家,肯定無法完成高性能的目的,因此,一個高性能羣集的各個節點,肯定是通過高速網絡很快的連接在一組的服務器,不可能是分散在不同國家的,同時高性能羣集一般不會由PC,普通server參加,起碼會由相對性能高一些的server,或專門爲高性能計算設計的server來組成,一個高性能羣集的節點通常是標準化的,或者定製化硬件。

 

分佈式計算通常會把一個作業分成多個小作業,然後交由各個節點,高性能計算通常是並行作業

 

分佈式計算更加適用於在計算尋找模式的東西,分析計算,相加計算

高性能計算羣集更多的會被應用於數學,工業,科研領域等,需要在短時間內處理多維度的計算

 

高性能計算是否就是雲計算?

 

從運作形態來講,老王把雲計算分爲兩個角度來看

對於最終用戶,個人用戶,或企業使用雲計算的部門而言,雲計算就是一種新的IT消費模型,它自助化,自動化,只要付錢就可以使用,部署快捷,彈性收費,不需要花費其它前置費用和時間

對於雲提供商或企業提供雲計算的部門來說,雲計算就是一種新的IT管理模型,將原來分散的架構開始集中化,通過軟件定義+資源池,就可以執行大部分存儲,網絡工作,同時使用雲後可以做一些自動化的維護操作,減輕IT維護時間,另外雲計算將成本管理,SLA引入,有助於IT部門進一步體現自身價值

 

因此大家可以看到從運作形態上來講,雲計算更加像是一種企業信息化的選擇,企業選擇雲計算來輔助現有數據中心,提升資源申請效率

 

高性能計算與雲計算有一點非常衝突的是,雲計算主要是要求提供彈性,要快速部署,快速響應用戶的請求,甚至要基於程序的性能做部署,因此後臺會引入虛擬化,多租戶等技術,高性能計算通常不會是虛擬化,都會是由實體的物理機承擔,以獲得最好的性能。

 

近些年來,也有些公司提出將高性能計算和雲計算集合,主要還是公有云廠商提出的概念,可以從iaas或paas層對接本地高性能計算羣集,將公有云作爲高性能計算的一部分,但是一些高性能計算用戶還是會對此持有懷疑態度,主要的計算還是會在本地跑,什麼場景下適用於公有云呢,可能是要做一些模擬計算的時候,本地高性能羣集排隊已滿,這時候可以臨時把作業提交到公有云,最好是不產生數據,僅看結果,這類計算可以適用於公有云。

 

高性能羣集名詞與常見功能

 

高性能計算(Highperformance computing,縮寫HPC)  最早我們提到高性能計算通常是指某臺高性能主機,通過分片等技術將作業提交到這臺主機進行計算,隨着信息技術不斷髮展,高性能計算逐漸也面向企業,現在的的高性能計算通常是指某一羣集中組織的幾臺計算機(作爲單個計算資源操作)的計算系統和環境,更多的是通過高性能羣集軟件+服務器實現高性能計算效果

 

高性能計算服務器架構選擇

 

SMP(Symmetrical Multi-Processing),是指在一個計算機上彙集了一組處理器(多CPU),各CPU之間共享內存子系統以及總線結構,SMP服務器的主要特徵是共享,系統中所有資源(CPU、內存、I/O等)都是共享的。也正是由於這種特徵,導致了SMP服務器的主要問題,那就是它的擴展能力非常有限。對於SMP服務器而言,每一個共享的環節都可能造成SMP服務器擴展時的瓶頸,而最受限制的則是內存。由於每個CPU必須通過相同的內存總線訪問相同的內存資源,因此隨着CPU數量的增加,內存訪問衝突將迅速增加,最終會造成CPU資源的浪費,使 CPU性能的有效性大大降低

 

NUMA(Non-Uniform Memory Access),由於SMP在擴展能力上的限制,人們開始探究如何進行有效地擴展從而構建大型系統的技術,NUMA就是這種努力下的結果之一,利用NUMA技術,可以把幾十個CPU(甚至上百個CPU)組合在一個服務器內,NUMA服務器的基本特徵是具有多個CPU模塊,每個CPU模塊由多個CPU(如4個)組成,並且具有獨立的本地內存、I/O槽口等。由於其節點之間可以通過互聯模塊(如稱爲Crossbar Switch)進行連接和信息交互,因此每個CPU可以訪問整個系統的內存(這是NUMA系統與MPP系統的重要差別)。顯然,訪問本地內存的速度將遠遠高於訪問遠地內存(系統內其它節點的內存)的速度,但NUMA技術同樣有一定缺陷,由於訪問遠地內存的延時遠遠超過本地內存,因此當CPU數量增加時,系統性能無法線性增加。如HP公司發佈Superdome服務器時,曾公佈了它與HP其它UNIX服務器的相對性能值,結果發現,64路CPU的Superdome (NUMA結構)的相對性能值是20,而8路N4000(共享的SMP結構)的相對性能值是6.3。從這個結果可以看到,8倍數量的CPU換來的只是3倍性能的提升。

 

MPP(Massive Parallel Processing) 由多個SMP服務器通過一定的節點互聯網絡進行連接,協同工作,完成相同的任務,從用戶的角度來看是一個服務器系統。其基本特徵是由多個SMP服務器(每個SMP服務器稱節點)通過節點互聯網絡連接而成,每個節點只訪問自己的本地資源(內存、存儲等),是一種完全無共享(Share Nothing)結構,因而擴展能力最好,理論上其擴展無限制,目前的技術可實現512個節點互聯,數千個CPU。目前業界對節點互聯網絡暫無標準,如 NCR的Bynet,IBM的SPSwitch,它們都採用了不同的內部實現機制。但節點互聯網僅供MPP服務器內部使用,對用戶而言是透明的。

在MPP系統中,每個SMP節點也可以運行自己的操作系統、數據庫等。但和NUMA不同的是,它不存在異地內存訪問的問題。換言之,每個節點內的CPU不能訪問另一個節點的內存。節點之間的信息交互是通過節點互聯網絡實現的,這個過程一般稱爲數據重分配(Data Redistribution)。

但是MPP服務器需要一種複雜的機制來調度和平衡各個節點的負載和並行處理過程。目前一些基於MPP技術的服務器往往通過系統級軟件(如數據庫)來屏蔽這種複雜性。舉例來說,NCR的Teradata就是基於MPP技術的一個關係數據庫軟件,基於此數據庫來開發應用時,不管後臺服務器由多少個節點組成,開發人員所面對的都是同一個數據庫系統,而不需要考慮如何調度其中某幾個節點的負載

 

通常情況下SMP和NUMA是過去人們實現高性能計算的選擇,實現高性能計算的一個關鍵標準,是能夠讓作業程序在多個節點並行執行,以獲得最快的計算結果,現在大家更多的是選擇通過MPP架構或普通服務器組成的羣集,以實現高性能計算,針對於並行,從原來單獨的硬件層面,延伸到軟件層面,通過並行程序和高性能羣集系統的結合,以達到高性能計算。

 

 

高性能計算羣集常見指標

 

GFLOPS 就是 Giga Floating-point Operations Per Second,即每秒10億次的浮點運算數

 

一個 MFLOPS (megaFLOPS) 等於每秒1百萬 (=10^6) 次的浮點運算

一個 GFLOPS (gigaFLOPS) 等於每秒10億 (=10^9) 次的浮點運算

一個 TFLOPS (teraFLOPS) 等於每秒1萬億 (=10^12) 次的浮點運算

一個 PFLOPS (petaFLOPS) 等於每秒1千萬億 (=10^15) 次的浮點運算

 

Linpack理論峯值計算 = CPU主頻 X CPU每個時鐘週期執行浮點計算的次數 X 系統中CPU核心數 

 

是否支持GPU高性能計算,在浮點運算、並行計算等部分計算方面,GPU可以提供數十倍乃至於上百倍於CPU的性能

 

高性能計算常見角色

 

管理節點:負責整個高性能羣集的監控,資源分組,資源調度,作業調度,授權控制,系統推送(通常會在頭節點安裝DHCP,WDS等PXE部署組件,當進行大規模部署的時候,直接pxe引導部署其它計算節點,或結合BMC實現喚醒部署)

計算節點:用於運行作業,這種類型的節點通常不能成爲不同類型的節點(即更改角色)

用戶訪問節點:作爲高性能羣集對外的入口,用戶登錄到這個節點提交作業,通常會有Web,console,api,腳本等接口

存儲節點:存儲高性能羣集產生的數據,或存儲高性能羣集需要的數據,通常會映射這個節點的NFS,SMB至其它計算節點上

數據庫節點:高性能計算羣集通常會有一套數據庫系統,用於存放羣集作業調度,報告,診斷等數據,通常會直接使用頭節點,或部署遠程數據庫節點

 

整個架構中最關鍵的是管理節點,數據庫節點,實際環境中通常會把高性能與高可用結合,針對於管理節點和數據庫節點實現高可用。

如果是計算節點壞了,通常情況下管理節點會把它標記爲失敗,下次分發計算任務排除該節點,理想情況下計算節點應該是無狀態的,壞了直接新加,計算所需數據來自存儲節點。

用戶訪問節點,如果實現了門戶訪問,可以搭建多臺,結合負載均衡羣集實現高可用

 

高性能計算常見術語

 

作業:高性能羣集最終會提供給用戶門戶,控制檯,或接口,以供用戶向高性能計算羣集提供請求,作業就是你希望讓高性能羣集執行的計算任務,通常一個作業裏面可以包含多個任務,可以設計作業裏面不同任務之間的優先順序與關聯性

隊列:成功提交的作業,會提交到HPC羣集頭節點,再由頭節點根據調度器規則,調度到合適的資源分組執行作業,如果當前高性能羣集所有資源正在使用,或者有優先級更高的計算正在進行,則新提交的作業將被排隊進入隊列,直到有計算資源釋放

資源分組:通過管理節點可以針對於當前羣集內所有的計算節點進行資源分組,將資源由服務器,轉換爲計算能力,轉換後按照分組計算能力,對使用方進行交付,用戶使用時可以選擇,要將作業放到什麼樣計算能力的資源分組執行,如果該資源分組正忙,則用戶作業也會進入隊列。

 

MPI是什麼

 

MPI並不是一種新的開發語言,它是一個定義了可以被C、C++和Fortran程序調用的函數庫。這些函數庫裏面主要涉及的是兩個進程之間通信的函數,採用分佈式內存模型,MPI是一種消息傳遞編程模型,駐留在不同節點上的進程可以通過網絡傳遞消息相互通信,實現進程之間的信息交換。

 

簡單來說,MPI是一種可以用於不同節點進程之間傳遞消息的編程模型,透過MPI我們可以實現進程級別的跨節點通信,進而實現並行計算

 

一個MPI應用程序的執行如下

  1. MPI初始化

  2. 由管理節點將消息分發給計算節點並行執行

  3. 計算節點執行完成後經過通信將結果返回給應用程序

 

除了MPI,還有其它實現並行計算的方法,例如OpenMP,OpenMP通過在節點間共享變量,已達到並行計算效果,以線程作爲並行計算粒度,採用共享內存模型

 

當我們要將作業提交到高性能羣集時,雖然羣集具備實現高性能計算的能力,但是如果我們提交的作業不是並行的,依然不能實現高性能計算效果,因此也需要考慮如何讓作業並行執行。

 

通過上面的介紹老王簡單爲大家介紹了下高性能計算的一些術語,以及實際運作的形態,我並沒有一味介紹高性能計算概念,而是通過對比,舉例的方式使大家更便於理解,構建自己腦中的模型

 

下面我們將專注於微軟對於HPC的解決方案,微軟進入HPC領域大概是在2003的時候,那時微軟第一次推出windows computer cluster server解決方案,進入高性能計算領域,整個解決方案當時有兩部分 ,Windows Server 2003 Compute Cluster Edition和Microsoft Compute Cluster Pack,一個系統版本和一個組件包,事實上核心的高性能計算功能,例如資源分區,作業調度,都是在cluster pack中,Computer Cluster edition僅是一個經過優化的操作系統版本,到了2008時代也是如此,2008時代改叫HPC server和hpc pack。從2012開始,微軟已經不再發行hpc server系統版本,hpc pack可以直接在標準版,數據中心版OS運行,最後發行computer cluster版本原因當時的OS還不能和硬件很好的感知,例如RDMA,ODX等功能,2012開始這些都已經完美的內嵌在Server版本中。

 

最新的hpc pack版本是 hpc pack 2016 ,通過hpc pack可以幫助我們配置hpc解決方案所需要的角色,提供管理hpc羣集的工具

 

微軟HPC解決方案的角色如下,以最新hpc 2016爲例

 

頭節點:負責整個高性能羣集的監控,資源分組,資源調度,作業調度,系統推送(hpc pack將自動爲頭點安裝dhcp,wds)

計算節點:用於運行作業,這種類型的節點通常不能成爲不同類型的節點(即更改角色)

代理節點:Windows Communication Foundation(WCF)代理節點用於將WCF調用從面向服務的體系結構(SOA)客戶端路由到在羣集中的節點上運行的SOA服務,這種類型的節點可以在不重新部署的情況下將角色更改爲計算節點

工作站節點和非託管服務器節點 :工作站節點和非託管服務器節點是組織中的計算機,它們也可以運行作業,但它們不是專用的羣集資源。他們可以安排在特定時間運行工作,也可以按需提供。這種類型的節點不能更改角色

Microsoft Azure Paas節點: 如果您有Microsoft Azure訂閱,則可以根據需要添加Azure節點,以便在需要時增加羣集容量。與計算節點,工作站節點和非託管服務器節點一樣,Azure節點也可以運行作業。添加Azure節點時,還可以在Azure部署中配置固定或可變數量的代理節點,以便實現本地頭節點和Azure節點之間的通信。

Microsoft Azure IaaS節點:如果您擁有Microsoft Azure訂閱,則可以根據需要添加Microsoft Azure IaaS節點,以便在需要時增加羣集容量

 

hpc pack 2012 - 2016重要功能更新

 

1.HPC Pack 2016支持計算節點工作組部署

2.HPC Pack 2012 R2 Update 2支持Azure linux計算節點部署

3.HPC Pack 2012 R2 Update 3支持本地linux計算節點部署

4.HPC Pack 2012 R2 Update 3 支持Windows計算節點的GPU

5.HPC Pack 2012 R2 Update 3 中Linux節點的管理和調度體驗類似於我們已經支持的Windows節點,可以看到Linux節點的熱圖,使用特定於Linux節點的cmdlet創建作業,監視作業,任務和節點狀態等,Linux節點開始支持便利的工具clusrun

 

hpc pack頭節點部署要求

 

操作系統:Windows Server 2016,Windows Server 2012 R2,頭節點必須加入域

SQL Server:默認情況下hpc pack會直接在頭節點本機安裝一個sql express,並自動配置數據庫,也可以使用遠程數據庫實例,支持數據庫羣集或alwayson

.net framework:要求4.6.1或更高版本,Windows Server 2016自帶,Windows Server 2012 R2需單獨安裝,在HPC pack安裝文件DotNetFramework目錄有安裝包,2012R2安裝前還需按順序安裝KB2919442,KB2919355補丁

其它必備組件會由hpc pack自動安裝

 

hpc pack 數據庫列表

 

HPCManagement : 羣集管理信息

HPCScheduler:作業調度

HPCReporting:羣集報告

HPCDiagnostics:羣集診斷

HPCMonitoring:羣集監控數據

 

 

如需進行數據庫優化請參考鏈接,適用於hpc pack 2012 2012R2 2016

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/hpc-server-2012-R2-and-2012/hh407109(v=ws.11)

 

 

微軟HPC羣集網絡角色如下

企業網絡 企業組織網絡,用於連接到企業內部基礎架構服務器,如AD,並需要接入用戶網絡,用戶會將作業通過該網絡提交至頭節點,並且在某些情況下連接到羣集中的其他節點,除非專用網絡和應用網絡也連接羣集節點,否則所有羣集內管理和部署流量都將在企業網絡中進行
專用網絡 承載節點間羣集內通信的專用網絡。如果不存在應用網絡,則專用網絡包含管理,部署和應用程序通信
應用網絡 專用網絡,最好具有高帶寬和低延遲。此網絡通常僅用於羣集節點之間的並行消息傳遞接口(MPI)應用程序通信。

 

詳細HPC網絡拓撲規劃請參考https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/hpc-server-2012-R2-and-2012/ff919486(v=ws.11)

 

 

實作環境介紹

 

08dc :10.0.0.2 255.0.0.0

hpc-headnode

企業網絡10.0.0.9 255.0.0.0 

專用網絡18.0.0.1 255.0.0.0

 

hpc pack 2016下載地址 https://www.microsoft.com/en-us/download/details.aspx?id=56360

 

下載完成後在頭節點打開如下,點擊新建安裝或將新功能添加到現有安裝 

2018-04-19_220342.png

選擇安裝類型,我們第一次安裝選擇 創建頭節點,並創建新的HPC羣集

2018-04-19_220947.png

如果針對頭節點進行了高可用部署,這裏可以選擇高可用,我們這裏只有一臺,所以選擇單頭

2018-04-19_221006.png

評估安裝規則

2018-04-19_221023.png

需要注意的是千萬不要自作聰明提前安裝WDS,否則這裏會報錯

2018-04-19_220753.png

選擇數據庫部署模型,默認hpc pack 2016安裝的是sql server 2016 express,如果遠程部署則至少SQL 2008R2標準版或企業版

遠程部署SQL server參考 https://docs.microsoft.com/en-us/previous-versions/orphan-topics/ws.10/ee783551(v=ws.10)

2018-04-19_221038.png

證書這裏,可以從導入設置中選擇新建一個自簽名證書

2018-04-19_221919.png

或者直接向AD申請一張允許導出密鑰的計算機證書,點擊瀏覽 hpc pack會識別到這張證書,這張證書被用做HPC pack各節點間通信安全,因此需導出一份帶密鑰的PFX,後期添加計算節點時需導入此證書

2018-04-19_222024.png

最後hpc pack會根據自帶的離線安裝包爲頭節點安裝必備組件,這時候可以泡杯綠茶,等待所有選項變成綠勾

2018-04-19_222101.png

安裝完成必備組件後,提示輸入HPC羣集連接串,這是HPC羣集和高可用羣集不一樣的地方,高可用羣集我們是給一個邏輯的名稱,而HPC羣集的對外連接始終是頭節點

2018-04-19_230126.png

點擊完成後會自動打開HPC Pack 2016羣集管理器,在開始執行管理之前要完成部署任務

2018-04-19_230714.png

配置網絡拓撲,這裏老王選擇企業和私有網絡上的所有節點,考慮到節點中可能會有加入域節點,因此老王設計每個節點兩個網絡,企業網絡,和專用的HPC網絡,但最終對外只發布管理節點企業網絡地址

2018-04-20_154448.png

配置完成如下,如果檢測到網卡支持RDMA Direct這裏會顯示出來,建議爲HPC網絡啓用RDMA,同時私有網絡配置部分,會在管理節點創建一個DHCP作用域,用於部署計算機節點時使用,該作用域爲HPC網段

2018-04-20_154623.png

設置安裝節點賬戶,本地管理員權限即可

2018-04-20_162030.png

配置新節點命名規則,主要適用於通過HPC管理節點 批量部署時的計算節點名稱

2018-04-20_162517.png

三個必備任務完成後即可看到HPC羣集完整內容,像極了SystemCenter 2007 2012時的UI

2018-04-20_162747.png

接下來還有一些可選配置的內容

爲HPC羣集添加管理員權限,通常建議在AD裏面創建一個安全組,這個安全組的用戶可以對HPC羣集具備資源管理,羣集配置,報表查看,作業調度等權限

2018-04-20_163053.png

添加用戶權限,被添加的用戶,有權限通過客戶端應用程序,cmd,api,powershell,webportal向hpc羣集提交作業,通常也建議使用組進行管理

2018-04-20_163333.png

配置作業調度器策略

2018-04-20_163723.png

配置作業電子郵件通知,實現作業開始結束使用郵件通知作業所有者

2018-04-20_163742.png

創建不同級別的節點組

2018-04-20_164105.png

創建作業模板,作業模板會作爲用戶提交作業預約時顯示

2018-04-20_164638.png

限製作業運行時間,如果某一類型作業執行有時限限制,可以通過此處進行配置

2018-04-20_164651.png

設置該作業模板優先級,凡是通過這個作業模板創建的作業,作業優先級默認及最大可調整範圍

2018-04-20_164711.png

限制節點組,可以配置透過此模板創建的作業,僅允許在那些節點組運行

2018-04-20_164823.png

也可以針對於作業模板限定使用權限

2018-04-21_153258.png

爲HPC羣集開啓Web門戶,進入安裝bin目錄,輸入以下命令即可,腳本會自動幫助我們安裝IIS,配置HPC門戶所需內容

2018-04-20_170632.png

如果配置無誤,接下來可以通過訪問頭節點名稱/hpcportal路徑,打開HPC portal,打開網頁前會需要身份驗證,經過身份驗證的HPC用戶或管理員可以在portal上面在線提交作業,目前只有英文版

2018-04-21_122935.png

 

添加Windows計算節點

 

Windows計算節點系統要求

 

操作系統:Windows Server 2016,Windows Server 2012 R2,Windows Server 2012,Windows Server 2008 R2 SP1,支持域或工作組

.net framework:要求4.6.1或更高版本,Windows Server 2016自帶,Windows Server 2012 R2需單獨安裝,在HPC pack安裝文件DotNetFramework目錄有安裝包,2012R2安裝前還需按順序安裝KB2919442,KB2919355補丁

 

拷貝頭節點證書帶密鑰的pfx版本至計算節點

2018-04-21_143900.png

在windows計算節點上開啓HPC pack安裝嚮導,選擇創建新計算節點加入現有HPC羣集

2018-04-21_143943.png

加入羣集處輸入頭節點名稱,如果有多個頭節點,可以按照逗號隔開輸入

2018-04-21_144011.png

添加證書,並輸入證書密碼

2018-04-21_144047.png

嚮導自動爲計算節點安裝必備組件

2018-04-21_144105.png

安裝完成後在頭節點羣集管理器可以看到節點,當前爲未批准狀態,在HPC羣集中出於安全考慮,防止惡意添加的計算節點進來拷貝羣集數據,每個被添加的計算節點,都必須經過管理員批准後方可加入羣集

 

批准方法可以通過添加節點嚮導,或分配節點模板,節點模板的概念是指一組規範,凡是添加進來的節點,要選擇一種節點模板套入規範,纔可以正常加入HPC羣集

2018-04-21_145018.png

選擇節點模板後,HPC會自動根據我們的設置,爲計算節點套入規範

2018-04-21_145109.png

當所有規範和設定都已經執行完畢,節點變成聯機狀態,這時候計算節點就可以正常運行作業

2018-04-21_145138.png

我們可以通過修改節點模板,配置當新加入節點時,需要執行那些操作

2018-04-21_145331.png

2018-04-21_145338.png

 

2018-04-21_145347.png

 

2018-04-21_145357.png

將計算節點添加到節點組

2018-04-21_150141.png

 

微軟HPC羣集調度模型

 

在微軟HPC羣集調度模型中分爲作業和任務兩個概念,其中作業主要是指對高性能羣集資源的預約,通常包括申請的處理器數目,運行作業所需要的節點組,計劃運行的時間

 

作業調度算法

 

在使用過程中我們可以通過API,CMD,Powershell,門戶,控制檯,對HPC羣集提交作業,作業會被記錄至HPCScheduler數據庫,同時由頭節點將作業進行調度,提交作業相當於預定一個資源窗口,在作業包括的時間內可以完成所需要的任務,HPC羣集頭節點負責維護一個作業隊列,如果調度器發現現有資源可以滿足隊列中的第一個作業最小需求,則將其取出投入運行,否則調度器不做任何工作

 

作業調度算法例外:當所有正在運行的作業表明了計劃運行時間,而當前的空餘資源不夠隊列的第一個作業之最小需求時,可以從隊列找出最靠前的一個作業進行調度(backfill),其必須滿足

backfill作業也表明了計劃運行時間

backfill作業可以置入當前的空餘資源

根據當前正在運行的作業可以計算出何時纔能有足夠多的資源供隊列中第一個作業運行,該時間距現在的距離必須大於backfill的計劃運行時間

 

任務是描述需要完成的具體工作

 

HPC羣集支持提交空作業,隨後爲作業附加任務,但任務必須依賴於作業運行

每個任務只能使用該作業所分配到的資源來完成自己的工作

雖然作業是對應單個程序,但有些程序需要跨多個節點並行運行,所需在任務定義也需要指明最小和最大的資源需求

任務可以明確表明自己需要各節點組,如果有權限也可以直接指定專屬節點

任務需要提供程序在計算節點的啓動地址,工作目錄(工作目錄通常會選擇一臺存儲服務器映射至各計算節點相同網盤,用於存放程序文件),及啓動該程序所需要的參數

任務定義中可以指定對程序運行過程中的標準輸入,輸入出和錯誤流進行重定向

同一作業中的任務之間可以定義依賴關係

 

任務調度算法

 

如果某個任務所依賴的任務都已經被執行完畢或沒有任何依賴任務,則該任務進入無依賴狀態(調度器內部狀態)

每個作業中都維護一個任務隊列,當出現資源空餘時,調度器將選擇最靠前的一個無依賴狀態並能夠被容納在該資源中的任務進行調度

 

 

微軟HPC羣集功能支持

 

  1. 支持資源分組,默認採用節點組方式進行分組,也可以採用資源池方式進行資源分組

  2. 支持羣集節點狀態,性能,日誌監控

  3. 支持作業調度,任務調度,支持手動控制任務或作業執行

  4. 支持工作組節點作爲計算能力

  5. 支持通過API/CMD/Powershell/Console/portal等方式提交作業

  6. 支持執行MPI,MS-MPI是爲Windows開發的消息傳遞接口(MPI)的Microsoft實現,它允許MPI應用程序在HPC羣集上作爲任務運行

  7. 採用作業模板作爲高性能計算羣集服務質量限定,可以在作業模板中限定通過此模板執行的作業優先級,能夠使用的處理器,節點組,內存,以及能夠利用此作業模板申請作業的權限,管理員可以通過創建不同的作業模板,結合節點組,用戶組來對需要不同質量服務的用戶進行分類

  8. 採用節點模板作爲添加節點基線,通過配置節點模板,讓各新添加的節點符合基線後加入高性能羣集,也可以通過在節點模板中封裝操作系統 驅動 軟件,實現通過頭節點PXE批量引導部署計算節點

  9. 和微軟其它組件整合,利用Exchange服務器作爲郵件通知,利用SCOM,OMS作爲羣集監控,利用***S/SSAS/PowerBI配置分析報表,頭節點支持WSFC部署,數據庫支持Always On或WSFC部署,計算節點支持Azure Paas或Iaas方式部署,授權可以使用AD或AzureAD,任務工作目錄可以是映射到各結算節點的NFS/SMB網盤,背後可以來自於S2D,傳統文件服務器羣集或經過2016存儲複製的UNC路徑。

     

微軟HPC羣集可以提交的作業類型

 

MPI作業:可以選擇新建作業新建單任務作業來創建MPI作業,對於運行MPI應用程序的任務,任務命令必須以mpiexec開頭:因此,並行任務命令必須採用以下格式:mpiexec [mpi_options] <myapp.exe> [arguments],其中myapp.exe是要運行的應用程序的名稱,對於並行任務,Windows HPC Server 2008開始包含基於阿貢國家實驗室MPICH2標準的MPI軟件包。微軟的MPI實現(稱爲MS-MPI)包括啓動程序mpiexec,每個節點的MPI服務以及用於開發用戶應用程序的軟件開發工具包(SDK)

 

參數掃描作業:

參數化掃描作業由同一應用程序的多個實例組成,通常是串行應用程序,並行運行,輸入由輸入文件提供,輸出指向輸出文件。輸入和輸出通常是一組索引文件(例如,input1,input2,input3 ...,output1,output2,output3 ...),它們設置爲位於單個公用文件夾或單獨的公用文件夾中。任務之間沒有溝通或相互依存關係。這些任務可能並行也可能不會並行運行,具體取決於作業運行時羣集上可用的資源。

 

任務流程作業

 

在任務流作業中,一組不同的任務按照規定的順序運行,通常是因爲一個任務取決於另一個任務的結果。作業可以包含許多任務,其中一些是參數化的,一些是串行的,還有一些是並行的。例如,您可以創建一個由MPI和參數化任務組成的任務流作業。您可以通過定義任務之間的依賴關係來確定運行任務的順序。

 

下圖說明了任務流作業:

2018-04-21_215144.png

任務1首先運行。請注意,只有任務2和3可以並行運行,因爲兩者都不依賴於另一個。任務4在任務2和3都完成後運行。


 

SOA工作作業

 

面向服務的體系結構(SOA)是構建分佈式,鬆散耦合系統的一種方法。在SOA系統中,不同的計算功能被打包爲稱爲服務的軟件模塊。服務可以分佈在整個網絡上並由其他應用程序訪問。例如,如果應用程序執行重複的並行計算,則核心計算可以打包爲服務並部署到羣集。這使開發人員能夠解決令人尷尬的並行問題,而無需重寫低級代碼並快速擴展應用程序。通過在多個服務主機(計算節點)之間分配核心計算,應用程序可以更快運行 最終用戶在他們的計算機上運行應用程序,羣集節點執行計算。

 

甲客戶端應用程序提供了一種用於最終用戶訪問的一個或多個服務的功能的接口。開發人員可以創建羣集SOA客戶端應用程序,以提供對部署到Windows HPC羣集的服務的訪問。在後端,客戶端應用程序向羣集提交包含服務任務的作業,啓動與代理節點的會話,併發送服務請求並接收響應(計算結果)。根據作業調度策略,頭節點上的作業調度器將資源分配給服務作業。服務任務的一個實例在每個分配的資源上運行並加載SOA服務。作業調度程序嘗試根據服務請求的數量調整資源分配。


如果客戶端創建了持久會話,則代理使用MSMQ存儲所有消息。客戶端隨時可以檢索代理存儲的回覆,即使在有意或無意斷開連接後

 

下圖說明了SOA作業在微軟HPC羣集上的運行方式:

2018-04-21_215412.png

 

Microsoft Excel計算卸載

 

 

包含在HPC Pack的某些版本中的HPC Services for Excel支持許多用於將Excel計算卸載到HPC Pack羣集的模型。適用於羣集加速的工作簿包括可以並行運行的獨立計算。許多複雜和長時間運行的工作簿都是迭代運行的 - 也就是說,它們在不同的輸入數據集上多次執行單個計算。這些工作簿可能包含複雜的Microsoft Visual Basic for Applications(VBA)函數或計算密集型XLL加載項。HPC Services for Excel支持將工作簿卸載到羣集,或將UDF卸載到羣集。

 

通過使Excel 2010 UDF能夠在Windows HPC羣集中運行,Microsoft Excel 2010將UDF模型擴展到羣集。當受支持的羣集可用時,用戶可以通過選擇羣集連接器並在“ Excel選項”對話框的“ 高級”選項中指定羣集名稱來指示Excel 2010使用該羣集。在羣集中,UDF的工作方式與傳統UDF非常相似,只是計算由一臺或多臺服務器執行。關鍵的好處是並行化。如果工作簿包含對長時間運行的UDF的調用,則可以使用多個服務器同時評估函數。爲了在羣集上運行,UDF必須包含在羣集安全的XLL文件中

 

 

微軟HPC羣集可以提交的任務類型

 

基本:運行串行應用程序或消息傳遞接口(MPI)應用程序的單個實例。MPI應用程序通常在多個核心上併發運行,並且可以跨越多個節點

參數掃描:通常在索引輸入和輸出文件中運行指定次數的命令(以開始,結束和增量值表示)。掃描的步驟可能並行也可能不同步,具體取決於任務運行時羣集上可用的資源。

節點準備:即使在動態添加節點(增長策略)時,也會在每個計算節點分配給作業時運行命令或腳本。該節點準備任務在工作的任何其他任務前的節點上運行。

如果節點準備任務無法在節點上運行,那麼該節點將不會添加到作業中。

節點釋放:

即使在節點被動態刪除(收縮策略)時,也可以在每個節點計算每個節點時運行命令或腳本,因爲它是從作業中釋放的。

節點發布任務的最長運行時間(以秒爲單位)由具有NodeReleaseTaskTimeout羣集參數的羣集管理員定義。您無法覆蓋此運行時間限制。默認情況下,超時設置爲15秒。要查看此羣集參數的值,可以運行以下命令(搜索字符串區分大小寫):cluscfg listparams | find“NodeReleaseTaskTimeout”

節點發布任務在作業被取消時運行。強制取消作業時節點發布任務不運行。

如果作業有最大運行時間和節點發布任務,則作業計劃程序將在作業的運行時間到期(作業運行時間減去節點發布任務運行時間)之前取消作業中的其他任務。這允許節點發布任務在分配的作業時間內運行。

服務:

在分配給作業的所有資源上運行命令或服務。將新資源添加到作業時,或者如果先前正在運行的實例退出並且運行的資源仍然分配給作業,則該命令的新實例會運行。服務任務將繼續啓動實例,直到作業被取消或停止,最大運行時間到期或達到最大實例數(子任務)爲止。

通過面向服務的體系結構(SOA)客戶端提交的任務作爲服務任務運行。

您不能將基本任務或參數掃描任務添加到包含服務任務的作業

 

定義作業或任務後,可以將作業或任務規範導出到XML文件,下次可以直接從XML導入作業或任務

 

微軟HPC羣集作業及任務狀態

(實際顯示中文,使用英文解釋名稱更爲準確)

Configuring:作業或任務在系統中,但尚未提交到隊列中。

Submitted:作業或任務已經提交併且正在等待驗證,然後才能排隊

Validating:HPC作業計劃程序服務正在驗證作業或任務。在驗證過程中,HPC作業計劃程序服務確認權限,爲作業所有者未指定的任何屬性應用默認設置,並根據約束驗證每個屬性。默認設置和約束由作業模板定義。HPC作業計劃程序服務還確認作業屬性包含所有任務屬性(例如,沒有任務的運行時間的值大於作業的運行時間)。

在驗證過程中,作業也可能會通過羣集管理員定義的自定義提交篩選器應用程序。

如果作業通過驗證,則會移至隊列狀態。如果作業未通過驗證,則作業顯示錯誤消息,作業將轉至失敗狀態。

Queued:作業或任務已通過驗證,正在等待安排並激活(運行),當正在運行的作業,基本任務或參數掃描子任務被HPC作業計劃程序服務搶佔時,它將移回隊列狀態(除非該任務不可重新運行,在這種情況下,它將標記爲失敗)。

Dispatching:此狀態僅適用於任務。HPC作業計劃程序服務已將資源分配給該任務,並正在聯繫分配的節點以開始運行該任務。當任務開始時,它將轉到運行狀態。

Running:作業或任務正在一個或多個節點上運行

Finishing:工作或任務已完成,工作或任務清理正在進行中

Finished:工作或任務已成功完成。

Failed:工作或任務已成功完成。作業或任務未能完成,停止運行或返回指示失敗的退出代碼(默認情況下爲非零退出代碼)。此外,正在運行的任務在以下情況下標記爲失敗:

  • 作業所有者或羣集管理員取消該任務。

  • HPC作業計劃程序服務取消了一項任務,因爲它已超過其最大運行時間。

  • HPC作業計劃程序服務搶佔未標記爲可重新運行的任務。

  • HPC作業計劃程序服務搶先啓動以每個資源爲基礎啓動的子任務(節點準備,節點發布和服務子任務)。

如果某個作業或任務由於羣集故障而無法啓動,則該作業或任務會在標記爲失敗之前自動重試指定次數。

Canceling:工作或任務被取消,清理工作正在進行中

Canceled:作業已被作業所有者,羣集管理員或HPC作業計劃程序服務取消。例如,HPC作業計劃程序服務可以取消作業,如果超過其運行時或作業被搶佔。作業所有者或羣集管理員在開始運行之前已取消該任務。如果正在運行的任務被取消,則該任務被標記爲失敗。

 

 

 

用戶通過客戶端提交作業

 

HPC pack 2016 客戶端安裝需求

操作系統:Windows Server 2016,Windows Server 2012 R2,Windows Server 2012,Windows Server 2008 R2 SP1,Windows 10,Windows 8.1,Windows 8,Windows 7 SP1,支持加入域客戶端或工作組

.net framework:要求4.6.1或更高版本,Windows Server 2016,Windows 10 自帶,其它操作系統需單獨安裝,在HPC pack安裝文件DotNetFramework目錄有安裝包,win8,2012R2安裝前還需按順序安裝KB2919442,KB2919355補丁,win7sp1,2008R2sp1不需要安裝補丁

 

拷貝安裝文件包至客戶端,或放在網絡路徑,開啓安裝嚮導,選擇僅安裝客戶端實用工具

2018-04-21_160741.png

安裝完成後可以在客戶端看到hpc powershell ,hpc 羣集管理器, hpc job manager,點擊job manager連接到頭節點

2018-04-21_161342.png

打開作業管理界面,用戶可以在這裏將作業提交到高性能羣集

權限判定以當前登錄用戶,或runas用戶爲準

目前HPC pack的客戶端如果希望連接到服務器需加入域纔可以,客戶端如果未加入域,打開job manager連接到頭節點不會成功,如果實在不想每臺作業客戶端都加入域,可以考慮將一臺Server作爲網關節點,安裝RDSH與HPC pack客戶端,把這臺機器上面的hpc pack console作爲app發佈到remoteapp或xenapp解決方案,或工作組客戶端直接使用portal,cmd,powershell,api等方式提交作業

2018-04-21_163013.png

感興趣的朋友可以參考鏈接,自己動手創建作業和任務

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/hpc-server-2012-R2-and-2012/ff919653(v%3dws.11)

 

 

HPC羣集管理器實用功能

 

批量選擇節點,運行命令,按照節點輸出結果

2018-04-21_222939.png

 

2018-04-21_223000.png

批量選擇節點運行診斷,診斷包含SOA,MPI,Azure節點等自帶測試項目

2018-04-21_223047.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章