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