999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一個提高氣象數值模式計算性能的并行I/O優化技術

2019-11-15 06:15:46鄧平張慶花張玉龍
關鍵詞:進程優化

鄧平 張慶花 張玉龍

(作者單位:鄧平,深圳市氣象局;張慶花、張玉龍,曙光信息產業(北京)有限公司)

闡述了開展并行I/O研究對氣象數值預報的重要意義,以及通過并行I/O技術充分發揮并行存儲性能的必要性和迫切性,提出了并行文件系統底層優化策略及基于MPI-IO的高層I/O庫的優化方法,優化后可支持氣象要素的并行輸出,試驗測試數據表明,優化后輸出效率明顯提升。

氣象數值模式大規模并行計算會在短時間內產生大量的數據,并且小文件數量巨大,對整個系統的I/O性能、穩定性要求很高,一般要求有分布式存儲系統或者并行文件系統,否則容易形成I/O瓶頸,很難獲得理想的模式計算加速比。隨著氣象數值模式的時空分辨率不斷提升,要求更大的數據存儲容量及更高的并發I/O存儲帶寬,I/O性能成為模式運行效率的主要瓶頸之一。本文以深圳市氣象局逐時雷達同化預報系統(Hourly Assimilation Prediction System,HAPS)1 km算例為例進行分析。

逐時雷達同化預報系統是深圳市氣象局業務化運行系統,“十三五”期間,為滿足精細化城市預報需求,該系統的水平分辨率要從4 km提升至1 km,垂直分辨率要從51層提高到70層。升級后的應用系統對整個系統的I/O性能、穩定性要求很高,模式讀入輸入數據后,以特定積分步長、完成特定的計算任務,在特定的時間間隔把計算結果的輸出到文件,該模式的輸出文件為NetCDF數據格式。

HAPS 1 km算例模擬時間范圍為24 h,每積分30 min輸出一個wrfout文件,每個wrfout文件大小為8.1 G,一次算例的輸出文件大小共為396.9 G,串行輸出時耗時約為5880 s。因此,傳統的串行輸出方式一方面影響了模式運行的效率,另一方面造成了計算資源的浪費,且未能充分發揮并行存儲的優勢。

針對深圳市氣象局數值計算時普遍遇到的I/O性能瓶頸問題,開展了面向氣象領域的數據并行處理技術的研究,以解決模式運行時數據的讀寫效率問題。經過深入分析,可從以下兩個方面對應用程序的輸出效率進行優化。

一方面,從存取文件的方式以及應用程序內部的讀寫算法進行調整,提高氣象應用的文件訪問效率。應用并行I/O庫,由同一并發程序的多個進程產生對文件數據的并發請求。減少了串行讀取數據時并行通信域中其他處理器核心處于等待狀態造成的計算資源浪費,同時多個處理器并行訪問數據可充分發揮并行存儲的性能優勢。另一方面,從文件系統角度,針對模式計算和前后處理的I/O特征,進行并行文件系統底層軟件優化和I/O策略優化。優化策略主要包含鎖顆粒優化、atime優化、文件鎖優化、條帶塊大小自適應、條帶寬度調整、條帶預讀、數據均衡、基于智能算法提高緩存命中率,優化并行文件系統的性能。

1 并行I/O優化

讀寫文件策略(圖1)分為三類:

1)只有一個進程讀寫

主進程需要負責所有文件的I/O操作,將文件中的所有數據讀入自己的緩沖區(buffer),然后用MPI發送接收函數將大部分數據傳給并行程序的所有任務。計算結束后,主進程負責將所有結果數據寫到文件。顯然,該策略時,應用存取數據的效率取決于MPI通信性能和主任務對文件的訪問性能。

圖1 I/O策略

2)多個進程分別讀寫

用戶將應用所需的一個數據文件按照特定的方式分成多個文件,每個進程只操作自己的文件,彼此間不協調,相互獨立。這種策略優點為既能同時使用計算服務器的多個網絡通道,發揮并行存儲系統的多客戶端接入能力,并且沒有額外的鎖開銷,適用于進程數量較少且單進程訪存的數據量大的情況。缺點是當進程數量較多時,輸出的文件數據太多,增加了后續處理的復雜度及難度。

3)多個進程讀寫同一文件

MPI-2對MPI-1進程了幾個重要的擴展,增加了對MPI-IO的支持,MPI-IO是一個并行I/O庫,提供了執行可移植的、用戶級的I/O 操作接口。MPI可以通過該接口在文件和進程間傳送數據。從而實現了并行程序通過多任務并發讀取同一個文件。多個進程相互配合,避免無用操作。

MPI-IO分為非集中式I/O操作及集中式I/O操作,相比于POSIX I/O接口,其具有以下優點:1)更高級別的數據接口,可以并行寫入復雜的數據類型,允許并行文件系統及MPI-IO調用優化性能;2)支持數據一致性和原子性;3)優化I/O函數。目前,已有Parallel-NetCDF及HDF5等支持MPI-IO的專業庫。Parallel-NetCDF繼承了傳統的NetCDF代碼。保持了NetCDF數據格式的兼容性的特點,是一個高性能的對NetCDF格式數據進行訪問的應用編程接口。Parallel-NetCDF及HDF5均創建于MPI-IO上層,提供集合I/O,驅動底層MPI-IO,獲得持續的并行訪問性能??蓸O大地提高I/O效率。

原HAPS模式I/O策略采用串行I/O方式,只有一個進程進行讀寫,主進程負責所有文件的I/O操作,數據輸出效率成為模式整體效率的瓶頸。而多個進程分別讀寫的方式則會產生與進程數相同的文件,輸出的文件數目很多,增加了后處理的復雜度及難度。因此本文研究在HAPS模式中應用并行I/O庫,使用多個進程讀寫同一個文件的策略,一方面通過多進程并行輸出提升I/O的性能,另一方面采用該策略不會增加后處理的復雜度。

2 文件系統優化

MPI-IO基于軟件包ROMIO實現,包含多個驅動,并可針對文件系統進行針對性優化,目前MPI-IO的優化技術在部分文件系統的表現不如人意,根源是部分文件系統的分布式鎖沒有配合好。目前鎖協議類型多,通過研究測試選擇合適的鎖協議,減少申請鎖的次數,減少不必要的時間消耗。

分布式鎖是分布式系統控制同步訪問共享資源的一種方式。如果不同的系統或是同一個系統的不同主機之間共享了一個或一組資源,那么訪問這些資源的時候,需要互斥來防止彼此干擾來保證一致性,在這種情況下,便需要使用到分布式鎖。對于文件系統,資源可以是文件的數據區間,也可以是文件的元數據屬性;對于數據庫系統,資源可以是一張表或者一條記錄。資源實體是描述資源各種屬性的實體結構。

文件系統根據共享資源不同支持多種粒度的鎖:節點鎖、文件系統鎖、目錄鎖、文件鎖和區間鎖等。通過細化分布式鎖的粒度降低應用請求之間的沖突,提升系統的并發性能。

根據鎖處理過程中的角色不同,存儲文件系統將系統中的邏輯節點劃分為協調者和發起者。協調者負責某一資源上的所有鎖的授予召回操作,協調者根據資源上不同類型鎖之間的優先級和互斥性決定是否授予相應的鎖。每個資源對應一個協調者,但是一個協調者可以管理多個資源的鎖操作。文件系統中存在多個協調者,而且一個資源可以切換協調者,但是同一時間,一個資源只有一個協調者。鎖的發起者可以是客戶端節點的應用進程,也可以是存儲后臺服務進程,同一資源的鎖發起者之間存在競爭。

2.1 鎖顆粒優化

確定加鎖機制后,對文件系統中選擇合適的鎖顆粒,不合適的鎖顆粒就會造成巨大的資源消耗:內存、CPU計算能力、存儲空間等。通過并行文件系統測試優化鎖顆粒的設置。

文件系統的默認配置一般針對順序大塊I/O場景性能最優,通過鎖擴展提升鎖命中度,進一步提升I/O性能。多進程并發讀寫同一個文件的場景,鎖擴展后每個進程獲取到更大范圍的鎖空間,導致進程之間鎖沖突的概率增大。對鎖沖突的處理會降低I/O效率,關閉鎖擴展,根據I/O粒度加對應的鎖,降低鎖沖突可以極大的提升I/O性能。

2.2 atime 優化

按照標準的POSIX語義,讀操作需要更新文件的atime。在業務運行過程中,讀取輸入數據階段,多個進程讀同一個文件的場景,即為多個進程并發修改同一個文件的atime的場景。

對于需要上萬核心并發執行的高性能作業,對于輸入文件atime的修改會成為讀取輸入數據的瓶頸。部分文件系統支持掛載時noatime參數,即關閉atime更新,提升讀取輸入數據性能,關閉atime的優化方案適用于不依賴atime的應用程序。對于依賴atime的應用程序,文件系統通過細化元數據鎖粒度,設置單獨的atime鎖,提升atime更新性能。

2.3 文件鎖優化

應用程序必須調用MPI庫讀寫數據的場景,文件系統通過提升鎖服務線程個數并且在客戶端開啟鎖緩存的方式提升加鎖性能。

文件系統將用戶文件劃分成定長的數據段,每個數據段中的數據對象以條帶化的方式存放在多個存儲設備上。為了保證數據的可靠性,同一個數據段中的數據對象之間采用多副本或糾刪碼的方式進行冗余保護:當部分數據對象所在的存儲節點、網絡或存儲設備發生故障時,系統可以通過其他數據對象來及時重建該數據,以保證數據的可靠性。

文件系統對I/O 性能的優化,除了鎖顆粒、atime、文件鎖優化之外,還包括以下幾個方面:

1)條帶塊大小自適應:針對不同大小的文件,文件系統可以自適應的選擇不同的條帶塊大小,確保各種大小文件的I/O性能達到最優;

2)增加條帶寬度:文件系統在線調整條帶寬度,在存儲系統擴容后,可以通過增加條帶寬度,優化文件的順序訪問I/O性能;

3)條帶預讀:條帶預讀是文件系統預讀算法中的一種,通過條帶預讀可以進一步優化順序讀I/O的性能;

4)數據均衡:文件系統可存儲節點和存儲設備的容量進行數據均衡,在保證冗余規則的前提下,調整數據對象在系統中的分布情況,提高數據訪問性能。

條帶化主要受限于存儲集群規模和數據冗余度。更大規模的集群可以支持更多的條帶化配置和數據冗余度配置,I/O性能優化的空間越大。

2.4 緩存命中率優化

隨著IT技術的發展,CPU計算能力發展迅速,機械硬盤(HDD)容量雖有著驚人的擴展,但是性能的提升遠遠不夠,硬盤與CPU之間的性能鴻溝越來越大。在工作負載較大、對性能要求較高的I/O中,硬盤的性能往往成為瓶頸。增加內存(RAM Cache)可以明顯提升系統的訪問速度,但單位容量的內存價格過于昂貴,絕大多數的用戶難以接受。

SSD相較于機械硬盤,帶寬及響應時間有著明顯的優勢,并且容量遠大于普通內存。將SSD作為緩存資源,可以顯著降低存儲系統的響應時間,有效提高數據的訪問頻率。

文件系統利用SSD盤對隨機小文件讀取速度快的特點,將SSD盤組成介于HDD與內存之間的二級緩存池。通過智能算法將訪問頻度高的隨機小文件熱點數據存放到SSD上,應用程序再次訪問該數據時,可以直接從SSD上獲取。由于SSD盤的數據讀取速度遠遠高于機械硬盤,因此可以顯著縮短熱點數據的響應時間,從而提升系統的性能。

存儲系統的數據節點上配置一塊或多塊的SSD,通過配置參數設定作為緩存資源的SSD容量(其余容量可以用作普通數據盤)。SSD只能加速所在節點上的數據訪問,SSD故障后不影響數據正確性,拔掉SSD緩存盤后再插入,其上的緩存數據會自動清除。

SSD緩存功能需要消耗一定的內存容量來記錄數據的訪問熱度等信息。一般情況下,開啟SSD緩存功能后,消耗的內存與SSD緩存容量比例為1∶50,即1 TB的SSD緩存容量需要消耗20GB的普通內存。

基于智能算法,自動識別連續/隨機I/O,過濾大塊連續I/O操作,僅將隨機訪問的小塊數據放置到SSD,最大程度地發揮SSD緩存作用。開啟SSD讀緩存功能后,數據節點將熱點數據拷貝至SSD緩存中。相較于機械硬盤,SSD無尋道時間,可以大大減少熱點數據的讀取時間,提高熱點數據的讀性能。

SSD緩存讀取流程包括讀緩存命中和讀緩存未命中。

2.4.1 讀緩存命中

當客戶端訪問的數據在SSD緩存中時,讀取請求將由SSD直接返回至內存,稱之為讀緩存命中。以POSIX協議訪問為例,讀取流程如圖2所示。具體如下:1)客戶端向索引節點請求文件的位置;2)索引節點返回文件元數據信息;3)客戶端計算得到文件存儲的數據節點位置,并向數據節點的內存發送讀請求;4)若數據未在內存中,繼續向本節點的SSD發送讀請求;5)SSD緩存命中后,將數據從SSD讀取到內存中;6)內存將讀取到的數據返回到客戶端。

2.4.2 讀緩存未命中

圖2 讀緩存命中流程

當客戶端訪問的數據不在SSD緩存中時,讀取請求需要從機械硬盤返回至內存,稱之為讀緩存未命中。以POSIX協議訪問為例,讀取流程如圖3所示。具體如下:1)客戶端向索引節點請求文件的位置;2)索引節點返回文件元數據信息;3)客戶端計算得到文件存儲的數據節點位置,并向數據節點的內存發送讀請求;4)若數據未在內存中,繼續向本節點的SSD發送讀請求;5)SSD緩存未命中,將結果返回給內存;6)內存下發I/O請求至機械硬盤;7)機械硬盤將數據返回至內存;8)內存將數據寫入到SSD,作為熱點數據緩存;若SSD作為緩存的容量已滿,將根據LRU算法將之前寫入的部分數據拋棄;9)內存將數據返回給客戶端。

圖3 讀緩存未命中流程

針對逐時雷達同化預報系統的讀操作,一方面將SSD盤作為二級緩存池,顯著降低存儲系統的響應時間,有效提高數據的訪問頻率;另一方面通過智能算法將訪問頻度高的隨機小文件熱點數據存放到SSD上,應用程序再次訪問該數據時,可以直接從SSD上獲取,提升應用程序的訪存性能。

3 優化方案及測試

3.1 HAPS 算例簡介

HAPS 1 km算例為單層嵌套網格,水平網格數為1281×961,垂向層數為70層,時間步長為6 s,積分時長為24 h,輸入文件大小共為1.549 G,輸出設置為每半小時輸出模擬結果,每次輸出文件大小為8.1 G,共輸出文件49個,輸出文件大小共為396.9 G。

3.2 測試環境

1)硬件配置

● 單節點2顆Intel Xeon Gold 6142 CPU;

● 單節點內存:192 GB;

● 通信網絡:100 Gbps EDR infiniband

● 分布式并行文件存儲系統

2)軟件配置

● Intel compiler 2017

● Intelmpi 2017

● Netcdf 4.4.0

● Pnetcdf 1.8.1

● Slurm作業調度系統

3.3 優化方案及關鍵技術參數

1)MPI-IO庫優化:在HAPS 應用中調用支持PNETCDF庫,提供集合I/O,驅動底層MPI-IO,獲得持續的并行訪問性能,以提高I/O效率。應用中使用PNETCDF庫,版本為1.8.1,具體驗證時可在編譯HAPS應用時添加-DPNETCDF選項,通過設置namelist.input中的選項io_form_history參數判定輸出文件使用Netcdf方式或者并行Pnetcdf方式,設置io_form_history=2為使用串行I/O方式,設置io_form_hisory=11為使用MPI-IO方式。

2)atime優化:通過mount掛載時添加-o noatime參數實現,提升讀取輸入數據性能。在HAPS運行過程中,多個進程讀同一個文件的場景,即為多個進程并發讀取同一個文件的atime的場景。對atime的修改成為數據讀取的瓶頸,因此在文件系統掛載時添加-o noatime參數關閉。

3)文件鎖優化:設置文件系統內部一次I/O的塊大小chunksize為HAPS 1 km算例輸出文件I/O塊大小,針對不同的業務,文件系統可以設置不同的chunksize,確保各種大小文件的I/O性能達到最優;避免浪費網絡及磁盤資源,提升讀寫效率。

HAPS模式調用MPI庫讀寫數據的場景,文件系統通過提升鎖服務線程個數并且在客戶端開啟鎖緩存的方式提升加鎖性能。通過專門的鎖服務處理線程提升服務端鎖服務處理能力,并且降低對其他請求的影響。客戶端增加鎖緩存,進一步降低服務端服務壓力。

4)緩存命中率優化: 該文件系統利用SSD盤對隨機小文件讀取速度快的特點,將SSD盤組成介于HDD與內存之間的二級緩存池。在存儲系統的數據節點上配置一塊或多塊的SSD,通過配置參數設定作為緩存資源的SSD容量。SSD只能加速所在節點上的數據訪問,SSD故障后不影響數據正確性,拔掉SSD緩存盤后再插入,其上的緩存數據會自動被清除。

通過智能算法將訪問頻度高的隨機小文件熱點數據存放到SSD上,應用程序再次訪問該數據時,可以直接從SSD上獲取。由于SSD盤的數據讀取速度遠遠高于機械硬盤,因此可以顯著縮短熱點數據的響應時間,提高緩存命中率,提高系統I/O的性能。

3.4 測試驗證方案及步驟

3.4.1 驗證方案

1)HAPS使用串行I/O輸出方式,統計I/O時間及整個模式的墻鐘時間;

2)HAPS使用串行I/O輸出方式,對并行文件系統進行調優,統計I/O時間及整個模式的墻鐘時間

3)HAPS使用MPI-IO輸出方式,統計I/O時間及整個模式的墻鐘時間;

4)HAPS使用MPI-IO輸出方式,同時對并行文件系統進行調優,統計I/O時間及整個模式的墻鐘時間。

通過以上四種運行方式的對比,驗證提出的并行I/O優化技術的效果。

3.4.2 驗證步驟

編譯NETCDF 庫、PNETCDF庫、及HAPS應用,生成haps.exe可執行文件。

編寫運行驗證運行腳本haps.sh:

#!/bin/bash

#SBATCH -J HAPS

#SBATCH --comment=HAPS

#SBATCH -p normal

#SBATCH -o log.%j

#SBATCH -e log.%j

#SBATCH -t 12:00:00

#SBATCH -N 50

#SBATCH -n 1500

#SBATCH --exclusive

module load compiler/intel/composer_xe_2017.2.174

module load mpi/intelmpi/2017.2.174

export I_MPI_FABRICS=shm:dapl

export I_MPI_DAPL_UD_PROVIDER=ofa-v2-mlx5_0-1u

export I_MPI_DAPL_PROVIDER=ofa-v2-mlx5_0-1u

export I_MPI_LARGE_SCALE_THRESHOLD=8192

export FORT_BUFFERED=1

echo $(date +%H:%M:%d)

mpirun ./haps.exe

echo $(date +%H:%M:%d)

通過提交sbatch haps.sh腳本進行優化驗證。

3.5 效率驗證

使用1500個處理器核心數運行算例,運行結果如圖4所示,其中:輸入時間=讀取初始場文件時間+讀取邊界場文件時間,輸出時間=wrfout文件輸出時間的總和,計算時間=墻鐘時間-輸入時間-輸出時間。

圖4 墻鐘時間分解

運行HAPS 1 km時使用串行I/O方式,由于輸出文件數據量較大,I/O時間占總墻鐘運行時間的61%。I/O成為整個模式的性能瓶頸。因此應用并行I/O技術并對并行文件系統底層軟件進行優化,首先HAPS仍使用串行I/O輸出方式,對分布式文件系統進行調優,I/O時間由61%降低為 57%;其次單獨應用MPI-IO技術后進行測試,實現并行輸出氣象要素,I/O時間占比由61%降低為16%;最后測試對分布式文件系統進行調優并應用MPI-IO技術,I/O時間占比由16%降低為12.2%,由于輸入文件大小僅為1.549 G,因此讀入部分耗時占比較低。該試驗結果表明,通過該方法可顯著提高模式整體運行性能。

4 結語

本文針對深圳市氣象局數值計算時普遍遇到的I/O性能瓶頸問題,開展提高氣象數值模式計算性能的并行I/O優化技術研究。一方面,在HAPS應用中支持PNETCDF庫,驅動底層MPI-IO,獲得持續的并行訪問性能;另一方面,針對業務特性,開展并行文件系統參數優化,通過調優分布式鎖,提升MPI-IO優化技術在實際應用中的性能。通過實驗驗證表明,該優化方法可顯著提升HAPS 1 km的整體I/O性能。

深入閱讀

Gropp W, Lusk E, Doss N, et al, 1996. A high-performance, portable implementation of the MPI message passing interface standard.Parallel Computing, 22(6): 789828.

Gropp W, Lusk E, Thakur R, 1999. Using MPI-2: Advanced features of the message passing interface. Cambridge: MIT Press.

Thakur R, Gropp W, Lusk E, 1999. On implementing MPI-IO portably and with high performance. In Proceedings of the Workshop on Input/Output in Parallel and Distributed Systems.

猜你喜歡
進程優化
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
由“形”啟“數”優化運算——以2021年解析幾何高考題為例
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
基于低碳物流的公路運輸優化
現代企業(2015年2期)2015-02-28 18:45:09
我國高等教育改革進程與反思
教育與職業(2014年7期)2014-01-21 02:35:04
Linux僵死進程的產生與避免
男女平等進程中出現的新矛盾和新問題
主站蜘蛛池模板: 成色7777精品在线| 成AV人片一区二区三区久久| 亚洲色无码专线精品观看| 免费看av在线网站网址| 亚洲成人高清无码| 亚洲精品天堂自在久久77| 欧美精品在线视频观看| 伊人中文网| 国产欧美日韩在线一区| 五月天综合网亚洲综合天堂网| 亚洲色精品国产一区二区三区| AV不卡国产在线观看| 成年人国产网站| 久草国产在线观看| 国产十八禁在线观看免费| 国产一级片网址| 国产主播在线观看| 青草视频久久| 欧洲欧美人成免费全部视频| 久久伊伊香蕉综合精品| Aⅴ无码专区在线观看| 亚洲第一黄片大全| 亚洲视频在线青青| 久热精品免费| 性欧美久久| 日韩专区第一页| 伊人久久福利中文字幕| 亚洲一区无码在线| 色精品视频| 日韩色图区| 精品一区二区久久久久网站| 国产制服丝袜无码视频| 日韩欧美中文字幕一本| 国产成人1024精品下载| 久久一本日韩精品中文字幕屁孩| 久久国产精品嫖妓| 色婷婷电影网| 精品久久久无码专区中文字幕| 国产精品综合久久久| 免费观看亚洲人成网站| 波多野结衣视频一区二区| 久久天天躁夜夜躁狠狠| 亚洲一区二区三区在线视频| 久久精品人人做人人爽97| 国产精品亚欧美一区二区| 免费高清a毛片| 女人18毛片久久| 亚洲黄网视频| 亚洲天堂网站在线| 最新国产在线| 99久视频| aaa国产一级毛片| 成人福利在线看| 沈阳少妇高潮在线| 午夜激情福利视频| 色婷婷天天综合在线| 国产网站免费| 超清人妻系列无码专区| 伊人久久福利中文字幕| 久久免费观看视频| 亚洲视频三级| 免费a级毛片18以上观看精品| 91网址在线播放| 在线观看热码亚洲av每日更新| 日韩在线中文| 日本欧美精品| 久久国产精品麻豆系列| aⅴ免费在线观看| 2021国产在线视频| 999国内精品视频免费| 19国产精品麻豆免费观看| 色噜噜狠狠狠综合曰曰曰| 亚洲女同一区二区| 成人无码一区二区三区视频在线观看 | 一区二区三区精品视频在线观看| 热九九精品| 国产成人综合欧美精品久久| 国产在线精品99一区不卡| 亚洲视频在线青青| 免费Aⅴ片在线观看蜜芽Tⅴ| 免费无码又爽又黄又刺激网站| 色老头综合网|