前言:想要寫出一篇引人入勝的文章?我們特意為您整理了石油勘探應(yīng)用軟件資源需求分析范文,希望能給你帶來靈感和參考,敬請閱讀。
摘要:采集石油勘探應(yīng)用軟件模塊運行時的資源消耗信息,包括不同模塊對服務(wù)器資源占用情況的數(shù)據(jù)。根據(jù)需求采集相關(guān)數(shù)據(jù),包括CPU、內(nèi)存、網(wǎng)絡(luò)、臨時盤等。在勘探開發(fā)云平臺運行應(yīng)用軟件資源需求已知模塊的作業(yè),采集資源消耗數(shù)據(jù)。根據(jù)所采集數(shù)據(jù)的模塊資源需求特點,對數(shù)據(jù)進行標注,使用極限梯度提升(extremegradientboosting,XGBoost)算法,建立模型并訓(xùn)練。采集資源需求未知模塊作業(yè)運行時的資源消耗數(shù)據(jù),根據(jù)之前建立的模型確定此模塊的資源需求類型。使用資源調(diào)度算法,以將資源需求互補的虛擬機部署到相同的物理節(jié)點為目標,計算虛擬機部署位置,通過虛擬機遷移實現(xiàn)計算資源優(yōu)化分配。
關(guān)鍵詞:機器學(xué)習;XGBoost算法;石油勘探應(yīng)用軟件;資源需求
0引言
在云計算高速發(fā)展的大背景下,硬件資源高度集中,結(jié)合軟件形成了龐大的應(yīng)用系統(tǒng),在石油勘探行業(yè)這種趨勢更為顯著。硬件資源的分配情況將直接影響應(yīng)用系統(tǒng)的運行效率。通過互聯(lián)網(wǎng)調(diào)查公司發(fā)布的數(shù)據(jù)顯示,在軟件運維過程中,CPU、內(nèi)存、網(wǎng)絡(luò)、臨時盤空間這些因素,對應(yīng)用系統(tǒng)運行效率會產(chǎn)生比較重要的影響,這些資源的不足往往會造成應(yīng)用系統(tǒng)速度變慢,運行效率降低,影響用戶的體驗。因此,通過對應(yīng)用軟件模塊資源應(yīng)用分析研究,開展一定時間的數(shù)據(jù)采集和挖掘,并對已知的資源需求進行標定,通過機器學(xué)習、人工智能手段深入的發(fā)掘資源消耗的規(guī)律性因素,建立一種監(jiān)控指標與應(yīng)用軟件運行資源需求預(yù)測模型,采用神經(jīng)網(wǎng)絡(luò)、機器學(xué)習技術(shù),對資源需求進行預(yù)測,主動進行主機資源運行優(yōu)化,減少資源分配問題對用戶工作效率的影響,能有效提高系統(tǒng)管理工作的信息化水平。隨著互聯(lián)網(wǎng)和大數(shù)據(jù)的發(fā)展,數(shù)據(jù)的豐富度和覆蓋面遠超出了人工可以觀察和總結(jié)的范疇。結(jié)合了統(tǒng)計學(xué)、數(shù)據(jù)庫科學(xué)和計算機科學(xué)的機器學(xué)習已成為人工智能和數(shù)據(jù)科學(xué)發(fā)展的主流方向之一。分類問題作為機器學(xué)習的一部分,成了研究的重點[1]。以深度學(xué)習為代表的機器學(xué)習是當前最接近人類大腦的智能學(xué)習方法和認知過程,充分借鑒了人腦的多分層結(jié)構(gòu)、神經(jīng)元的連接交互、分布式稀疏存儲和表征、信息的逐層分析處理機制,自適應(yīng)、自學(xué)習的強大并行信息處理能力,在語音、圖像識別等方面取得了突破性進展,在諸多應(yīng)用領(lǐng)域取得巨大商業(yè)成功[2]。鄔春明等[3]結(jié)合極限梯度提升算法和實體嵌入網(wǎng)絡(luò),提出了一種基于XGBoost-EE的電力系統(tǒng)暫態(tài)穩(wěn)定評估方法。徐偉等[4]為了降低網(wǎng)絡(luò)入侵檢測系統(tǒng)的虛警率,提出一種混合式網(wǎng)絡(luò)入侵檢測方法,將人工蜂群算法用于特征提取,XGBoost算法用于特征分類和評價。張穎等[5]針對惡意的第三方廠商在電路設(shè)計階段中植入硬件木馬的問題,提出一種基于XGBoost的混合模式門級硬件木馬檢測方法。孫朝云等[6]為了科學(xué)有效地評估高速公路服務(wù)區(qū)交通通行服務(wù)能力和進行基礎(chǔ)設(shè)施優(yōu)化配置,提出一種基于改進粒子群算法和XGBoost融合的高速公路服務(wù)區(qū)交通量預(yù)測模型。趙力等[7]針對采用遙感技術(shù)監(jiān)測氮、磷研究中反演模型精度不夠高、小尺度水體研究受限于數(shù)據(jù)源分辨率的問題,提出了一種結(jié)合高分一號影像和XGBoost模型的水體總氮、總磷濃度反演技術(shù)。陳莊等[8]為了進一步提升水務(wù)企業(yè)工作效率,解決抄表數(shù)據(jù)審核工作量大、保證數(shù)據(jù)準確性等問題,在傳統(tǒng)的XGBoost預(yù)測算法基礎(chǔ)上提出一種基于MIC-XGBoost的混合預(yù)測模型。
1總體架構(gòu)
通過采集模塊對軟件模塊的運行數(shù)據(jù)進行采集,并對這些數(shù)據(jù)進行數(shù)據(jù)標定,基于機器學(xué)習技術(shù),對不同的模塊來進行資源的特征畫像,系統(tǒng)根據(jù)不同類型軟件模塊對資源的需求情況,設(shè)置不同的調(diào)度策略,從而實現(xiàn)主機智能部署調(diào)度、智能控制。系統(tǒng)總體架構(gòu)如圖1所示。
2獲取計算機運行數(shù)據(jù)
在計算機安裝運行數(shù)據(jù)采集插件。進程采集模塊基于Go語言開發(fā),使用了go-cmp、text、fakescraper、go-seq、process-exporter、client_golang、common、procfs、sys、xer-rors、protobuf、check、yaml模塊,采集計算機CPU利用率、內(nèi)存占用、磁盤讀寫、網(wǎng)絡(luò)帶寬等相關(guān)數(shù)據(jù),并將采集的監(jiān)控數(shù)據(jù)按照時間保存到MySQL數(shù)據(jù)庫中。采用多線程輪詢的模式向采集代理程序拉取指標數(shù)據(jù),并將采集的數(shù)據(jù)保存到時序數(shù)據(jù)庫中。
3軟件模塊與進程關(guān)系分析
分析石油勘探專業(yè)軟件運行機制。以O(shè)mega軟件為例,Omega在提交作業(yè)后一般產(chǎn)生單個主進程,主進程在進行作業(yè)調(diào)用模塊時,通過調(diào)用動態(tài)鏈接庫的模式來工作,不再產(chǎn)生新的進程,傳統(tǒng)通過進程來獲取模塊信息的方式已經(jīng)不能滿足需求。經(jīng)研究Omega的運行方式、進行特點和軟件目錄架構(gòu)發(fā)現(xiàn),這些模塊的動態(tài)鏈接庫都保存在Omega的安裝目錄的lib下,通過[lsof]獲取這些模塊鏈接庫的調(diào)用棧,并與當前運行環(huán)境的進程列表進行匹配,就能夠獲取Omega作業(yè)當前所運行的模塊情況。Omega進程采集原理如圖2所示。采集過程包含了多個步驟。讀取配置文件,加載MySQL數(shù)據(jù)庫連接參數(shù),接口參數(shù),定時任務(wù)參數(shù);創(chuàng)建數(shù)據(jù)庫連接對象,讀取module_type(模塊總表),檢驗?zāi)K對應(yīng)指標表是否已創(chuàng)建,如未創(chuàng)建,則根據(jù)module_indicators(模塊樣本參數(shù)模版表),創(chuàng)建對應(yīng)模塊的樣本數(shù)據(jù)表;根據(jù)接收的命令參數(shù),執(zhí)行一次性的數(shù)據(jù)生成過程或定時過程;一次性數(shù)據(jù)的生成過程需要指定一個起始時間,從起始時間開始,每10min的某模塊的采集數(shù)據(jù)作為一個樣本存入對應(yīng)模塊的樣本數(shù)據(jù)表;定時過程是從程序運行時開始,每10min進行一次樣本數(shù)據(jù)的匯總?cè)霂觳僮?;總樣本?shù)據(jù)操作,按照查詢模版的配置查詢監(jiān)控采集服務(wù)器,并將多個指標在10min區(qū)間的數(shù)據(jù)整合成一個樣本數(shù)據(jù),入庫MySQL對應(yīng)模塊的樣本數(shù)據(jù)表。通過對石油勘探生產(chǎn)環(huán)境下的Omega運行目錄和當前運行作業(yè)流程文件進行對比,發(fā)現(xiàn)Omega的模塊以動態(tài)鏈接庫.so的方式來加載和調(diào)用,當作業(yè)流程需要調(diào)用某一個模塊的時候,Omega主進程會將對應(yīng)的模塊鏈接庫動態(tài)的加載到內(nèi)存中。
4機器學(xué)習
4.1樣本數(shù)據(jù)預(yù)處理
采集的集群節(jié)點運行指標數(shù)據(jù),為保證效率,首先保存在時序數(shù)據(jù)庫中,實時數(shù)據(jù)保存180天,訓(xùn)練樣本數(shù)據(jù)長期保存,并通過轉(zhuǎn)儲工具,將處理后的實時數(shù)據(jù)保存到MySQL數(shù)據(jù)庫中作為樣本數(shù)據(jù),再以API的方式來為機器學(xué)習提供訓(xùn)練數(shù)據(jù)集。將時間序列數(shù)據(jù)提取最大值,均值,方差等轉(zhuǎn)換成特征數(shù)據(jù)。并對數(shù)據(jù)做歸一化、缺失值處理,對處理后的數(shù)據(jù)集進行特征選擇,選取與標簽相關(guān)性最好的若干個特征作為模型訓(xùn)練的特征,再進行必要的數(shù)據(jù)分組或者分割。
4.2機器學(xué)習
機器學(xué)習軟件采用Python語言進行開發(fā),使用了xg-boost、numpy、pandas、random、os等模塊,對采集到的數(shù)據(jù)做特征工程,對數(shù)據(jù)進行升維,為多維度特征挖掘提供數(shù)據(jù)基礎(chǔ)。去除空值:data.dropna()提取各列特征數(shù)據(jù)的最大值:data_mk_max=data.groupby(['sample_id'],sort=False,as_index=False).max()提取各列特征數(shù)據(jù)的平均值:data_mk_mean=data.groupby(['sample_id'],sort=False,as_index=False).mean()提取各列特征數(shù)據(jù)的方差:data_mk_var=data.groupby(['sample_id'],sort=False,as_index=False).var()將標注的訓(xùn)練數(shù)據(jù)集作為XGBoost算法的輸入樣本,進行訓(xùn)練,獲得模型,輸出模塊類型。然后利用驗證數(shù)據(jù)集對訓(xùn)練后的模型進行驗證,若滿足精度要求,則獲得訓(xùn)練好的模型,利用訓(xùn)練好的模型,對作業(yè)模塊類型進行預(yù)測,給出預(yù)測的模塊類型。根據(jù)已知軟件模塊的需求,來預(yù)測其它軟件模塊的資源需求類型,按照目前給定的資源需求類型可以分為4類:CPU密集型、內(nèi)存密集型、臨時盤密集型、以上均不是,因此,在指標的選擇上也主要圍繞以上幾類資源類型來進行選擇,通過對采集的監(jiān)控指標進行分析,明確用于模塊資源預(yù)測所需要的指標數(shù)據(jù)包含:內(nèi)存總量、模塊CPU占用率、模塊內(nèi)存占用率、模塊磁盤占用率、當前節(jié)點CPU占用率、當前節(jié)點內(nèi)存占用率、當前節(jié)點磁盤占用率、時間戳,共計8個指標。通過對比決策樹算法、隨機森林、支持向量機、BP神經(jīng)網(wǎng)絡(luò)、XGBoost等算法,根據(jù)實際采集數(shù)據(jù)情況,采用XGBoost算法來進行預(yù)測。極限梯度提升樹算法是Boosting集成算法的一種,通常以決策樹為基學(xué)習器,新生成的樹不斷學(xué)習當前樹預(yù)測值與真實值之間的殘差,最終將多棵樹的學(xué)習結(jié)果累加作為預(yù)測結(jié)果。由于XGBoost算法是基于樹模型的,當決策樹的數(shù)量過多時,則會出現(xiàn)過擬合。除了調(diào)整決策樹個數(shù)、迭代速率和樹模型最大深度等參數(shù)控制復(fù)雜度外,XGBoost算法在求解最優(yōu)樹結(jié)構(gòu)過程中引入正則化策略來控制模型整體過擬合程度,XGBoost算法在最小化目標函數(shù)過程中不斷調(diào)整生成新的樹結(jié)構(gòu),最終目標函數(shù)與樹結(jié)構(gòu)(包括每棵樹的深度、葉子節(jié)點數(shù)量、葉子節(jié)點位置等)緊密相關(guān),因此,利用該算法本身不斷減小偏差、限制方差、生成最優(yōu)樹結(jié)構(gòu)的特性可創(chuàng)造大量新特征集[9]。XGBoost算法實現(xiàn)的關(guān)鍵參數(shù)樣例:n_estimators=200#弱決策樹數(shù)量max_depth=5#樹的最大深度learning_rate=0.1#學(xué)習速率gamma=0#最小損失函數(shù)下降值subsample=0.8#樣本隨機采樣比train_percentage=0.8#樣本分割比例,訓(xùn)練樣本占比self.min_child_weight=6#最小樣本權(quán)重的和reg_lambda=1#L2正則化項參數(shù)reg_alpha=0#權(quán)重L1正則化項seed=0#復(fù)現(xiàn)隨機數(shù)據(jù)結(jié)果col_sample_by_tree=0.8#特征隨機采樣比將預(yù)處理完成的數(shù)據(jù)導(dǎo)入模型,進行模型訓(xùn)練,通過對模型準確度反饋,以及對參數(shù)重要性指標的分析,不斷調(diào)節(jié)參數(shù),找到最合適的參數(shù)。模型訓(xùn)練流程如圖3所示。按照訓(xùn)練模型數(shù)據(jù)預(yù)處理流程,將實時數(shù)據(jù)做處理,導(dǎo)入已有模型,根據(jù)模塊的實時數(shù)據(jù)進行模塊分類。模型預(yù)測流程如圖4所示。通過業(yè)務(wù)人員對分類結(jié)果進行確認,填充樣本庫,用新的樣本庫重新訓(xùn)練模型,不斷優(yōu)化模型。模型優(yōu)化流程如圖5所示。
5云主機調(diào)度
通過模塊資源需求類型與主機總體資源情況相結(jié)合,建立云主機調(diào)度策略,將不存在資源競爭的虛擬機調(diào)度到同一臺物理機服務(wù)器上,在減少資源競爭的同時,盡可能地發(fā)揮主機的最大利用率。周平等[10]提出基于馬爾科夫預(yù)測模型的云資源調(diào)度算法,實現(xiàn)節(jié)點負載判斷、待遷移任務(wù)和節(jié)點選擇、遷移路由的決策,以解決云服務(wù)節(jié)點失效情況下的任務(wù)調(diào)度和負載均衡問題,實現(xiàn)快速的云服務(wù)故障恢復(fù),提高云服務(wù)的可靠性。宋維佳等[11]提出作為云計算的重要支撐技術(shù),虛擬化提供了熱遷移、負載轉(zhuǎn)移等技術(shù)豐富了云計算資源調(diào)度手段。利用這些技術(shù),資源調(diào)度要解決如何將計算資源合理分配給服務(wù),一方面保證在負載動態(tài)變化的情況下服務(wù)質(zhì)量不受影響,另一方面減少數(shù)據(jù)中心的能源消耗。調(diào)度原理如圖6所示?;谀K類別和占用資源的情況,根據(jù)當前服務(wù)器正在運行的模塊分類,將要運行的模塊進行分配調(diào)度,以保證發(fā)揮服務(wù)器的最大能力,即在有限的計算能力下運行更多的模塊,這是典型的最優(yōu)化問題。對比爬山法、遺傳算法、動態(tài)規(guī)劃等算法,動態(tài)規(guī)劃算法(dynamicprogramming,DP)是由美國數(shù)學(xué)家R.E.Bellma求解多決策問題時提出的一種優(yōu)化算法,特點在于搜索效率髙,結(jié)果穩(wěn)定可靠,從而受到廣泛的關(guān)注[12]。針對要解決問題的特點,采用動態(tài)規(guī)劃算法來進行主機調(diào)度模型的建立。利用預(yù)測好的模塊類型,分析作業(yè)的資源占用情況,以目前各個節(jié)點的作業(yè)類型為基礎(chǔ),計算新發(fā)布的作業(yè)所在的節(jié)點的資源占用是否超過物理機上限,若存在物理機超上限,則運用動態(tài)規(guī)劃算法,根據(jù)當前物理機、虛擬機節(jié)點的CPU計算核心數(shù)量、CPU負載、內(nèi)存、緩存、IO時延等指標數(shù)據(jù),對虛擬機進行遷移,使得遷移后的節(jié)點資源占用都在物理機的接收范圍內(nèi),對云主機資源合理分配。6軟件主要功能實現(xiàn)了應(yīng)用軟件模塊資源占用監(jiān)控,針對已知資源需求的應(yīng)用模塊資源占用建模,使用機器學(xué)習算法訓(xùn)練模型,通過機器學(xué)習確定勘探開發(fā)應(yīng)用其它功能模塊的資源需求。通過虛擬機運行作業(yè)的資源占用,將資源互補的虛擬機遷移到同一物理機。主要功能包括:模塊資源監(jiān)控、訓(xùn)練集管理、模型訓(xùn)練、方案管理、遷移查詢、作業(yè)查詢等。通過采集專業(yè)軟件如Omega的作業(yè)模塊數(shù)據(jù),并保存到數(shù)據(jù)庫中,通過多維度的查詢條件,反映一段時間內(nèi)模塊占用的CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)的情況,方便用戶對一段時間主機運行軟件模塊資源占用情況進行掌握。模塊資源監(jiān)控:主菜單中“資源調(diào)度”→“模塊資源監(jiān)控”;點選“函數(shù)”“時間”“指標”“模塊”等查詢條件,點擊查詢。查看各個維度采集數(shù)據(jù)曲線。訓(xùn)練集管理:主菜單中“資源調(diào)度”→“訓(xùn)練集管理”;點選“新增”,進入節(jié)點運行監(jiān)控,點擊新增訓(xùn)練集,填寫信息,點擊保存,在訓(xùn)練集列表中可查看到新增的模塊信息。點擊訓(xùn)練模型后的修改,填寫信息,點擊保存,在訓(xùn)練集列表中可查看到已修改的模塊信息。在訓(xùn)練集管理中配置好訓(xùn)練集之后,即可進行機器學(xué)習的模型訓(xùn)練,預(yù)測需要預(yù)測的模塊的信息,且可以配置訓(xùn)練算法的參數(shù)值,以方便更好地進行模型訓(xùn)練。包含模型訓(xùn)練、模型預(yù)測、虛擬機實時數(shù)據(jù)和調(diào)度方案四個接口。模型訓(xùn)練:主菜單中“資源調(diào)度”→“模型訓(xùn)練”;點選“模型訓(xùn)練”,選擇“繼續(xù)執(zhí)行”或“查看上次結(jié)果”,查看模型訓(xùn)練的執(zhí)行結(jié)果。同理,點選“模型預(yù)測”“獲取虛擬機實時數(shù)據(jù)”“模型調(diào)度”,查看各個流程的執(zhí)行結(jié)果或上次執(zhí)行結(jié)果。方案管理:主菜單中“資源調(diào)度”→“方案管理”;點選“起始時間”,點擊“查詢”,查看虛擬機調(diào)度方案的執(zhí)行結(jié)果,點擊“查看”按鈕。進入詳情頁面,查看方案具體信息。點擊“方案運行”按鈕,運行該方案的虛擬機調(diào)度。模型調(diào)度:查看虛擬機調(diào)度方案的執(zhí)行結(jié)果。進入詳情頁面,查看方案具體信息。點擊“方案運行”按鈕,調(diào)用虛擬機熱部署命令,運行該方案的虛擬機調(diào)度。遷移查詢:主菜單中“資源調(diào)度”→“遷移查詢”;設(shè)置時間段,物理機或虛擬機名稱,點查詢。可以查看一段時間內(nèi)物理機上曾經(jīng)有過哪些虛擬機??梢圆榭匆欢螘r間內(nèi)某個虛擬機在哪些物理機上運行過。點擊查看詳情,查詢虛擬機遷移的歷史記錄。包含時間、虛擬機、物理機的查詢,查詢結(jié)果為這段時間內(nèi)虛擬機由源物理機遷移到目標物理機的開始、結(jié)束時間。作業(yè)查詢:主菜單中“資源調(diào)度”→“作業(yè)查詢”;設(shè)置時間段,點查詢??刹樵兲摂M機上運行過的作業(yè)。點擊查看詳情,可查詢相關(guān)作業(yè)運行過程中虛擬機遷移歷史。
作者:董濤 段淼 車曉萍 孫友凱 單位:勝利油田物探研究院