李春生,周志鵬,張可佳,富 宇,劉 濤
(東北石油大學 計算機與信息技術(shù)學院,黑龍江 大慶 163319)
目前油田的相關(guān)技術(shù)人員在利用地震數(shù)據(jù)處理軟件時所采用的有人工干預(yù)的靜態(tài)調(diào)度策略不具有動態(tài)性,沒有考慮到軟件運行的不同時期對節(jié)點的各種資源占用具有偏向性,因此可能會造成某些時刻部分節(jié)點的閑置或者部分節(jié)點負載等問題。而這些大型軟件在運行過程中會調(diào)用各個功能模塊,并且每次調(diào)用都會向許可服務(wù)器發(fā)出相應(yīng)的許可請求,并等待服務(wù)器響應(yīng)請求才會開始調(diào)用該模塊。因此在軟件執(zhí)行過程中會產(chǎn)生大量的許可日志數(shù)據(jù)。通過利用數(shù)據(jù)挖掘相關(guān)技術(shù)對許可日志數(shù)據(jù)進行處理就可以在一定程度上挖掘出一定業(yè)務(wù)數(shù)據(jù)量下軟件執(zhí)行過程中模塊的迭代規(guī)律,結(jié)合對節(jié)點上的資源監(jiān)控情況就可以預(yù)測出軟件執(zhí)行過程對節(jié)點資源的占用變化情況,為節(jié)點的動態(tài)調(diào)度提供依據(jù)[1-3]。
該文使用Zabbix技術(shù)對許可日志文件以及節(jié)點的機器KPI數(shù)據(jù)(內(nèi)存、CPU利用率等)進行監(jiān)控,再結(jié)合數(shù)據(jù)挖掘的兩種主要應(yīng)用技術(shù):關(guān)聯(lián)規(guī)則挖掘和時間序列分析來對地震數(shù)據(jù)處理軟件執(zhí)行過程中內(nèi)部模塊的迭代規(guī)律進行挖掘[4-6]。
Zabbix是一個基于web界面的企業(yè)級開源監(jiān)控解決方案,不僅支持對數(shù)萬臺服務(wù)器、虛擬機和網(wǎng)絡(luò)設(shè)備的實時監(jiān)控,還支持對百萬級監(jiān)控指標的采集。Zabbix主要由Zabbix Server和Zabbix Agent兩個部分組成。它的主要工作原理是Zabbix Agent作為信息采集器部署在需要被采集的主機上,并將采集到的信息發(fā)送給Zabbix Server端,Zabbix Server端再將數(shù)據(jù)存儲在本地的MySQL數(shù)據(jù)庫中。此外Zabbix還提供十分簡潔的web端進行監(jiān)控信息的管理[7]。
關(guān)聯(lián)規(guī)則挖掘是指挖掘出一個事物與其他事物之間的相互關(guān)聯(lián)性和依存性。比如說,有趣的“尿布與啤酒”的故事,以美國沃爾瑪超市為背景做的顧客購物車數(shù)據(jù)關(guān)聯(lián)分析。分析發(fā)現(xiàn)啤酒是跟尿布一起購買最多的商品。這種關(guān)聯(lián)分析揭示了背后美國人的一種生活習慣,在美國年輕的父親經(jīng)常需要去超市購買嬰兒尿布,與此同時他們會順手買些自己喜歡的啤酒。根據(jù)這種有趣的關(guān)聯(lián)規(guī)則,沃爾瑪超市將尿布和啤酒放到相鄰的位置,大大促進了啤酒的銷量。將關(guān)聯(lián)規(guī)則挖掘應(yīng)用到油田地震數(shù)據(jù)處理軟件的模塊迭代規(guī)律挖掘中,可以分析出一定業(yè)務(wù)量下軟件執(zhí)行時各模塊之間的迭代規(guī)律變化。
時間序列分析是根據(jù)已有的歷史數(shù)據(jù)對未來可能出現(xiàn)的情況進行預(yù)測。比如說,在今年7月份購買華為Mate40的客戶很可能在未來半個月內(nèi)訂購Mate40的手機殼。將時間序列分析應(yīng)用到油田地震數(shù)據(jù)處理軟件的模塊迭代規(guī)律挖掘中,可以分析出一定業(yè)務(wù)量下模塊的迭代隨時間的變化規(guī)律。
結(jié)合Zabbix技術(shù)、時間序列分析和關(guān)聯(lián)規(guī)則挖掘構(gòu)建油田數(shù)據(jù)處理軟件的模塊迭代規(guī)律挖掘模型。模型分為數(shù)據(jù)層、控制層和應(yīng)用層三個層次,具體如圖1所示。
圖1 實驗?zāi)P?/p>
利用Zabbix技術(shù)對地震數(shù)據(jù)處理軟件執(zhí)行過程中產(chǎn)生的許可日志數(shù)據(jù)以及運行軟件的節(jié)點的機器KPI數(shù)據(jù)進行監(jiān)控和采集,將采集到的源數(shù)據(jù)存到數(shù)據(jù)庫中,為控制層做數(shù)據(jù)分析和規(guī)律挖掘提供業(yè)務(wù)數(shù)據(jù)。從數(shù)據(jù)層得到源數(shù)據(jù)后對其做數(shù)據(jù)預(yù)處理,過濾掉無實際意義的數(shù)據(jù),再結(jié)合關(guān)聯(lián)規(guī)則挖掘和時間序列分析對油田地震數(shù)據(jù)處理軟件執(zhí)行過程中內(nèi)部的模塊迭代規(guī)律進行挖掘,旨在挖掘出各模塊隨時間變化的迭代規(guī)律,預(yù)測軟件執(zhí)行的生命周期及各時期所需資源情況,為應(yīng)用層實現(xiàn)節(jié)點資源的動態(tài)調(diào)度做依據(jù)[8-9]。
實驗以WGC軟件處理10 G的地震數(shù)據(jù)為例,利用Zabbix對其許可日志以及機器KPI數(shù)據(jù)進行監(jiān)控和采集。
圖2是對WGC軟件的許可日志文件wg-lmgrd_server的采集配置圖。采集方式為Zabbix Agent主動采集,利用Zabbix的log函數(shù):log[file,
圖2 Zabbix采集WGC許可日志配置圖
圖3是運行WGC軟件的某個節(jié)點的資源監(jiān)控配置圖。其中包括Available memory(可用內(nèi)存)、Total memory(總內(nèi)存)、Free swap space in %(剩余交換空間)以及Processor load 5 min average per core(五分鐘平均CPU負載)。
圖3 節(jié)點資源監(jiān)控配置圖
圖4是運行WGC地震數(shù)據(jù)處理軟件的某個節(jié)點的可用內(nèi)存的監(jiān)控數(shù)據(jù)折線圖。數(shù)據(jù)表明,在0:00-8:00節(jié)點的可用內(nèi)存為182.9 G,8:00-18:10節(jié)點的可用內(nèi)存逐漸降低到182.4 G,而18:00-20:00間,可用內(nèi)存迅速攀升到183.2 G。
圖4 節(jié)點內(nèi)存數(shù)據(jù)監(jiān)控折線圖
由于WGC的許可日志數(shù)據(jù)量龐大,且包含各模塊與許可服務(wù)器之間的許可請求測試數(shù)據(jù)等無實際意義的信息,因此需要對許可日志數(shù)據(jù)進行預(yù)處理[10]。
通過grep命令對包含UNSUPPORT或DENIED等字符串的無效信息進行過濾,并將數(shù)據(jù)導(dǎo)入到MySQL數(shù)據(jù)庫中,再利用sql語句根據(jù)對許可請求(out)及許可響應(yīng)(in)之間時間差是否大于1秒來過濾掉許可請求的測試數(shù)據(jù)。最終獲取到如表1所示的結(jié)構(gòu)化許可日志數(shù)據(jù)。
表1 結(jié)構(gòu)化許可日志數(shù)據(jù)片段
數(shù)據(jù)表示的具體含義為,用戶qiancq在wgcn042節(jié)點上運行WGC軟件,該軟件于20:17:50向許可服務(wù)器發(fā)送請求,申請調(diào)用”D3”模塊,于20:18:34向服務(wù)器歸還”D3”模塊的使用許可。
對數(shù)據(jù)預(yù)處理得到的結(jié)構(gòu)化許可日志數(shù)據(jù)進行時間序列分析以及模塊間的關(guān)聯(lián)規(guī)則分析[11]。數(shù)據(jù)分析流程如圖5所示。
圖5 數(shù)據(jù)分析流程
根據(jù)數(shù)據(jù)預(yù)處理得到的用戶qiancq在各個節(jié)點上運行WGC軟件執(zhí)行地震數(shù)據(jù)處理任務(wù)所產(chǎn)生的結(jié)構(gòu)化許可日志數(shù)據(jù),首先找出軟件執(zhí)行中過程中節(jié)點的使用順序[12]。具體如[wgcn096, wgcn064,wgcn066, wgcn069, wgcn097,…,wgcn005, wgcn121, wgcn118]共92個節(jié)點。再挖掘出各節(jié)點中具體的模塊迭代規(guī)律。這里以wgcn096節(jié)點為例,利用sql語句得出該節(jié)點執(zhí)行任務(wù)時各模塊的迭代規(guī)律,如圖6所示。
從圖6中可以發(fā)現(xiàn),wgcn096節(jié)點在執(zhí)行任務(wù)時主要是“cp”、“FQC”、“FOU”、“D3”四個模塊在迭代,而且迭代存在一定的規(guī)律,比如都是從“cp”開始“D3”結(jié)束,中間“FQC”和“FOU”模塊進行迭代,且存在一些迭代方式重復(fù)出現(xiàn)的情況[13-14]。將各種迭代方式用ASCII碼進行表示,就可以將wgcn096節(jié)點執(zhí)行任務(wù)時的模塊迭代規(guī)律表示成:[A, B, A,…, A, G]。將規(guī)則保存到規(guī)律庫中,再挖掘下一個節(jié)點執(zhí)行任務(wù)時的模塊迭代規(guī)律,重復(fù)該操作就可以挖掘出當前實驗條件下WGC軟件執(zhí)行過程中模塊的迭代規(guī)律。具體規(guī)律如圖7所示。
圖6 節(jié)點wgcn096中模塊迭代規(guī)律
可以清楚地看到,WGC軟件執(zhí)行時模塊的迭代規(guī)律主要分為三類,第一類是“A”、“B”等迭代方式出現(xiàn)的頻率較高的規(guī)律,且模塊迭代次數(shù)適中。第二類是從節(jié)點wgcn117到節(jié)點wgcn107,可以看出在這種類型的迭代規(guī)律中模塊的迭代次數(shù)較第一類相比明顯增多,且都以“m”或“l(fā)”兩種迭代方式開始,中間以“A”、“B”兩類迭代方式交互,最后以“F”、“O”等迭代方式結(jié)尾。第三類是從節(jié)點wgcn043到節(jié)點wgcn118??梢钥闯鲈谶@種類型的模塊迭代規(guī)律中迭代頻率明顯減少,到最終只有“U”和“,”兩種迭代方式在進行[15]。
將這三類模塊迭代規(guī)律所對應(yīng)的節(jié)點劃分為Ⅰ、Ⅱ、Ⅲ三類,再利用Zabbix監(jiān)控這三類節(jié)點的資源消耗情況。根據(jù)統(tǒng)計得出各類節(jié)點的內(nèi)存資源消耗折線圖,如圖8所示。
圖8 內(nèi)存消耗折線圖
可以看出Ⅰ類節(jié)點所占內(nèi)存比較均衡,基本保持在50%左右。Ⅱ類節(jié)點所占內(nèi)存較高,基本保持在70%左右,但這類節(jié)點所占內(nèi)存的峰值時間較短。而第Ⅲ類節(jié)點內(nèi)存消耗較低,僅占到總內(nèi)存的20%左右。
根據(jù)以上對用戶qiancq在92個節(jié)點上運用WGC軟件處理10 G地震數(shù)據(jù)的數(shù)據(jù)分析結(jié)果來看,在10 G的作業(yè)量下,WGC軟件執(zhí)行時,其中的模塊迭代方式存在一定規(guī)律,且將模塊迭代規(guī)律對應(yīng)到節(jié)點上主要分為三類。第一類是以“A”、“B”等模塊迭代方式居多的類型,結(jié)合資源的監(jiān)控數(shù)據(jù)來看,這種類型所占節(jié)點內(nèi)存資源適中,且內(nèi)存占用峰值持續(xù)時間較長。第二類是以“l(fā)”、“m”迭代方式開始,以“A”和“B”迭代方式多次迭代后以“O”、“F”等迭代方式結(jié)尾的類型,結(jié)合資源的監(jiān)控數(shù)據(jù)來看,這種類型對內(nèi)存的需求較高。第三類是以“U”和“,”這兩種迭代方式低頻交替的類型,結(jié)合資源監(jiān)控數(shù)據(jù)來看,這種類型對內(nèi)存的需求較低。
結(jié)合以上分析,可以一定程度上給執(zhí)行油田地震數(shù)據(jù)處理任務(wù)的節(jié)點的動態(tài)調(diào)度做理論依據(jù)。比如在WGC軟件執(zhí)行中期可以根據(jù)軟件執(zhí)行時間以及監(jiān)控的資源推測出哪些節(jié)點上的模迭代規(guī)律屬于哪一種類型,判斷它接下來會占用多少內(nèi)存,任務(wù)將在多久后結(jié)束,是否可以給該節(jié)點分配其他的任務(wù)等。
從油田的地震數(shù)據(jù)處理軟件執(zhí)行任務(wù)時節(jié)點資源的固定劃分這一實際問題出發(fā),提出了通過監(jiān)控軟件執(zhí)行時生成的許可日志和軟件執(zhí)行過程中所消耗的資源情況來探究一定業(yè)務(wù)量下軟件執(zhí)行過程中其內(nèi)部的模塊迭代規(guī)律和資源占用情況,進而為節(jié)點資源實現(xiàn)動態(tài)調(diào)度提供依據(jù)。以WGC軟件為實驗對象驗證了這一方案的可行性。
但是該文只是粗淺地將模塊的迭代規(guī)律分成了三種類型,沒有對規(guī)律進行更深層次的探討。而且以WGC軟件為背景做的實驗只是從內(nèi)存資源的角度進行分析,若結(jié)合CPU利用率、磁盤剩余空間等節(jié)點資源等作為動態(tài)調(diào)度的依據(jù)會使調(diào)度更加精準。此外,挖掘出的一定業(yè)務(wù)量下的模塊迭代規(guī)律和實際工作中無法確定的作業(yè)量下的實際模塊迭代規(guī)律的相關(guān)度是比較重要的一點,有待后續(xù)做更多的實驗進行探究。