陳濤 梁妍 曹士炳 張衛華


摘要:隨著石油勘探地震資料處理、地質綜合解釋新技術的發展,帶來了更大的數據量、更復雜的數學運算等問題,必須借助高性能計算機集群方可解決,而集群的利用率及耗電等使用成本對項目的經濟性具有重大影響。通過探索,實現了基于開源軟件zabbix對集群CPU利用率的有效監控,可充分利用集群資源,使高性能計算機集群系統運行在最佳狀態,提高了作業運算效率并節約成本。
關鍵詞:集群監控;高性能計算集群;CPU利用率;Zabbix
1、引言
在石油地震勘探和開發的過程中,面對勘探目標向復雜地質構造、地層巖性等領域轉移,東方物探創新采用了“寬方位、寬頻帶、高密度”即“兩寬一高”三維勘探技術,地震數據的采集量變得越來越大。在與某國家合作的勘探項目中,每天數據量達到2T左右,項目整體數據量達到PB級別,這就需要大規模的高性能計算機(HPC)集群對采集到的數據進行并行處理[1]。
HPC集群,是由高性能計算機節點與存儲通過高性能交換機連接,具有較強的運算速度和信息處理能力。通過并行算法和開發相關軟件,解決大規模科學問題的計算和海量數據的處理。在石油勘探領域,用于地震勘探資料處理解釋的高性能計算集群稱之為處理解釋集群。
大數據量的作業要求充分利用高性能計算資源,使處理解釋集群運行在最佳狀態。CPU利用率,正是衡量高性能計算集群運行效率的重要指標。它指的是HPC節點在某一時間點CPU繁忙程度,對于處理解釋集群來說,CPU的利用率即是處理解釋作業效率的表現,并且在機房中的處理解釋集群,其耗電量是成本的很大一部分。因此,有效監控CPU的利用率,在集群中對資源狀態的提前預測,對于提高作業運算效率與節約成本是很重要的手段,能夠給運維人員提供重要輔助作用[2]。
2、現有集群監控方法
在linux系統上,可以使用TOP命令,查看CPU的利用率,或者使用uptime命令,查看系統負載情況。在現在的處理解釋集群中,對集群整體的監控,是通過某處理軟件中的監控來實現的,如下圖:
如圖所示,在該監控界面,可以顯示出CPU利用率、內存使用率、swap空間使用率、磁盤讀寫速度、網絡使用情況等。
但是該監控有一定的局限性。首先,該監控僅能顯示每一個計算節點的CPU利用率,不能監控統計集群整體的CPU使用狀況。更重要的是,其不能記錄歷史信息,例如一周內、一個月內的集群整體CPU使用狀況。若能夠得到CPU整體利用率的歷史記錄,則集群管理人員可以根據當時的存儲使用情況、網絡流量狀態與CPU利用率對當時的處理解釋作業進行數據分析,通過多方面的數據對比,改變作業類型參數等,提高作業運行速度,改善作業成果質量。
3、使用第三方軟件對集群進行監控
為了實現監控集群整體CPU利用率,我們進行了前期調研工作,有三種方式可以達到目的:
1)從頭進行監控系統的研發
2)在現有處理軟件監控界面的基礎上,提取接口并二次開發該監控
3)使用第三方開源軟件
第一種方法需要研究經費與時間,監控任務迫在眉睫,不予考慮。第二種方法需要聯系相關處理軟件公司對其監控模塊進行二次開發,成本太高。經過調研后,決定使用第三方開源軟件(zabbix)進行集群部署并根據處理解釋集群進行自定義配置、優化。
4、開源軟件在處理解釋集群的部署及優化
4.1 監控服務器的部署
為了部署監控服務器,我們把機房的一臺設備安裝RHEL6.10操作系統并使用yum安裝zabbix服務器端。
在進行初步的安裝配置之后,需要對計算集群進行客戶端的安裝。當前數據中心一個集群計算節點數在128-256個,總共有20-30個集群,約有5000個計算節點。在安裝的過程中,發現隨著監控的計算節點越多,服務器端越慢,經過調查分析,這與監控服務器的配置、被監控計算節點監控項配置、zabbix相關配置參數、數據庫配置有很大的關系。
4.2 監控服務器的硬件優化
監控服務器作為監控的數據庫存儲服務器,其數據庫所在硬盤的讀寫速度、內存大小、CPU運算速度等,配置越高越好。
在此次對服務器優化時,為了保證數據庫的安全與兼顧數據庫讀寫速度,使用了2塊盤做raid1的系統盤,4塊盤做raid5的數據庫盤。內存由原來的64GB擴大到了256GB。
4.3 Zabbix服務器端參數的配置優化
在zabbix_server.conf中,我們可以配置服務器的各項參數,其中比較重要的是以下幾項:
1)StartPollers 此項參數為server的進程數,根據服務器配置,相應調整此參數的值。
2)StartDiscoverers 此項參數為自動發現主機進程數,提高此參數的值,可以更快的批量添加計算節點。
3)StartPingers 此項參數為fping檢測進程數,比較耗費CPU和數據連接數,過小容易檢測不到在線主機,過大容易對服務器資源造成浪費。
4)StartDBSyncers 此項參數為數據庫連接進程數,若太小無法正常寫入數據庫,太大會增加數據庫負載壓力。
5)CacheSize 此項參數為緩存大小,根據現有內存大小進行相應變化。
6)TrendCacheSize 此項參數為趨勢數據緩存,根據現有內存大小進行相應變化。
4.4 計算節點的配置優化
在默認的模板中,一個計算節點需要監控100+監控項,其中大部分為跟業務無關的監控項,可以去除,以減輕服務器端負載壓力。保留必要的CPU、內存、網絡狀態的監控,其余的監控項(例:每秒系統中斷數、最大文件打開數等)可以不去監控。
為了緩解服務器壓力,在zabbix組成架構下有一種方式為主動模式。客戶端在主動模式下,可在間隔時間內傳送數據至服務器,不需要服務器每次過來取數據,從而大大降低獲取數據對服務器造成的壓力[3]。所以我們選擇所有客戶端采用主動模式發送數據至服務器。
在監控計算節點個數超過2000時,可以增加代理服務器減輕主服務器壓力,通過代理服務器可以輕松增加被監控計算節點的個數。
4.5 數據庫的優化
服務器中最重要的組件為數據庫,數據庫優化是監控正常且高效運行的有力保證。
在默認安裝的服務器中,使用mysql數據庫,并且使用HouseKeeper作為歷史數據保存表[4]。此表在數據庫中會越來越大,默認每隔一段時間,清理最早的數據,但是這樣每次清理會增大數據庫的負載,在清理過程中,其他查詢、插入功能會造成卡頓。為了讓數據庫更高效的運行,我們需要停用HouseKeeper功能,并把數據庫的表分區進行了優化。
同時需要修改mysql數據庫默認配置,優化數據庫參數,需要修改/etc/my.conf文件,重要參數如下:
innodb_file_per_table=1 此項參數為innodb可以把每個表數據單獨保存,方便管理也提高了性能。
innodb_log_file_size 此項參數為innodb邏輯日志文件大小,適當增加此參數大小,可以防止如刪除歷史數據等操作不成功、日志回滾等問題。
innodb_buffer_pool_size 此項參數為innodb緩沖池的大小,如果是單獨的數據庫服務器,可以配置到總內存的80%,與軟件在同一服務器中,配置到40%-60%比較合適。
經過不斷地優化配置,找到了適合處理解釋集群的監控配置,為以后更大規模的集群監控奠定了基礎。
5、針對處理解釋集群CPU整體利用率,做自定義監控
部署zabbix服務器后,經過配置即可進行集群計算節點的狀態監控,包括CPU、內存、硬盤、網絡等。每個計算節點的CPU都可以正常采集,但若想要監控集群整體CPU的利用率,則需要進行相關的自定義監控項配置:
1)添加所有集群主機,并鏈接默認Linux模板。
2)在模板中,新建監控項:CPU-time-user-nice,Type:Calculated,Key:cpu.compute,Formula:(100-last("system.cpu.util[,idle]")) 。
3)建立主機組,把集群中所有節點加入到主機組中。
4)新建主機,不鏈接任何模板。
5)在新主機中添加監控項:CPU-time,Type:Zabbix aggregate,Key:grpavg["xxx","Cputime.compute",last,0]
其中第二步,是統計CPU利用率中user與nice占用之和。在各種處理解釋軟件中,由于軟件的不同,導致CPU在部分軟件運行時,nice值偏高。為了正確顯示CPU利用率,則直接使用100-空閑CPU利用率。
第五步中,利用聚合檢測功能,把本組集群的所有節點CPU利用率做平均處理,得到集群整理體用率。
具體監控結果實例如下圖:
從上圖可以看出,在一個月內,集群整體CPU利用率平均值為64.4%,峰值為97.63%。相關運維人員,可以根據這一個月的CPU利用率去對比近一個月的業務情況,做出合理的作業時間安排,以提高整體集群的利用率。
結束語
Zabbix作為企業級的圖形化分布式監控解決方案,具備監控數據采集、存儲、告警規則配置以及圖形化展示界面的功能。本文通過對zabbix的工作機制進行研究,結合高性能計算機的配置,從功能到部署,實現了對處理解釋集群運行狀態的實時監控。根據個性化的需求進行開發完善,收集匯總需要的監控信息,對集群整體CPU利用率的監控提供了行之有效的方法,為系統性能優化提供有效幫助,可供參考和借鑒。
參考文獻
[1]周光耀,田繼東.地震資料處理并行模型研究[J].內蒙古石油化工,2011,37(11):3-4.
[2]盛東浦. 集群監控平臺的設計與實現[D].鄭州大學,2019.
[3]陳若珠,宋承云.基于分布式網絡的監控系統[J].計算機系統應用,2013,22(07):49-52.
[4]馬麗娜. 基于Zabbix的集群監控預測平臺的設計與實現[D].西安電子科技大學,2018.