Infiniband 的基本概念
網(wǎng)絡(luò)是常常被認(rèn)為是路由器、交換機和插在服務(wù)器和存儲設(shè)備上的電纜的集合。在大部分人的印象里,網(wǎng)絡(luò)用來連接服務(wù)器到其他服務(wù)器、存儲和其他網(wǎng)絡(luò)。其實,這是一種普遍存在的對網(wǎng)絡(luò)的片面看法,它將過多的注意力集中在處于網(wǎng)絡(luò)底層結(jié)構(gòu)的電纜和交換機上。這是典型的“以網(wǎng)絡(luò)為中心的”觀點:認(rèn)為網(wǎng)絡(luò)的構(gòu)成架構(gòu)應(yīng)該決定應(yīng)用程序的通訊模式。
Infiniband 網(wǎng)絡(luò)則基于“以應(yīng)用程序為中心”的新觀點。它的提出來源于一個簡單的問題:如何讓應(yīng)用程序訪問其他應(yīng)用程序以及存儲盡可能的簡單、高效和直接?如果以“應(yīng)用程序為中心”的觀點來思考 I/O 問題,就能得到一種與傳統(tǒng)完全不同的網(wǎng)絡(luò)架構(gòu)。
Infiniband 基于一種非常簡單的原則:提供一種易于使用的消息服務(wù)。這個服務(wù)可以被用來與其他應(yīng)用程序、進(jìn)程或者存儲進(jìn)行通信。應(yīng)用程序不再向操作系統(tǒng)提交訪問其他資源的申請,而是直接使用 Infiniband 消息服務(wù)。Infiniband 消息服務(wù)是一個非常高效、直接的消息服務(wù),它摒棄了傳統(tǒng)網(wǎng)絡(luò)和應(yīng)用程序之間消息傳遞的復(fù)雜結(jié)構(gòu)。直接使用 Infiniband 服務(wù)意味著應(yīng)用程序不再依賴操作系統(tǒng)來傳遞消息,這大大提高了通信效率。如圖 1,Infiniband 消息服務(wù)可以在兩個應(yīng)用程序之間創(chuàng)建一個管道,來使應(yīng)用程序之間直接進(jìn)行通信,從而繞過了操作系統(tǒng),大大提高了效率。
圖 1. Infiniband 通信連接原理
Infiniband 在 HPC(High performance computing)領(lǐng)域的應(yīng)用 高性能計算(HPC)是一個涵蓋面很廣的領(lǐng)域,它覆蓋了從最大的“TOP 500”高性能集群到微型桌面集群。這篇文章里的我們談及的 HPC 是這樣一類系統(tǒng),它所有的計算能力在一段時間內(nèi)都被用來解決同一個大型問題。換句話說,我們這里討論的 HPC 系統(tǒng)不會被用來運行傳統(tǒng)的企業(yè)應(yīng)用,例如:郵件、計費、web 等。一些典型的 HPC 應(yīng)用包括:大氣建模、基因研究、汽車碰撞模擬、流體動態(tài)分析等。圖 2 顯示了一個標(biāo)準(zhǔn)的高性能集群(HPC)的拓?fù)浣Y(jié)構(gòu)?梢钥吹剑诟咝阅苡嬎慵褐,各種設(shè)備是通過集群的交換網(wǎng)絡(luò)連接到一起的。所以,高性能計算系統(tǒng)除了需要高性能的中央處理器外,還需要高性能的存儲和低延遲的進(jìn)程間通信來滿足科學(xué)運算的需求。在大型集群中高速的交換網(wǎng)絡(luò)扮演了非常重要的角色,甚至比 CPU 還要關(guān)鍵,處于集群的核心位置。大量的實驗數(shù)據(jù)表明,集群的性能和可擴(kuò)展性主要和消息在節(jié)點之間的傳遞速度有關(guān),這意味著低延遲的消息傳遞是被迫切需求的,而這正是 Infiniband 的優(yōu)勢。下面我們就介紹下 Infiniband 為什么比傳統(tǒng)網(wǎng)絡(luò)更適合高性能計算系統(tǒng)。
圖 2. 高性能計算集群拓?fù)?/strong>
根據(jù)我們對高性能計算系統(tǒng)的認(rèn)識,Infiniband 的低延遲、高帶寬和原生的通道架構(gòu)對于此類系統(tǒng)來說是非常重要的。低延遲的 Infiniband 網(wǎng)絡(luò)可以在保證性能的前提下,增大集群的規(guī)模。通道 I/O 架構(gòu)則可以提供可擴(kuò)展的存儲帶寬性能,并且支持并行文件系統(tǒng)。
說道 HPC 就不能不提 MPI(Message Passing Interface)。MPI 是應(yīng)用在 HPC 上主要的消息傳遞中間件標(biāo)準(zhǔn)。雖然 MPI 也可以應(yīng)用在基于共享內(nèi)存的系統(tǒng)上,但是,更多的則是被當(dāng)作通訊層用作連接集群中的不同節(jié)點。MPI 通訊服務(wù)依賴于底層的提供節(jié)點間真正信息傳遞的消息服務(wù)。Infiniband 作為一種底層消息服務(wù)為 MPI 層提供了被稱為 RDMA(Remote Direct Memory Access)的消息服務(wù)。在上面一章,我們討論了應(yīng)用程序之間如何通過 Infiniband 通訊架構(gòu)來實現(xiàn)直接的通訊,從而繞過操作系統(tǒng)。在 HPC 中,我們可以認(rèn)為 HPC 應(yīng)用程式調(diào)用 MPI 通訊服務(wù),而 MPI 則利用底層的 RDMA 消息服務(wù)實現(xiàn)節(jié)點間通訊。這就使得,HPC 應(yīng)用程序具備了不消耗集群 CPU 資源的通訊能力。IBM PE(Parallel Environment)軟件作為一種 MPI 標(biāo)準(zhǔn)的實現(xiàn),加入了對 Infiniband 的支持。本文后面的章節(jié)會介紹如何啟用 PE 對 Infiniband 的支持。
通過 HMC 為 IBM POWER 服務(wù)器配置 Infiniband 適配器 要想使用 Infiniband 高速網(wǎng)絡(luò),首先需要對硬件進(jìn)行配置。IBM Power 服務(wù)器提供了對 Infiniband 設(shè)備的原生支持,用戶可以通過 HMC 進(jìn)行統(tǒng)一管理。通過虛擬化,用戶可以方便的將單個 12 倍速的 Infiniband 端口分配給最多 16 個邏輯分區(qū)使用。下面我們就一步步的介紹如何在一個邏輯分區(qū)上增加 Infiniband 設(shè)備。
首先點選需要配置 Infiniband 適配器的邏輯分區(qū),在下拉列表中點選 Configuration Manage Profiles
圖 3. 選擇邏輯分區(qū)
在新彈出的窗口中選擇 Edit:
圖 4. 編輯邏輯分區(qū)配置文件
在 HCA 的標(biāo)簽頁面中,選中要分配的 Infiniband 設(shè)備,并點擊 Configure:
圖 5. 選擇 Infiniband 適配器
- 在新彈出的窗口中,為這個適配器分配一個 GUID index:
圖 6. 配置 Infiniband 設(shè)備屬性
到此為止,我們就成功的為一個邏輯分區(qū)分配了一個新的 Infiniband 適配器。接下來我只需要在 AIX 系統(tǒng)中配置一下,Infiniband 適配器就可以正常使用了。
使用 NIM 安裝高性能計算集群上的 AIX 系統(tǒng) 在使用 HMC 配置完 Infiniband 網(wǎng)絡(luò)設(shè)備以后,我們還需要為集群中每臺的節(jié)點上安裝好 AIX 操作系統(tǒng),由于集群的節(jié)點眾多,使用網(wǎng)絡(luò)安裝是最常見快速的方法。由于篇幅關(guān)系,本文在這里不再講解如何使用 AIX 再帶的網(wǎng)絡(luò)安裝系統(tǒng)(NIM)來自動化的安裝 AIX 操作系統(tǒng)。
在 IBM POWER 上配置 IBM Parallel Environment 使用 Infiniband 網(wǎng)絡(luò) 在安裝完集群的系統(tǒng)后,要想讓 HPC 應(yīng)用軟件使用 Infiniband 網(wǎng)絡(luò),我們還需要安裝配置支持 Infiniband 網(wǎng)絡(luò)的 MPI 通訊軟件。IBM Parallel Environment(PE) 是一個針對 HPC 并行程序的開發(fā)和運行環(huán)境,它提供了對 Infiniband 網(wǎng)絡(luò)的支持,用戶的并行程序可以通過 PE 運行在高速 Infiniband 網(wǎng)絡(luò)上。IBM PE 由消息傳遞函數(shù)庫(如:MPI),并行運行環(huán)境(POE),調(diào)試工具(PDB)組成。IBM PE 實現(xiàn)了兩種通訊庫 ----IP(internet protocol) 和 US(user space)。這兩種通訊庫是對于用戶來說是完全透明的,它們使用統(tǒng)一的應(yīng)用程序編程接口。也就是說使用 IP 協(xié)議的程序可以無需修改就運行在 US 模式。US 模式是 PE 專門為 Infiniband 高速網(wǎng)絡(luò)設(shè)計的通訊子庫,能最大限度的發(fā)揮 Infiniband 網(wǎng)絡(luò)的優(yōu)勢。從 PE 5.2 版本開始,PE 擁有了無需借助資源管理器(例如:IBM LoadLevler)在 Infiniband 網(wǎng)絡(luò)上運行 US 任務(wù)的能力。下面我們就簡單介紹下,如何使用 PE 在 Infiniband 網(wǎng)絡(luò)上運行 US 模式的任務(wù)。
安裝 IBM Parallel Environment 在安裝 IBM Parallel Environment 以前,請保證集群所有節(jié)點之間的 root 用戶可以實現(xiàn)免密碼的 rsh 自由登陸。然后使用下面的步驟安裝 PE:
- 拷貝 IBM Parallel Environment 軟件到一個節(jié)點的硬盤,這里我們假設(shè)拷貝到 /tmp 目錄下
- 使用 install – a – d /tmp ppe* 命令安裝 IBM Parallel Environment 到這個節(jié)點
使用文檔編輯器(如:vi)在 /tmp 下創(chuàng)建一個節(jié)點列表文件 (host.list),里面包含所有節(jié)點名,例如:
清單 1. 節(jié)點列表文件內(nèi)容
- 執(zhí)行 PEinstall /tmp /host命令,IBM Parallel Environment 將會被安裝到所有節(jié)點列表文件中列出的節(jié)點上。
使用 IBM Parallel Environment 在 Infiniband 上進(jìn)行高性能計算 當(dāng)使用 PE 來分配計算節(jié)點時,你需要先創(chuàng)建一個節(jié)點列表文件,就像上一節(jié)我們創(chuàng)建的列表文件一樣。
- 如何使用單個 Infiniband 網(wǎng)絡(luò)適配器: 如果系統(tǒng)中只有一個 IB(Infiniband) 適配器,我們只需要設(shè)置如下的環(huán)境變量就可以使我們的程序利用 IB 網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)交換:
MP_EUIDEVICE=sn_single MP_INSTANCES=max MP_EUILIB=us |
- 如何使用多個 Infiniband 網(wǎng)絡(luò)適配器 PE MPI 支持將消息數(shù)據(jù)條帶化的分配到多個 Infiniband 適配器上進(jìn)行傳輸,以充分利用通信帶寬。如果系統(tǒng)擁有多于一個的 IB 交換網(wǎng)絡(luò),資源管理器將從多個適配器上來獲取 IB 資源。(一個交換網(wǎng)絡(luò)是指連接到同一個交換機上的 IB 設(shè)備構(gòu)成的網(wǎng)絡(luò)。)如果系統(tǒng)只有一個交換網(wǎng)絡(luò),PE 將盡量從不同的適配器上獲得資源,但是當(dāng)其中一個適配器上資源不足時,PE 將只從單獨的適配器上獲得資源。并且,如果其中一個 IB 網(wǎng)絡(luò)通道出現(xiàn)問題,PE 會自動將通訊轉(zhuǎn)移到其它替換通道上。
為了激活條帶化功能,我們需要設(shè)置如下的環(huán)境變量:
MP_EUIDEVICE=sn_all MP_INSTANCES=max(如果只有一個的 IB 交換網(wǎng)絡(luò),無需設(shè)置這個環(huán)境變量) MP_EUILIB=us |
設(shè)置好環(huán)境變量后,我們就可以使用 poe 命令,使用 IB 網(wǎng)絡(luò)提交作業(yè)了。
清單 2. 提交作業(yè)
bash-3.2# poe hello – procs 10 |
雖然從 PE 5.2 開始,PE 可以脫離 IBM LoadLevler 做簡單的資源配置工作,但是,對于大型的 HPC 網(wǎng)絡(luò),我們還是建議使用 LoadLevler 來進(jìn)行作業(yè)調(diào)度和資源管理。下面一節(jié)我們就來介紹如何使用 LoadLevler 配合 PE 利用 Infiniband 網(wǎng)絡(luò)提交作業(yè)。
在 IBM POWER 上配置 IBM LoadLevler 使用 Infiniband 網(wǎng)絡(luò) IBM LoadLevler 是一個高性能計算集群上任務(wù)管理系統(tǒng)。它可以最大化的利用現(xiàn)有系統(tǒng)中的資源,使用戶能在有限的時間內(nèi)運行盡量多的任務(wù)。IBM LoadLevler 可以在動態(tài)的環(huán)境中安排任務(wù),并提供高效的提交和處理任務(wù)的功能。
快速安裝 IBM LoadLevler 下面的步驟需要在集群中的所有節(jié)點上執(zhí)行,你可以通過使用 IBM xCat 中的 xdsh 命令來同步執(zhí)行下面的步驟,具體的方法請參考 xCat 的使用手冊。
在安裝 IBM LoadLevler 前,需要在集群系統(tǒng)的所有節(jié)點上建立一個 loadl 用戶。
清單 3. 創(chuàng)建 loadl 用戶示例
bash-3.2# mkgroup -a loadl bash-3.2# mkuser pgrp=loadl groups=loadl home=/u/loadl loadl bash-3.2# lsuser loadl loadl id=1018 pgrp=users groups=loadl home=/u/loadl shell=/bin/bash gecos=loadl login=true su=true rlogin=true |
拷貝 IBM LoadLevler 軟件包到指定目錄,這里我們假設(shè)拷貝到 /tmp目錄下?梢允褂孟旅娴拿畎惭b軟件包,或者使用 SMIT 工具:
清單 4. 安裝 loadlevler
installp -Y -X -d device LoadL.resmgr.full LoadL.scheduler.full installp -X -B -d device LoadL.resmgr.full LoadL.scheduler.full |
初始化 LoadLevler 配置:
清單 5. 初始化 LoadLevler
bash-3.2# su - loadl bash-3.2# cd /usr/lpp/LoadL/scheduler/full/bin bash-3.2# ./llinit -local /var/loadl -release /usr/lpp/LoadL/full \ -cm < 管理節(jié)點 hostname> |
在 LoadL 里不需要對 Infiniband 網(wǎng)卡做專門的配置,LoadL 會自動從系統(tǒng)中獲得所有網(wǎng)絡(luò)適配器的信息。 - 檢查在 LoadL 的 LoadL_admin 文件中定義的集群節(jié)點,將他們設(shè)置到 pool_list=1
清單 6. LoadL_admin 文件
… Hostname1: type = machine central_manager = true pool_list = 1 hostname2: type = machine pool_list = 1 hostname2: type = machine pool_list = 1 hostname2: type = machine pool_list = 1 |
使用 LoadL 運行高性能計算程序 使用 LoadL 來自動分配計算資源,可以借助 LoadL 強大的調(diào)度功能,提高高性能集群系統(tǒng)的資源利用率,關(guān)于如何使用 LoadL 來做任務(wù)調(diào)度請參考相關(guān)的 LoadL 的管理文檔,本文不做進(jìn)一步的介紹。要使用 LoadL 來做資源管理器,需要設(shè)置 MP_RMPOOL和 MP_RESD環(huán)境變量,根據(jù)上文,我們在 LoadL 配置文件中將系統(tǒng)的資源都設(shè)置到 pool_list1中,這里我只需要使用命令:
清單 7. 設(shè)置 MP_RMPOOL 和 MP_RESD:
bash-3.2#export MP_RMPOOL=1 bash-3.2#export MP_RESD=yes |
另外,我們?nèi)匀恍枰O(shè)置 MP_EUIDEVICE、MP_INSTANCES、MP_EUILIB,設(shè)置方法和第四章的方法相同
設(shè)置好環(huán)境變量后,我們就可以使用 poe命令,通過 IB 網(wǎng)絡(luò)提交作業(yè)了。
清單 8. 提交作業(yè)
bash-3.2# poe hello – procs 10 |
小結(jié) 本文介紹了為什么新一代的高性能計算集群要使用 Infiniband 高速網(wǎng)絡(luò)。以及如何從頭一步步的配置 IBM POWER 服務(wù)器上的 Infiniband 設(shè)備,并使用 IBM 的高性能計算軟件 LoadLevler 和 PE 充分利用 Infiniband 的優(yōu)勢進(jìn)行科學(xué)計算。由于篇幅關(guān)系,本文并沒有介紹如何安裝 Infiniband 硬件和如何安裝系統(tǒng),請讀者閱讀參考文獻(xiàn)中的相關(guān)文檔。
作者簡介 羅明是一名IBM中國軟件開發(fā)中心的軟件工程師。從事多年 IBM 集群管理軟件 CSM 的開發(fā)和測試工作,對高性能集群系統(tǒng)和 IBM POWER 系列產(chǎn)品擁有豐富的管理經(jīng)驗。目前,他負(fù)責(zé)易于管理的高性能計算組合軟件包的開發(fā)工作,致力于提高高性能集群的易用性。
卜俊輝,IBM 中國軟件開發(fā)中心 HPC 部門的軟件工程師,主要從事集群系統(tǒng)管理軟件的相關(guān)研發(fā)工作。
|