盧莎莎,肖海力,王小寧
中國科學(xué)院計算機(jī)網(wǎng)絡(luò)信息中心,高性能計算技術(shù)與應(yīng)用發(fā)展部,北京 100083
高性能計算環(huán)境聚合了國內(nèi)多個異構(gòu)高性能計算資源,由中間件SCE 軟件對計算資源進(jìn)行統(tǒng)一的管理及調(diào)度,屏蔽了底層計算資源的異構(gòu)性,為用戶提供統(tǒng)一的計算服務(wù)。目前,國家高性能計算環(huán)境已經(jīng)包括了19 個單位的超算系統(tǒng),部署了多個研究領(lǐng)域的600 余個應(yīng)用及工具軟件[1]。
環(huán)境中間件SCE 需要部署于各超算中心的前端服務(wù)器,以便完成資源聚合及管理,目前無法保證各前端服務(wù)器軟硬件的一致性,中間件的部署需要大量的人力和時間。同時,常用科學(xué)計算應(yīng)用軟件需要部署在環(huán)境的多個超算集群中,以滿足用戶的計算需求,部分應(yīng)用軟件需要大量的軟件依賴及復(fù)雜的環(huán)境配置,應(yīng)用軟件與超算系統(tǒng)自身軟件間的兼容是亟需解決的問題。
本文主要研究了Docker 及Singularity 相關(guān)容器技術(shù),實現(xiàn)了中間件SCE 及科學(xué)計算軟件LAMMPS等軟件的容器化封裝,并在國家高性能計算環(huán)境中進(jìn)行了部署驗證,在一定程度上解決了軟件在不同系統(tǒng)中的可移植性問題。
國家高性能計算環(huán)境[2]聚合了包括“神威·太湖之光”[3]、“天河-2A”、“天河-1A”在內(nèi)的多個跨域的、異構(gòu)的高性能計算資源,屏蔽了作業(yè)管理系統(tǒng)、接入方式、管理制度等的異構(gòu)性,為科研人員提供了具有統(tǒng)一訪問入口、使用方法和用戶技術(shù)支持的高水平高性能計算應(yīng)用服務(wù)[4]。
國家高性能計算環(huán)境已經(jīng)接入包括中國科學(xué)院計算機(jī)網(wǎng)絡(luò)信息中心、國家超級計算無錫中心、國家超級計算廣州中心等在內(nèi)的19 個結(jié)點(diǎn)。目前,環(huán)境聚合計算能力超過460PF,聚合存儲能力超過310PB,提供計算化學(xué)、分子力學(xué)、高能物理、生命科學(xué)、海洋科學(xué)等領(lǐng)域的開源軟件、商業(yè)軟件和自主研發(fā)軟件[5]。
SCE 軟件[6]是國家高性能計算環(huán)境的中間件,環(huán)境利用SCE 軟件完成資源的管理及調(diào)度。SCE 軟件包含3 個功能模塊Client、 CS (Center Server)和FS (Front Server),其中CS、Client 部署于運(yùn)管中心,F(xiàn)S 部署于環(huán)境中各超算中心的前端服務(wù)器,SCE 軟件架構(gòu)圖如圖1 所示。

圖1 SCE 軟件架構(gòu)[7]Fig.1 SCE software architecture[7]
SCE 軟件需要部署在高性能計算環(huán)境各超算結(jié)點(diǎn)的前端服務(wù)器,服務(wù)器由結(jié)點(diǎn)單位自行配置,其軟硬件環(huán)境均不相同,導(dǎo)致了SCE 軟件部署過程非常繁瑣,亟需優(yōu)化部署方式以提升軟件部署效率。
容器是一種標(biāo)準(zhǔn)化的軟件單元,它將軟件源碼及其依賴關(guān)系打包,可以方便地在不同的系統(tǒng)環(huán)境之間進(jìn)行快速可靠的遷移,具有輕量化、平臺無關(guān)性、安全性等特征[8]。Docker 及Singularity 是科學(xué)計算領(lǐng)域廣泛應(yīng)用的容器技術(shù)代表。
Docker[9]是dotCloud 開發(fā)的基于Linux Container 的高級容器引擎,采用客戶端-服務(wù)端的架構(gòu)模式,適用于大規(guī)模應(yīng)用服務(wù)部署的場景。與虛擬機(jī)技術(shù)相比,Docker 具有明顯的優(yōu)勢[10],包括:
(1)輕量級技術(shù):Docker 容器直接共享宿主機(jī)Linux 內(nèi)核,可以以秒級別的時間進(jìn)行啟動。
(2)能夠快速構(gòu)建標(biāo)準(zhǔn)化環(huán)境:利用Docker 可以快速構(gòu)建出完全相同的環(huán)境,包括操作系統(tǒng)及所有的軟件配置,解決了軟件部署環(huán)境的適配問題。
(3)方便對服務(wù)進(jìn)行橫向擴(kuò)展:能夠快速部署大量的標(biāo)準(zhǔn)化服務(wù),并且能夠保證服務(wù)間的隔離性。
Singularity[11]始于2015年美國勞倫斯伯克利國家 實驗 室(Lawrence Berkeley National Laboratory)的開源項目,專門為大規(guī)模、跨節(jié)點(diǎn)HPC(High Performance Computer)而開發(fā)的容器化技術(shù),并且能夠支持Docker 鏡像格式的轉(zhuǎn)換。
Singularity 具有以下特性:
(1)Singularity 的鏡像包含了軟件所有依賴關(guān)系的鏡像,能夠非常好的解決跨計算環(huán)境的兼容性問題。
(2)科學(xué)計算領(lǐng)域的應(yīng)用軟件大部分需要借助于MPI 之類的并行技術(shù),Singularity 增加了MPI 的兼容能力,帶有與宿主機(jī)相同MPI 版本的Singularity容器可直接通過mpirun 命令啟動,與超算環(huán)境集成更加便捷[12]。
(3)Singularity 可以直接與作業(yè)調(diào)度系統(tǒng)集成,無需為科學(xué)計算環(huán)境做額外的適配。
與Docker 不同的是,Singularity 啟動時,能夠保證用戶上下文保持不變,使得用戶權(quán)限在容器內(nèi)部和外部保持一致,避免用戶權(quán)限提升等不安全因素,更加適用于普通用戶使用應(yīng)用軟件的場景。經(jīng)過阿里云超算測試,Singularity 容器下測得的HPL (High-Performance Linpack)性能要略優(yōu)于Docker 容器,且與宿主機(jī)的實測HPL 性能相當(dāng)[13]。
SCE 軟件按照功能分為CS、FS、Client 三個模塊,每個功能模塊都可以部署在不同的服務(wù)器中,其安裝流程和運(yùn)行所需的配置均不相同。因此,對SCE軟件的CS、FS 和Client 端均做了容器化的封裝,方便軟件靈活部署。以CentOS 7 鏡像為基礎(chǔ)鏡像,根據(jù)目標(biāo)模塊的不同,選擇對應(yīng)的CS、FS、Client 的源碼包進(jìn)行安裝,同時將各模塊需要的配置文件進(jìn)行掛載,完成鏡像構(gòu)建。利用Docker 中ENTRYPOINT指令,指定CS、FS、Client 容器啟動時需要進(jìn)行的操作,包括創(chuàng)建主機(jī)秘鑰、將配置文件拷貝至指定目錄、啟動相關(guān)服務(wù)等,保證容器啟動時所有服務(wù)及配置能夠自動運(yùn)行。具體流程如圖2 所示。

圖2 SCE 軟件容器化流程Fig.2 Building process of SCE containers
在實際運(yùn)行中,CS 端和FS 端均需要數(shù)據(jù)庫來存儲運(yùn)行數(shù)據(jù),為了方便部署,將數(shù)據(jù)庫服務(wù)從CS 端及FS 端剝離,構(gòu)建了獨(dú)立的MySQL 鏡像。MySQL 鏡像以MySQL 5.7 鏡像為基礎(chǔ),將CS 端、FS 端的數(shù)據(jù)庫初始化腳本掛載至鏡像指定目錄,當(dāng)MySQL 容器啟動時,自動執(zhí)行初始化腳本,完成相關(guān)數(shù)據(jù)庫表的創(chuàng)建,具體如圖3 所示。

圖3 MySQL 容器化流程Fig.3 Building process of MySQL container
整個高性能計算環(huán)境除了SCE 中間件之外,還需要底層高性能計算系統(tǒng)才能夠進(jìn)行作業(yè)的計算。本文以CentOS 7 鏡像為基礎(chǔ),安裝Torque 作業(yè)管理系統(tǒng),部署LAMMPS 軟件,完成了HPC 鏡像構(gòu)建,能夠更好地搭建開發(fā)測試環(huán)境。
默認(rèn)情況下,在Docker 容器中修改文件時,會直接存儲于容器的可讀寫層中,容器內(nèi)部數(shù)據(jù)會隨著容器的關(guān)閉一并消失。SCE 軟件運(yùn)行時,有大量的配置文件、運(yùn)行數(shù)據(jù)及用戶作業(yè)信息需要進(jìn)行存儲,這些數(shù)據(jù)需要長時間留存,不能隨著相關(guān)容器的關(guān)閉而消失。因此,在對SCE 軟件進(jìn)行容器化封裝時,必須要考慮數(shù)據(jù)持久化存儲的問題。
對于容器中持久化數(shù)據(jù)存儲[14],Docker 提供volumes 和bind mounts 兩種方式,其中,volumes 是在宿主機(jī)文件系統(tǒng)上的Docker 工作目錄下創(chuàng)建對應(yīng)的目錄來存儲數(shù)據(jù),其他非Docker 進(jìn)程無法修改其中的文件;bind mounts 是將宿主機(jī)的文件或目錄直接掛載到容器中,數(shù)據(jù)可以存儲于宿主機(jī)的任何位置,其數(shù)據(jù)可以被宿主機(jī)或者掛載它的所有容器讀寫。實際運(yùn)行中,SCE 軟件的CS 及Client 模塊會部署多個副本,同一模塊的多個副本中需要共享部分?jǐn)?shù)據(jù)存儲,以便對環(huán)境信息進(jìn)行同步更新。所以,SCE 容器的持久化存儲采取bind mounts 的方式進(jìn)行掛載。
通過分析SCE 軟件模塊的運(yùn)行模式,對需要持久化存儲的數(shù)據(jù)進(jìn)行了提取。對CS、FS、Client 容器,需要掛載WORKSPACE 和LOG 目錄作為持久化存儲目錄,WORKSPACE 目錄用于存放用戶提交作業(yè)過程中產(chǎn)生的文件,LOG 目錄用于存放環(huán)境運(yùn)行中產(chǎn)生的日志文件;MySQL 容器需要掛載DBSPACE目錄作為持久化存儲目錄,用于存放數(shù)據(jù)庫文件。需要持久化存儲的目錄在圖2、圖3 中以灰色模塊展示。
SCE 軟件相關(guān)容器已經(jīng)部署于環(huán)境中多個結(jié)點(diǎn),經(jīng)過實際運(yùn)行驗證,各模塊容器均能夠穩(wěn)定運(yùn)行,具體部署方式如圖4 所示。

圖4 SCE 軟件容器化部署示意圖Fig.4 Deployment of SCE containers
國家高性能計算環(huán)境中涉及計算化學(xué)、分子力學(xué)、高能物理等領(lǐng)域的科學(xué)計算軟件,涉及軟件種類較多,本文主要介紹其中常用軟件LAMMPS(Large- scale Atomic/Molecular Massively Parallel Simulator)的 容器化封裝及測試。
LAMMPS[15]軟件是美國Sandia 國家實驗室開發(fā)的一款開源軟件,可翻譯為大規(guī)模分子并行模擬器,廣泛應(yīng)用于分子動力學(xué)相關(guān)的計算和模擬工作。LAMMPS 軟件在國家高性能環(huán)境中使用廣泛,環(huán)境中已經(jīng)部署不同版本LAMMPS 軟件18 個,涉及13個超算系統(tǒng)。軟件使用環(huán)境利于測試及推廣。
開發(fā)環(huán)境采用單計算節(jié)點(diǎn),在開發(fā)環(huán)境完成應(yīng)用軟件的容器化封裝,開發(fā)環(huán)境參數(shù)如表1 所示。

表1 開發(fā)環(huán)境配置Table 1 Configuration of development environment
在LAMMPS 軟件的Singularity 容器化封裝過程中,采用分步打包的方式,留存不同層次的鏡像包,以便后期封裝更多應(yīng)用軟件時可以復(fù)用,具體封裝流程如下。
(1) 下載基礎(chǔ)操作系統(tǒng)鏡像,創(chuàng)建sce-CentOS鏡像
Singularity 鏡像可以由Docker 鏡像轉(zhuǎn)換,本部分直接從Docker Hub 下載CentOS 7 作為容器運(yùn)行基礎(chǔ)鏡像,進(jìn)行常用工具軟件的安裝及配置。
(2) 創(chuàng)建APP-CentOS 鏡像
APP-CentOS 鏡像基于sce-CentOS 鏡像構(gòu)建,構(gòu)建方式采用localimage 方式。主要進(jìn)行LAMMPS必需的FFTW 庫及OpenMPI 的安裝。為方便后續(xù)測試及用戶使用,鏡像中安裝了1.10.7、2.1.6 和3.0.2三個版本的OpenMPI。
(3) 創(chuàng)建LAMMPS 鏡像
LAMMPS 鏡像同樣采用localimage 方式,基于APP-CentOS 鏡像構(gòu)建。鏡像中基于不同版本的OpenMPI 對LAMMPS 軟件進(jìn)行編譯。為方便在超算系統(tǒng)中調(diào)用,采用Singularity 中app 模塊來對不同編譯版本的LAMMPS 的相關(guān)環(huán)境變量及啟動程序等進(jìn)行設(shè)置。
完成LAMMPS 鏡像構(gòu)建之后,在曙光測試集群、中國科學(xué)技術(shù)大學(xué)集群進(jìn)行了運(yùn)行時間以及MPI 兼容性的測試。
4.4.1 運(yùn)行時間測試
LAMMPS 容器運(yùn)行時間測試在曙光測試集群上進(jìn)行,該集群配置如表2 所示。

表2 曙光測試集群配置Table 2 Configuration of Sugon cluster
針對不同MPI 版本、不同運(yùn)行規(guī)模,在測試集群上對LAMMPS 鏡像進(jìn)行了測試。以宿主機(jī)中OpenMPI 2.1.6 編譯的LAMMPS 的運(yùn)行時間為基準(zhǔn),容器中LAMMPS 運(yùn)行時間誤差不超過2.63%。具體測試結(jié)果如圖5 所示。

圖5 LAMMPS 容器運(yùn)行時間Fig.5 Running time of LAMMPS container
4.4.2 MPI 兼容性測試
LAMMPS 軟件需要借助于MPI 進(jìn)行計算,Singularity 增加了MPI 的兼容能力,帶有與宿主機(jī)相同MPI 版本的Singularity 容器可直接通過mpirun命令啟動。
LAMMPS 容器與宿主機(jī)之間的MPI 兼容性測試在中國科學(xué)技術(shù)大學(xué)集群、上海交通大學(xué)集群、曙光集群、曙光測試集群等集群上進(jìn)行。其中中國科學(xué)技術(shù)大學(xué)集群、上海交通大學(xué)集群、曙光集群為正式對外服務(wù)集群,集群上已經(jīng)安裝了多個版本的OpenMPI 編譯器,中國科學(xué)技術(shù)大學(xué)集群測試環(huán)境配置如表3 所示,其他集群配置不再一一贅述。

表3 中國科學(xué)技術(shù)大學(xué)集群配置Table 3 Configuration of USTC cluster
測試結(jié)果表明,在宿主機(jī)與容器之間的MPI兼容性方面,OpenMPI 2 系列對版本要求較高,OpenMPI1、OpenMPI 3 和OpenMPI 4 系列兼容性較好。具體測試結(jié)果如表4 所示。

表4 MPI 兼容性測試Tables 4 Compatibility test of MPI
目前,LAMMPS 容器已經(jīng)部署在國家高性能計算環(huán)境中,正式對外提供服務(wù)。圖6 為服務(wù)中可以選擇的LAMMPS 容器資源。

圖6 國家高性能計算環(huán)境中LAMMPS 容器部署Fig.6 LAMMPS container in National High Performance Computing Environment
除LAMMPS 軟件之外,本文同時完成了GRO-MACS[16]軟件的容器化封裝,并在上海交通大學(xué)集群上對GROMACS 性能進(jìn)行了測試,軟件版本均選擇2020.2,具體結(jié)果如表5 所示。其中性能單位為ns/day,數(shù)值越高代表性能越好。由測試結(jié)果可以看出,GROMACS 在容器中與宿主機(jī)中運(yùn)行性能相當(dāng),可以部署在高性能計算環(huán)境中使用。

表5 GROMACS 容器測試Table 5 Testing of GROMACS container
本文對中間件SCE 及LAMMPS 等軟件進(jìn)行了容器化封裝,通過在國家高性能計算環(huán)境中部署驗證,容器可以正常運(yùn)行,能夠?qū)ν馓峁┓?wù)。中間件SCE 軟件的容器化,進(jìn)一步優(yōu)化了SCE 軟件的持續(xù)交付流程,并且能夠快速地對相關(guān)服務(wù)進(jìn)行橫向擴(kuò)展,提升環(huán)境承載能力;應(yīng)用軟件的容器化封裝,解決了應(yīng)用軟件與超算系統(tǒng)自有編譯環(huán)境的適配問題,提升了應(yīng)用軟件部署效率。
后續(xù)工作中,還需要對國家高性能計算環(huán)境運(yùn)行相關(guān)的LDAP 和Nagios 監(jiān)控等服務(wù)進(jìn)行容器化封裝,考慮利用Kubernetes 等技術(shù)對已有容器進(jìn)行編排管理,進(jìn)一步優(yōu)化部署方式。
對于應(yīng)用軟件,測試工作還需要進(jìn)一步完善,包括分析各超算系統(tǒng)的軟硬件特點(diǎn),針對網(wǎng)絡(luò)、CPU 類型、MPI 版本等對容器性能的影響進(jìn)行進(jìn)一步分析測試及優(yōu)化。同時,還需要進(jìn)一步擴(kuò)充科學(xué)計算軟件鏡像的數(shù)量,搭建應(yīng)用軟件鏡像倉庫,為用戶提供方便易用的科學(xué)計算軟件鏡像服務(wù)。
利益沖突聲明
所有作者聲明不存在利益沖突關(guān)系。