李樹 于炯 國冰磊 蒲勇霖 楊德先 劉粟
摘 要:面對大數(shù)據(jù)帶來的能耗及環(huán)境方面的嚴峻問題,構(gòu)建節(jié)能的綠色數(shù)據(jù)庫系統(tǒng)已成為關(guān)鍵需求和重要挑戰(zhàn)。針對現(xiàn)有數(shù)據(jù)庫系統(tǒng)主要以性能優(yōu)化為目標,缺少對能耗的感知及優(yōu)化的問題,提出基于數(shù)據(jù)庫負載的能耗感知模型,并將模型應用于基于固態(tài)硬盤(SSD)的數(shù)據(jù)庫系統(tǒng)中。首先,將數(shù)據(jù)庫負載執(zhí)行過程中對主要系統(tǒng)資源(CPU、固態(tài)硬盤)的消耗解析為時間開銷和功耗開銷,并基于SSD數(shù)據(jù)庫負載的基本I/O類型構(gòu)建時間開銷模型和功耗開銷模型,實現(xiàn)為數(shù)據(jù)庫構(gòu)建資源開銷單位統(tǒng)一的能耗感知模型;然后,利用多元線性回歸實現(xiàn)對模型的求解,并分別在獨占環(huán)境和競爭環(huán)境下,驗證模型對不同I/O類型的數(shù)據(jù)庫負載能耗估算的準確性;最后,分析實驗結(jié)果,并討論了影響模型準確性的因素。經(jīng)實驗驗證模型準確度較高,在DBMS獨占系統(tǒng)資源情況下的平均誤差為5.15%,絕對誤差不超過9.8%;競爭環(huán)境下的準確率相對下降,但平均誤差也低于12.21%,可有效構(gòu)建能耗感知的綠色數(shù)據(jù)庫系統(tǒng)。
關(guān)鍵詞:能耗感知模型;固態(tài)硬盤;綠色計算
中圖分類號: TP315
文獻標志碼:A
Abstract: For energy consumption and severe environmental problems brought by big data, building an energy-efficient green database system has become a key requirement and an important challenge. To solve the problem that traditional database systems mainly focus on performance, and are lack of energy consumption perception and optimization, an energy consumption perception model based on database workload was proposed and applied to the database system based on Solid-State Drive (SSD). Firstly, the consumption of major system resources (CPU, SSD) during database workload execution was quantified as time overhead and power consumption overhead. Based on basic I/O type of SSD database workload, a time cost model and a power consumption overhead model were built, and an energy consumption perception model with uniform resource unit was implemented. Then, multi-variable linear regression mathematical tools were used to solve the model, and in the exclusive environment and competitive environment, the energy estimation accuracy of the model for different I/O types of database workload was verified. Finally, the experimental results were analyzed and the factors that affect the model accuracy were discussed. The experimental results show that the model accuracy is relatively high. Under ideal conditions that DBMS monopolized system resources, the average error is 5.15% and the absolute error is no more than 9.8%. Although the accuracy in competitive environment is reduced, the average error is less than 12.21%.The model can effectively build an energy-aware green database system.
Key words: energy consumption perception model; Solid-State Drive (SSD); green computing
0 引言
數(shù)據(jù)中心作為信息存儲的重要載體,其數(shù)量和建設規(guī)模呈爆炸性增長[1],而由此產(chǎn)生的巨量能源消耗所帶來的能耗及環(huán)境問題日益嚴峻。據(jù)報道,美國2011年的電網(wǎng)總量中,僅數(shù)據(jù)中心產(chǎn)生的能耗就達到了2%[2],同年,我國數(shù)據(jù)中心的總耗電量為700億千瓦時(kWh),占總耗電量的5%[3]。此外,美國紐約時報[4]也指出全球數(shù)據(jù)中心一年的用電總量高達3000億瓦特,幾近于30座核發(fā)電站的產(chǎn)電總量,其中卻僅有6%~12%的能耗真正用于處理用戶請求。與此同時,巨量的能耗帶來的碳排放問題也相繼引發(fā)了一系列環(huán)境和社會問題。就信息技術(shù)領域而言,其產(chǎn)生的二氧化碳排放量就約占全球總量的2%,且這一比例到2020年仍將翻一番[5]。由于數(shù)據(jù)庫負載占用著數(shù)據(jù)中心大量服務器資源,使得DBMS成為數(shù)據(jù)中心總能耗的重要組成部分[6],因此,針對節(jié)能的綠色數(shù)據(jù)庫系統(tǒng)的研究是解決當前能耗及環(huán)境問題的關(guān)鍵,具有顯著的應用價值和社會意義。
目前,由于固態(tài)硬盤(Solid-State Drive, SSD)具有高性能、低能耗等特點,因此為構(gòu)建低能耗的綠色數(shù)據(jù)庫系統(tǒng)提供了新思路,許多相關(guān)研究學者也相繼提出了在綠色數(shù)據(jù)庫系統(tǒng)中應當考慮SSD的使用[7-8],但現(xiàn)有針對基于SSD的數(shù)據(jù)庫系統(tǒng)的研究主要以提高性能為目標,缺少對系統(tǒng)能耗的感知與處理[9-10]。與此同時,現(xiàn)有數(shù)據(jù)庫系統(tǒng)的查詢計劃往往是基于機械磁盤(Hard Disk Drive, HDD)進行設計與優(yōu)化,簡單用SSD替換HDD,并不能夠選擇最有效地權(quán)衡性能和能耗的執(zhí)行計劃,因此,本文基于SSD數(shù)據(jù)庫系統(tǒng),以降低系統(tǒng)能耗為首要目標,重點關(guān)注如何有效估算執(zhí)行計劃的能耗,進而優(yōu)化DBMS的SQL語句執(zhí)行計劃的選擇來實現(xiàn)數(shù)據(jù)庫節(jié)能。通過對固態(tài)硬盤順序讀、隨機讀、順序?qū)懞碗S機寫的不同操作進行區(qū)分,建立基于SSD數(shù)據(jù)庫不同I/O操作類型的SQL語句能耗感知模型。模型只需要從SQL語句的執(zhí)行計劃中獲取CPU指令總數(shù)、固態(tài)硬盤讀寫次數(shù)等資源消耗信息,通過相應算法就可得出CPU、固態(tài)硬盤等主要能耗部件的能量消耗,最終估算出相應執(zhí)行計劃在系統(tǒng)中的總能耗。本文主要工作是在對直接影響數(shù)據(jù)庫能耗的SQL資源消耗分析基礎上,為基于SSD的數(shù)據(jù)庫系統(tǒng)構(gòu)建了基于數(shù)據(jù)庫I/O操作類型、單位開銷統(tǒng)一的能耗感知模型,通過實驗驗證模型的有效性,并進行了優(yōu)化分析。實驗結(jié)果表明,提出的能耗感知模型在理想情況下,平均誤差為5.15%,絕對誤差不超過9.8%,證明了該模型可有效應用于構(gòu)建能耗感知的綠色節(jié)能數(shù)據(jù)庫系統(tǒng)。模型主要基于讀寫兩種不同操作類型,將CPU和SSD的資源開銷統(tǒng)一轉(zhuǎn)化為順序讀或順序?qū)懙膯挝毁Y源開銷,在查詢優(yōu)化器中僅通過讀寫次數(shù)就可預測資源開銷和能量消耗。
1 相關(guān)研究
近年來,構(gòu)建節(jié)能的數(shù)據(jù)庫系統(tǒng)已成為學術(shù)界和工業(yè)界的共識,現(xiàn)有工作主要集中在硬件和軟件兩個方面。硬件方面?zhèn)戎赜诟咝阅?、低功耗硬件(如處理器、存儲器)的設計和使用,以構(gòu)建低能耗的綠色硬件系統(tǒng)為目標。目前利用固態(tài)硬盤替換磁盤是該方向的研究熱點。呂雁飛等[11]測試了SSD基本IO特性,并分析了CPU處理能力、緩沖區(qū)大小等對基于SSD數(shù)據(jù)庫的影響,最后從數(shù)據(jù)組織以及數(shù)據(jù)庫資源利用等多方面對基于SSD的數(shù)據(jù)庫系統(tǒng)進一步提高性能、降低能耗給出優(yōu)化建議。Bausch等[12]基于PostgreSQL數(shù)據(jù)庫對查詢處理性能進行了對比測評,相比HDD,SSD環(huán)境下查詢處理性能最高提升了近50倍,有效降低了系統(tǒng)能耗,但不同掃描操作的性能提升幅度差距較大。Do等[13]利用SSD替換HDD對循環(huán)嵌套、排序—合并以及Hash等連接算法的性能進行了測試。實驗結(jié)果顯示連接操作在SSD上的執(zhí)行時間均低于HDD,系統(tǒng)能耗也得到了降低,但性能提升幅度不足2倍。Lee等[14]測試了基于SSD數(shù)據(jù)庫的多方面性能和功耗表現(xiàn),并探討了使用SSD后的數(shù)據(jù)庫系統(tǒng)的性能瓶頸是否會由存儲設備轉(zhuǎn)移到CPU的問題。以上基于硬件的節(jié)能研究主要通過降低執(zhí)行時間的方式實現(xiàn)了一定的節(jié)能效果。
軟件方面主要研究基于功耗感知的查詢優(yōu)化器。首先針對系統(tǒng)構(gòu)建功耗/能耗模型,然后結(jié)合模型和查詢優(yōu)化器,在滿足用戶服務等級協(xié)議(Service Level Agreement, SLA)的基礎上,最終為查詢語句選擇具有較低功耗/能耗的執(zhí)行計劃。Rodriguez-Martinez等[15]通過統(tǒng)計不同執(zhí)行計劃的元組大小、基數(shù)和列數(shù)信息,并利用系統(tǒng)負載數(shù)據(jù)和內(nèi)部傳感器數(shù)據(jù),建立查詢語句級別的功耗模型。模型準確性較高,但僅局限于查詢語句,不能完全覆蓋所有數(shù)據(jù)庫操作類型。Xu等[16-18]根據(jù)數(shù)據(jù)元組數(shù)、索引元組數(shù)和讀取頁面數(shù)等運算符特征,建立運算符級別的功耗模型,并結(jié)合性能約束和功耗開銷雙重標準來評估查詢計劃的優(yōu)劣,從而選擇性能良好、相對節(jié)能的查詢計劃,但模型準確度和穩(wěn)定性較差。楊良懷等[19]和陳俊等[20]通過收集CPU所有核心的利用率、執(zhí)行頻率、磁盤利用率以及相應系統(tǒng)功耗數(shù)據(jù),借助多元線性回歸對收集的信息進行擬合,得到功耗預測模型。模型全面地兼顧了CPU各個核對系統(tǒng)總功耗的影響,具有較高的應用價值。國冰磊等[21-22]基于磁盤的傳統(tǒng)關(guān)系型數(shù)據(jù)庫,通過對數(shù)據(jù)庫SQL語句主要硬件(CPU、HDD)的資源消耗信息進行線性回歸,構(gòu)建了單位代價統(tǒng)一的動態(tài)功耗預測模型,模型的準確度較高且穩(wěn)定性良好。
然而,現(xiàn)有針對基于SSD的數(shù)據(jù)庫的研究與設計,往往以提高性能為目標,較少關(guān)注能耗優(yōu)化;同時,現(xiàn)有的節(jié)能查詢優(yōu)化器主要是基于HDD進行設計與優(yōu)化,SSD相比HDD不僅性能優(yōu)異,也有讀寫不對稱、寫前擦除等缺點,因此將針對基于HDD的數(shù)據(jù)庫設計的能耗優(yōu)化算法直接遷移到基于SSD的數(shù)據(jù)庫中,并不能有效利用SSD的特性。本文根據(jù)SSD隨機讀寫和順序讀寫的性能和能耗不同的特點,通過對SQL語句執(zhí)行計劃的CPU指令數(shù)及SSD讀寫次數(shù)等進行分析,建立可以估算SQL執(zhí)行計劃資源消耗的能耗感知模型。將模型植入到基于SSD的數(shù)據(jù)庫查詢優(yōu)化器中,選擇能夠較好權(quán)衡性能和能耗的執(zhí)行計劃,從而為構(gòu)建能耗感知的綠色數(shù)據(jù)庫系統(tǒng)奠定基礎。本文與已有工作的不同之處在于:
1)現(xiàn)有針對基于SSD的數(shù)據(jù)庫系統(tǒng)的研究主要致力于系統(tǒng)性能的提升,而本文主要目標是在降低數(shù)據(jù)庫系統(tǒng)能耗的同時兼顧性能;
2)能耗感知模型對CPU部件能耗的估算采用能更好反映CPU工作量的執(zhí)行指令總數(shù),相比相關(guān)研究選取CPU處理元組數(shù)度量能耗的方式,本文模型的準確度更高。
3)現(xiàn)有模型主要針對查詢語句(主要是讀操作)進行能耗優(yōu)化。本文基于數(shù)據(jù)庫I/O操作進行建模,兼顧讀寫兩種操作類型,可以對不同類型的SQL語句進行較全面的覆蓋。
2 能耗感知模型
SQL語句是連接并操作現(xiàn)有關(guān)系型數(shù)據(jù)庫系統(tǒng)的標準接口,同時數(shù)據(jù)庫資源的70%~90%都消耗在了SQL語句的執(zhí)行過程中。SQL語句的執(zhí)行時間和資源消耗直接影響著數(shù)據(jù)庫負載的性能和能耗,因此本文對SQL語句的能耗進行建模與優(yōu)化可以達到預測數(shù)據(jù)庫系統(tǒng)能耗的目的,對提高系統(tǒng)資源利用率和實現(xiàn)構(gòu)建節(jié)能的綠色數(shù)據(jù)庫系統(tǒng)具有重大研究意義。
能耗度量是能耗感知的基礎,根據(jù)經(jīng)典能耗公式可知,系統(tǒng)能耗即系統(tǒng)功率與執(zhí)行時間的乘積。設系統(tǒng)能耗為E(單位:J)、系統(tǒng)功率為P(單位:W)(采用平均功率計算)、執(zhí)行時間為t(單位:s),則能耗計算公式可表示為:
設任意一條SQL語句成功執(zhí)行后的能耗為ESQL。在基于SSD的數(shù)據(jù)庫系統(tǒng)中,每條SQL語句在執(zhí)行過程中都主要消耗CPU、存儲設備SSD、內(nèi)存以及網(wǎng)絡等資源,因此一條SQL語句執(zhí)行完畢后的能耗可由式(2)得到:
其中:ECPU、EMEM、ESSD、ENET分別為CPU、內(nèi)存、固態(tài)硬盤及網(wǎng)絡等資源部件的能耗,EOther為消耗其他資源產(chǎn)生的能耗。對SQL語句而言,CPU和存儲設備是主要的能耗部件,因此本文能耗感知模型主要考慮CPU和SSD的能耗。考慮到優(yōu)化其他能耗部件對于降低系統(tǒng)總能耗的效果不顯著,故本文將內(nèi)存、網(wǎng)絡資源等能耗部件視為系統(tǒng)靜態(tài)能耗處理。
結(jié)合能耗公式可知,在基于SSD的數(shù)據(jù)庫負載執(zhí)行過程中,對于CPU和存儲設備SSD而言,都會產(chǎn)生時間開銷和功耗開銷。本文分別針對時間開銷和功耗開銷進行建模,最終得到可以估算DBMS資源消耗的能耗感知模型。模型中都包含CPU開銷和SSD上的I/O開銷,通過對以下資源開銷量化,得到單位統(tǒng)一的資源開銷模型。
1)CPU開銷。在SQL語句執(zhí)行過程中,CPU的工作主要包括處理元組、解析語句、建立查詢樹、執(zhí)行計劃等,僅利用處理的元組數(shù)評價CPU開銷較為粗糙[17],因此選擇更能實際反映CPU工作量的指令總數(shù)對CPU時間開銷和功耗開銷進行評估。
2)固態(tài)硬盤開銷。固態(tài)硬盤產(chǎn)生的時間開銷和功耗開銷都與其產(chǎn)生的讀寫數(shù)據(jù)量有關(guān)。在基于SSD的數(shù)據(jù)庫系統(tǒng)中,SQL語句執(zhí)行過程中常見的I/O類型主要包括:順序讀、順序?qū)憽㈦S機讀、隨機寫。例如,對Oracle而言,其訪問存儲設備的最小單位是數(shù)據(jù)塊,其SQL語句的I/O操作主要為順序讀數(shù)據(jù)塊、隨機讀數(shù)據(jù)塊、順序?qū)憯?shù)據(jù)塊、隨機寫數(shù)據(jù)塊。采用讀寫數(shù)據(jù)塊的數(shù)量作為固態(tài)硬盤資源消耗的計量單位,可以較好地反映固態(tài)硬盤的工作量。
2.1 時間開銷預測模型
SQL語句的時間開銷主要由CPU時間開銷和固態(tài)硬盤的I/O時間開銷構(gòu)成。在數(shù)據(jù)庫系統(tǒng)中,一個常用統(tǒng)計參數(shù)Cost(%CPU),為在總時間開銷中,CPU時間開銷所占的比重。由于實驗中的SQL語句結(jié)構(gòu)簡單,執(zhí)行時間較短,所以CPU時間開銷相比I/O時間開銷而言可以忽略不計,則總的時間開銷就等于I/O時間開銷:
根據(jù)I/O不同讀寫類型,將不同類型讀寫操作的次數(shù)乘以該操作的平均單次處理時間定義為總的時間開銷。對于I/O時間開銷而言,在不同數(shù)據(jù)庫系統(tǒng)配置下,數(shù)據(jù)塊讀寫操作有不同的操作時間。為統(tǒng)一時間開銷,利用順序讀、順序?qū)懙钠骄鶈未螘r間開銷分別作為讀、寫操作的最小時間開銷單位,I/O類型為順序讀、順序?qū)懙目倳r間開銷即分別為順序讀、順序?qū)懙目偞螖?shù)。
設s_r_t為單次順序讀的平均時間(單位:ms),s_r_sm為順序讀的總次數(shù);r_r_t為單次隨機讀的平均時間(單位:ms),r_r_sm為隨機讀總次數(shù);s_w_t為單次順序?qū)懙钠骄鶗r間(單位:ms),s_w_sm為順序?qū)懙目偞螖?shù);r_w_t為單次隨機寫的平均時間(單位:ms),r_w_sm為隨機寫的總次數(shù)。
設順序讀操作的時間開銷為T_s_r,公式為:
隨機讀操作的時間開銷為T_r_r,公式為:
順序?qū)懖僮鞯臅r間開銷為T_s_w,公式為:
隨機寫操作的時間開銷為T_r_w,公式為:
其中,式(5)、(7)將隨機讀寫的時間開銷轉(zhuǎn)換為順序讀寫的時間開銷;同時,各類型I/O操作實際的時間開銷可以利用式(4)或(5)與s_r_t相乘,式(6)或(7)與s_w_t相乘獲得。
2.2 功耗開銷預測模型
系統(tǒng)總功耗主要包括系統(tǒng)在空閑狀態(tài)下的靜態(tài)功耗和DBMS運行負載情況下CPU和I/O操作產(chǎn)生的動態(tài)功耗。由于靜態(tài)功耗為固定值,因此功耗開銷預測模型主要關(guān)注估算負載情況下的CPU和I/O產(chǎn)生的動態(tài)功耗之和。同樣,利用順序讀寫的功耗開銷統(tǒng)一CPU和I/O功耗開銷:
2.2.1 I/O功耗開銷
I/O操作類型主要為順序讀、隨機讀、順序?qū)懞碗S機寫,同樣利用一次順序讀和順序?qū)懰ㄙM的功耗開銷將所有功耗開銷統(tǒng)一,因此數(shù)據(jù)庫讀的功耗開銷都會轉(zhuǎn)換為順序讀的功耗開銷,數(shù)據(jù)庫寫的功耗開銷都會轉(zhuǎn)換為順序?qū)懙墓拈_銷。
設s_r_p為單次順序讀的平均功率(單位:W),s_r_sm為順序讀的總次數(shù);r_r_p為單次隨機讀的平均功率(單位:W),r_r_sm為隨機讀總次數(shù);s_w_p為單次順序?qū)懙钠骄β剩▎挝唬篧),s_w_sm為順序?qū)懙目偞螖?shù);r_w_p為單次隨機寫的平均功率(單位:W),r_w_sm為隨機寫的總次數(shù)。
設順序讀操作的功耗開銷為P_s_r,公式為:
隨機讀操作的功耗開銷為P_r_r,公式為:
順序?qū)懖僮鞯墓拈_銷為P_s_w,公式為:
隨機寫操作的功耗開銷為P_r_w,公式為:
各類型I/O操作的實際功耗開銷可以利用式(9)或(10)與s_r_p相乘,式(11)或(12)與s_w_p相乘獲得。
2.2.2 CPU功耗開銷
在SQL語句執(zhí)行過程中,CPU會根據(jù)不同的數(shù)據(jù)處理量和操作方式,執(zhí)行不同數(shù)量的CPU指令,消耗的所有CPU指令稱為總指令數(shù)(CPU_num)。為計算方便,CPU總指令數(shù)以萬為計量單位。為了統(tǒng)一CPU功耗開銷和IO功耗開銷,將CPU_to_IO定義為轉(zhuǎn)換參數(shù),其中CPU_to_IO為一次順序讀的能耗s_r_p與等價的CPU指令數(shù)能耗P_CPU_unit之間的轉(zhuǎn)換。
轉(zhuǎn)換參數(shù)的計算如下:
由于不同型號CPU的計算能力差異較大,即單位時間能夠計算完成的指令數(shù)不同,因此需要通過實驗進行建模訓練,從而獲得P_CPU_unit,即CPU的指令功耗能力。
則統(tǒng)一開銷單位的CPU功耗開銷為:
因此,I/O類型是順序讀的功耗開銷為:
I/O類型是隨機讀的總功耗開銷為:
I/O類型是順序?qū)懙目偣拈_銷為:
I/O類型是隨機寫的總功耗開銷為:
設數(shù)據(jù)庫系統(tǒng)總功耗開銷為P,數(shù)據(jù)庫系統(tǒng)的總能耗為E,系統(tǒng)在空閑狀態(tài)下的功耗為P_free,則系統(tǒng)的總功耗開銷和總能耗開銷如下:
結(jié)合以上時間開銷和功耗開銷模型即得到數(shù)據(jù)庫系統(tǒng)的能耗感知模型,但實驗需要訓練出CPU指令功耗能力以及數(shù)據(jù)庫各類型I/O操作的平均單次執(zhí)行功耗。以數(shù)據(jù)庫順序讀的模型求導為例,綜合式(16)、(20)得到I/O類型為數(shù)據(jù)庫順序讀的系統(tǒng)總功耗如式(22)所示:
為方便求解,將順序讀的總能耗公式轉(zhuǎn)換為數(shù)學公式,設系統(tǒng)總能耗P為y,CPU_num為X1,s_r_sm為X2,得到以下線性回歸方程:
其中:X1、X2為回歸變量,α0、α1、α2為回歸系數(shù)。這里,α0代表系統(tǒng)靜態(tài)功耗,α1代表每萬條CPU指令的功耗開銷,α2代表單次數(shù)據(jù)庫順序讀的功耗開銷。
3 實驗設計與模型求解
3.1 實驗環(huán)境和數(shù)據(jù)收集
實驗采用HOPI數(shù)字功耗儀收集功耗等數(shù)據(jù),數(shù)據(jù)采集頻率設置為每秒1次。為排除用電監(jiān)測軟件(HP8713)對采樣數(shù)據(jù)準確度的干擾,實驗采用雙機通信的方式,具體實驗平臺如圖1所示。總體實驗環(huán)境描述如表1所列。
實驗基于Oracle數(shù)據(jù)庫平臺,采用TPC-H測試基準,該基準由一系列面向商務應用的查詢和并行數(shù)據(jù)修改組成。實驗利用了TPC-H提供的dbgen工具生成10GB大小的數(shù)據(jù)庫。
在Oracle數(shù)據(jù)庫系統(tǒng)中,執(zhí)行代價參數(shù)直接反映系統(tǒng)的處理能力,并提供了存儲過程(GATHER_SYSTEM_STATS)收集這些相關(guān)統(tǒng)計數(shù)據(jù)。這些系統(tǒng)統(tǒng)計數(shù)據(jù)主要包括:CPU執(zhí)行指令總數(shù)(CPU_num)、數(shù)據(jù)庫順序讀次數(shù)(s_r_sm)、數(shù)據(jù)庫隨機讀次數(shù)(r_r_sm)、數(shù)據(jù)庫順序?qū)懘螖?shù)(s_w_sm)、數(shù)據(jù)庫隨機寫次數(shù)(r_w_sm)、單次數(shù)據(jù)庫順序讀時間(Single block READ TIMe, SREADTIM)、單次數(shù)據(jù)庫隨機讀時間(Multi-block READ TIMe, MREDTIM請補充SREADTIM和MREDTIM的英文全稱?;貜停杭慈缧薷牡哪菢铀荆┑?。這些統(tǒng)計數(shù)據(jù)為能耗感知模型提供了關(guān)鍵參數(shù)信息,對模型求解至關(guān)重要。其中,為盡可能提高能耗感知模型的精確度,參數(shù)SREADTIM和MREDTIM需要通過執(zhí)行數(shù)據(jù)庫負載進行大量訓練后收集。
實驗為減少誤差,將每條SQL語句連續(xù)執(zhí)行100遍來訓練能耗感知模型,同時為了避免上一條SQL語句執(zhí)行后產(chǎn)生的臨時數(shù)據(jù)影響下一條SQL語句的執(zhí)行,因此每次執(zhí)行SQL語句之后都要清空緩沖區(qū)(BUFFER_CACHE)和共享池(SHARED_POOL)。Oracle沒有提供這種機制,因此利用存儲過程(如表2)實現(xiàn)以上功能,并最終在PLSQL中執(zhí)行。
為保證SQL語句按照對能耗感知模型訓練更有效的執(zhí)行方式進行處理,運用了Oracle Hints技術(shù)強制SQL語句按照指定的方式去執(zhí)行,但值得注意的是,Oracle Hints在使用不當?shù)那闆r下會失效。例如,當索引不為唯一非空索引時,則關(guān)于索引的Oracle Hints操作會失效,結(jié)果將無法保證SQL按照指定的執(zhí)行計劃執(zhí)行,因此實驗必須保證Oracle Hints有效。
存儲過程代碼如下所示:
3.2 數(shù)據(jù)庫讀操作能耗感知模型
在數(shù)據(jù)庫中,常見執(zhí)行數(shù)據(jù)庫順序讀的操作主要有全表掃描和快速完全索引掃描兩種,而常見執(zhí)行數(shù)據(jù)庫隨機讀的操作主要有索引完全掃描、索引范圍掃描、索引跳躍掃描和由ROWID訪問表四種,因此,采用這6類數(shù)據(jù)庫讀操作設計了兩組數(shù)據(jù)集:第一組用于訓練出能耗感知模型中的回歸系數(shù)值,作為訓練集;第二組用于驗證能耗感知模型的實際效果和準確性,作為驗證集。實驗中訓練集為50條,測試集為10條,它們的實例分別如表2~3所示。
實驗使用功耗儀測得的功耗由數(shù)據(jù)庫系統(tǒng)的靜態(tài)功耗和動態(tài)功耗組成。靜態(tài)功耗是系統(tǒng)在無工作負載狀態(tài)下的功耗;動態(tài)功耗是數(shù)據(jù)庫在執(zhí)行SQL語句時產(chǎn)生的額外功耗,反映的是數(shù)據(jù)庫系統(tǒng)資源消耗情況。在數(shù)據(jù)庫處于無工作負載的空閑狀態(tài)下,測得系統(tǒng)平均功耗為29.8W。在數(shù)據(jù)庫獨自占用整個系統(tǒng)資源的情況下運行訓練集,并收集數(shù)據(jù)庫系統(tǒng)中的統(tǒng)計數(shù)據(jù)(模型所需參數(shù)及資源消耗等信息),利用Matlab軟件將收集的數(shù)據(jù)代入建立的順序讀操作的功耗模型(23)中進行線性擬合,最終得到如下公式:
根據(jù)公式各項系數(shù)含義可知,實驗對靜態(tài)功耗的擬合結(jié)果為34.74W,與實際值(29.8W)的相對誤差為16.5%。由于在基于SSD的數(shù)據(jù)庫系統(tǒng)執(zhí)行過程中,除CPU和固態(tài)硬盤會產(chǎn)生功耗以外,其他部件也會產(chǎn)生功耗;同時,系統(tǒng)還會產(chǎn)生一些無法預知的活動,因此其功耗高于靜態(tài)功耗是合理的。實驗收集到的單次數(shù)據(jù)庫順序讀的時間(SREADTIM)為1.26ms,單次數(shù)據(jù)庫隨機讀的時間(MREDTIM)為2.73ms。
結(jié)合擬合的功耗模型和SREADTIM值,可得順序讀操作的能耗模型為:
類似于數(shù)據(jù)庫順序讀操作能耗模型的求導過程,利用收集到的統(tǒng)計數(shù)據(jù)與式(23)、式(27),同理可得數(shù)據(jù)庫隨機讀操作的能耗感知模型為:
其中:X1仍然表示CPU執(zhí)行指令總數(shù),X3表示隨機讀總次數(shù)(r_r_sm)。
由于數(shù)據(jù)庫順序讀和隨機讀操作在數(shù)據(jù)庫負載的實際執(zhí)行過程中常常同時出現(xiàn),所以為方便計算,使得模型更加通用,結(jié)合式(25)和(26)即得到數(shù)據(jù)庫讀操作的總能耗感知模型為:
3.3 數(shù)據(jù)庫寫操作的能耗感知模型
對于數(shù)據(jù)庫寫操作,常見且簡單的操作類型主要為數(shù)據(jù)庫插入(INSERT)和更新操作(UPDATE)。實驗選取了執(zhí)行順序?qū)懖僮骱碗S機寫操作的數(shù)據(jù)庫插入語句和更新語句,同樣設計了訓練集(50條)和測試集(10條)兩組數(shù)據(jù)集。數(shù)據(jù)庫寫操作的實例如表4所示。
在DBMS獨自占用系統(tǒng)資源情況下,運行數(shù)據(jù)庫寫操作的訓練集,收集系統(tǒng)統(tǒng)計數(shù)據(jù),使用Matlab對數(shù)據(jù)庫寫操作的功耗模型進行線性擬合。由于實驗設計的寫操作往往要先執(zhí)行數(shù)據(jù)庫讀操作以向內(nèi)存加載寫操作所需的數(shù)據(jù),因此擬合過程中所需寫操作的功耗數(shù)據(jù)必須為排除讀操作影響的凈功耗。實驗首先根據(jù)寫操作的執(zhí)行時間Tw和平均功耗計算出總能耗Ew,然后利用收集的統(tǒng)計信息和讀操作能耗感知模型的擬合公式(27)估算出讀操作的能耗Er,最后通過如下計算公式獲得寫操作的凈功耗Pw:
最終對數(shù)據(jù)庫順序?qū)懖僮鞯臄M合結(jié)果如下:
其中:X4表示CPU指令總數(shù),X5表示順序?qū)懖僮鞔螖?shù)。實驗對靜態(tài)功耗的擬合結(jié)果為35.46W,與實際值(29.8W)的相對誤差為18.99%,高于數(shù)據(jù)庫讀操作對靜態(tài)功耗的擬合結(jié)果。由于不僅其他部件會產(chǎn)生額外功耗,同時計算中還額外疊加了讀操作能耗感知模型的誤差。通過訓練后,收集到的單次數(shù)據(jù)庫順序?qū)懙臅r間開銷(s_w_t)為1.56ms,單次數(shù)據(jù)庫隨機寫的時間開銷(r_w_t)為7.45ms。
根據(jù)以上數(shù)據(jù),利用線性擬合得到數(shù)據(jù)庫順序讀操作的能耗感知模型的擬合公式為:
設數(shù)據(jù)庫隨機寫次數(shù)(r_w_sm)為X6,將收集的參數(shù)代入隨機寫操作能耗感知模型中得到擬合公式為:
最終得出數(shù)據(jù)庫寫操作的通用能耗感知模型的公式為:
4 模型驗證及評估
實驗對能耗感知模型的有效性和準確性進行了驗證。能耗感知模型是基于數(shù)據(jù)庫I/O類型構(gòu)建的,因此實驗所設計的測試集分別實現(xiàn)了順序讀、寫和隨機讀、寫共四種I/O操作,其測試集實例如表3所示。其中,每種操作的測試集包含10條語句,同時為驗證模型的健壯性和適應性,分別在以下兩種不同環(huán)境下對能耗感知模型進行驗證評估。
1)獨占環(huán)境。系統(tǒng)僅運行DBMS,沒有其他執(zhí)行程序或軟件與數(shù)據(jù)庫系統(tǒng)競爭資源。在支持多任務的系統(tǒng)中,通常采用多處理級(Multi-Processing-Level, MPL)表示系統(tǒng)當前運行的軟件及程序數(shù),此時系統(tǒng)的多處理級為1。
2)競爭環(huán)境。系統(tǒng)中存在和DBMS競爭資源的其他程序,實驗中運行了Java程序,系統(tǒng)的MPL值為2。
以上四種類型的I/O操作主要可分為讀、寫兩類;同時,模型在這兩類操作上的結(jié)構(gòu)設計和處理方式也具有明顯區(qū)別,因此,為描述方便,下面的模型驗證實驗將圍繞讀、寫兩個方面展開。
4.1 讀操作能耗感知模型的驗證評估
為更客觀地驗證與評估讀操作能耗感知模型對能耗的預測效果,本文還在相同實驗環(huán)境下與文獻[15-16]中提出的能耗模型(即參考模型)進行了對比實驗。由圖2(a)和(c)可知,在DBMS獨占系統(tǒng)資源環(huán)境時,本文能耗感知模型的預測值相對于實際能耗的平均誤差為5.15%,絕對誤差不超過9.8%,參考模型的平均誤差為6.55%,絕對誤差不超過12.3%。由圖2(b)、(d)可知,DBMS在與其他程序競爭系統(tǒng)資源的條件下,由于系統(tǒng)無法預知的活動產(chǎn)生了更多資源消耗,使得模型在競爭環(huán)境下的誤差高于獨占環(huán)境。本文能耗感知模型在競爭環(huán)境下的平均誤差為9.31%,絕對誤差最高不超過18.9%,對應參考模型的平均誤差為13.58%,絕對誤差最高可達26.9%??傮w而言,在DBMS獨占系統(tǒng)資源環(huán)境時,本文建立的數(shù)據(jù)庫讀操作的能耗感知模型的預測準確度良好,相比文獻[15-16]中提出的模型對數(shù)據(jù)庫能耗的估算更加準確。由于本文能耗感知模型選用CPU指令數(shù)為計量單位,相比現(xiàn)有研究選用CPU元組數(shù)作為計量單位進行能耗估算的方式更加優(yōu)越。
4.2 寫操作能耗感知模型的驗證評估
圖3所示為DBMS運行測試集時,本文寫操作能耗感知模型的估算值相對于實際能耗的誤差比例。由于現(xiàn)有相關(guān)研究主要針對查詢語句即讀操作進行能耗建模,沒有關(guān)注寫操作的能耗,因此本文在寫操作能耗感知模型的驗證實驗中不涉及與其他模型的對照實驗。不同于讀操作,寫操作的每組測試集都是由插入操作和更新操作兩種操作組成。為使顯示效果更加直觀,每組寫操作測試集的SQL編號1~5為插入操作,SQL編號6~10為更新操作。
綜合圖3(ea)、(fb)可知,在DBMS處于獨占環(huán)境時,能耗感知模型的估算值相對于實際能耗的平均誤差為6.61%,絕對誤差不超過11.7%;當DBMS處于競爭環(huán)境時,由于其他程序競爭系統(tǒng)資源,能耗感知模型對能耗的估算準確度明顯下降,平均誤差為12.21%,絕對誤差高達23.8%。值得注意的是,相比讀操作,寫操作能耗感知模型的誤差較大,準確度明顯降低。經(jīng)分析,這一結(jié)果主要是由于更新操作的誤差較大導致的。尤其在DBMS處于競爭環(huán)境執(zhí)行插入操作時,能耗感知模型的平均誤差為8.48%;而執(zhí)行更新操作時,模型的平均誤差高達15.94%。
4.3 實驗結(jié)果分析與優(yōu)化
針對寫操作的能耗感知模型,在估算更新操作能耗時的誤差明顯高于插入操作的實驗結(jié)果,分析主要是由于SSD設備需要寫前擦除的物理特性導致的。由于SSD不能原位更新,其在執(zhí)行更新操作對數(shù)據(jù)進行重寫時需要先執(zhí)行擦除操作,而擦除操作是SSD資源開銷代價最為昂貴的操作,其產(chǎn)生的額外功耗不可忽視。
同時,SSD這種寫前擦除操作也是影響讀操作能耗感知模型準確性和穩(wěn)定性的重要因素。當讀操作的數(shù)據(jù)量較大、內(nèi)存資源相對緊張時,數(shù)據(jù)庫會需要部分臨時表空間來存儲由于操作產(chǎn)生的臨時數(shù)據(jù),特別是數(shù)據(jù)庫排序操作通常需要使用臨時表空間,而臨時表空間是數(shù)據(jù)庫系統(tǒng)在存儲設備上分配的一塊獨占區(qū)域,并向所有需要寫臨時表的操作開放共享,因此在向臨時表空間寫入數(shù)據(jù)時,往往需要覆蓋由上次操作產(chǎn)生的臨時數(shù)據(jù),從而會執(zhí)行大量寫前擦除操作。為探究擦除操作對能耗感知模型的影響,實驗通過設置不同的內(nèi)存大小,分別在2GB、4GB、8GB和16GB的情況下依次對5張不同的數(shù)據(jù)表進行全表掃描并排序,計算不同內(nèi)存資源下模型對能耗的估算誤差。表5展示了數(shù)據(jù)表信息,實驗結(jié)果如圖4所示。
如圖4所示:在內(nèi)存為2GB時,讀操作能耗感知模型的誤差較大,平均誤差超過20%;當內(nèi)存分別為4GB和8GB時,平均誤差都顯著下降,模型誤差與內(nèi)存設置有著明顯的關(guān)系。仔細觀察發(fā)現(xiàn),在以上3種內(nèi)存設置下,隨著SQL語句操作的數(shù)據(jù)表數(shù)據(jù)量的增大,模型誤差也相應變大,模型誤差與SQL語句操作的數(shù)據(jù)量之間有著明顯關(guān)系。分析由于內(nèi)存資源依然緊缺,隨著SQL語句產(chǎn)生的臨時數(shù)據(jù)量增大,相應的擦寫臨時表空間操作增多,導致模型誤差變大;而當內(nèi)存為16GB時,模型平均誤差降到5%,同時模型誤差呈穩(wěn)定趨勢。實驗結(jié)果顯示,讀操作能耗感知模型在內(nèi)存資源相對充裕的條件下,準確度更高,也更加穩(wěn)定。這主要是由于讀操作在內(nèi)存充足的情況下,將產(chǎn)生的臨時數(shù)據(jù)存儲于內(nèi)存空間,減少了對臨時表空間的使用,避免了擦除操作對模型的影響。當然,本文模型在競爭環(huán)境下的誤差高于獨占環(huán)境的一個主要因素也是由于其他程序和DBMS競爭內(nèi)存資源導致的。
根據(jù)以上實驗結(jié)果可知,充足的內(nèi)存資源可以提高讀操作能耗感知模型的準確性和穩(wěn)定性,但對寫操作能耗感知模型而言,其擦除操作主要發(fā)生在更新操作執(zhí)行過程中,與內(nèi)存大小無關(guān),而想要進一步提高寫操作能耗感知模型的準確度,只有通過全面地結(jié)合CPU指令總數(shù)、寫操作次數(shù)以及擦除操作次數(shù)進行線性擬合,從而改進現(xiàn)有模型來實現(xiàn)。由于現(xiàn)有數(shù)據(jù)庫系統(tǒng)主要針對機械磁盤進行設計與優(yōu)化,磁盤沒有SSD寫前擦除的特性,因此現(xiàn)有數(shù)據(jù)庫系統(tǒng)無法獲知SSD寫前擦除的執(zhí)行次數(shù)及功耗等關(guān)鍵信息;同時,擦除操作以數(shù)據(jù)塊為單位,有時即使更新一條記錄,也可能會擦除整個數(shù)據(jù)塊。很難根據(jù)更新操作的次數(shù)來獲知擦除操作的執(zhí)行次數(shù),目前無法改進寫操作的能耗感知模型,因此,如何獲知擦除操作的執(zhí)行次數(shù)對寫操作能耗感知模型進行改進是我們未來的研究重點。
5 結(jié)語
本文提出的能耗感知模型通過將建模過程分解為兩個相對簡單獨立的資源開銷預測模型(時間開銷模型和功耗開銷模型),簡化了復雜的模型構(gòu)建過程。模型不需要單獨測量系統(tǒng)中各資源部件的能耗,僅需要獲取SQL語句執(zhí)行計劃提供的資源消耗信息(CPU指令總數(shù)、I/O操作執(zhí)行次數(shù))就能對DBMS產(chǎn)生的能耗進行有效的估算。目前,在以節(jié)能環(huán)保為中心的全球低碳化趨勢下,研究具有能耗感知的節(jié)能數(shù)據(jù)庫系統(tǒng)是學術(shù)界和工業(yè)界共同關(guān)注的熱點話題?,F(xiàn)有針對基于SSD數(shù)據(jù)庫系統(tǒng)的研究與設計主要以提高性能為目標,缺少針對能耗的感知及處理等方面的研究。本文提出的能耗感知模型,實現(xiàn)了為數(shù)據(jù)庫負載較準確地估算能耗的目的,但是模型在DBMS處于競爭環(huán)境下的準確性和穩(wěn)定性有待提高,以及寫操作的能耗感知模型有待改進;同時,需要進一步考慮性能和能耗之間的折中問題。
未來工作要點:
1)研究在競爭環(huán)境下(MPL≥2),如何進一步提高能耗感知模型的適應性和健壯性。
2)以本文能耗感知模型為基礎,研究如何獲取實時系統(tǒng)可接受的性能浮動范圍,從而在滿足性能需求的條件下進一步降低能耗。
3)研究可以跟蹤數(shù)據(jù)庫對SSD執(zhí)行擦除操作的次數(shù)、功耗等信息的方法,從而改進寫操作的能耗感知模型,進一步提高模型的準確性和穩(wěn)定性。
參考文獻 (References)
[1] KATZ R H. TechTitans building boom [J]. IEEE Spectrum, 2009, 46(2): 40-54.
[2] 呂天文.2013年數(shù)據(jù)中心能效現(xiàn)狀深度分析[J].電源世界,2013(6):7-8.(LYU T W. A deep analysis of data center energy efficiency in 2013 [J]. The World of Power Supply, 2013(6): 7-8.)
[3] 中國IDC圈.未來五年國內(nèi)數(shù)據(jù)中心能耗將翻一番[EB/OL].(2012-03-29)[2018-01-31].http://tech.idcquan.com/pro/34910.shtml.(China IDC Circle. Energy consumption in domestic data centers will double in the next five years [EB/OL]. (2012-03-29)[2018-01-31]. http://tech.idcquan.com/pro/34910.shtml.)
[4] GLANZ J. Power, pollution and the Internet [N]. The New York Times, 2012-09-22.
[5] Global Action Plan. An inefficient truth [EB/OL]. [2017-11-01]. http://globalactionplan.org.uk.
[6] POESS M, NAMBIAR R O. Energy cost, the key challenge of todays data centers: a power consumption analysis of TPC-C results [J]. Proceedings of the VLDB Endowment, 2008, 1(2): 1229-1240.
[7] TSIROGIANNIS D, HARIZOPOULOS S, SHAH M A. Analyzing the energy efficiency of a database server [C]// Proceedings of the 2010 ACM SIGMOD International Conference on Management of Data. New York: ACM, 2010: 231-242.
[8] SCHALL D, HUDLET V. Enhancing energy efficiency of database applications using SSDs [C]// Proceedings of the Third C* Conference on Computer Science and Software Engineering. New York: ACM, 2010: 1-9.
[9] 金培權(quán),邢寶平,金勇,等.能耗感知的綠色數(shù)據(jù)庫研究綜述[J].計算機應用,2014,34(1):46-53.(JIN P Q, XING B P, JIN Y, et al. Survey on energy-aware green databases [J]. Journal of Computer Applications, 2014, 34(1): 46-53.)
[10] 王江濤,賴文豫,孟小峰.閃存數(shù)據(jù)庫:現(xiàn)狀、技術(shù)與展望[J].計算機學報,2013,36(8):1549-1567.(WANG J T, LAI W Y, MENG X F. Flash-based database: studies, techniques and forecasts [J]. Chinese Journal of Computers, 2013, 36(8): 1549-1567.)
[11] 呂雁飛,陳學軒,崔斌.基于閃存的數(shù)據(jù)庫性能評測與優(yōu)化分析[J].計算機研究與發(fā)展,2009,46(s2):682-687.(LYU Y F, CHEN X X, CUI B. Performance evaluation and optimization analysis on flash-based database [J]. Journal of Computer Research and Development, 2009, 46(s2): 682-687.)
[12] BAUSCH D, PETROV I, BUCHMANN A. On the performance of database query processing algorithms on flash solid state disks [C]// Proceedings of the 2011 International Workshop on Database and Expert Systems Applications. Washington, DC: IEEE Computer Society, 2011: 139-144.
[13] DO J, PATEL J M. Join processing for flash SSDs: remembering past lessons [C]// Damon 2009: Proceedings of the 2009 International Workshop on Data Management on New Hardware. Providence, Rhode Island: [s.n.], 2009: 1-8.
[14] PARK S S, LEE S W. Hash join in commercial database with flash memory SSD [C]// Proceedings of the 2010 IEEE International Conference on Computer Science and Information Technology. Piscataway, NJ: IEEE, 2010: 265-268.
[15] RODRIGUEZ-MARTINEZ M, VALDIVIA H, SEGUEL J, et al. Estimating power/energy consumption in database servers [J]. Procedia Computer Science, 2011, 6(1): 112-117.
[16] XU Z. Building a power-aware database management system [C]// Proceedings of the 2010 SIGMOD PhD Workshop on Innovative Database Research. New York: ACM, 2010: 1-6.
[17] XU Z, TU Y C, WANG X. Exploring power-performance tradeoffs in database systems [C]// Proceedings of the 2010 IEEE International Conference on Data Engineering. Piscataway, NJ: IEEE, 2010: 485-496.
[18] XU Z, TU Y C, WANG X. PET: reducing database energy cost via query optimization [J]. Proceedings of the VLDB Endowment, 2013, 5(12): 1954-1957.
[19] 楊良懷,朱紅燕.整機系統(tǒng)實時功率剖析與建模[J].計算機科學,2014,41(9):32-37.(YANG L H, ZHU H Y. Whole system realtime power profiling and modeling [J]. Computer Science, 2014, 41(9): 32-37.)
[20] 陳俊,胡悅,楊嬌,等.云計算數(shù)據(jù)中心實時能耗建模[J].計算機工程與設計,2017,38(9):2494-2497.(CHEN J, HU Y, YANG J, et al. Cloud computing data center real-time energy modeling [J].Computer Engineering and Design, 2017, 38(9): 2494-2497.)
[21] 國冰磊,于炯,廖彬,等.結(jié)構(gòu)化查詢語言動態(tài)功耗解析及建模[J].計算機應用,2015,35(12):3362-3367.(GUO B L, YU J, LIAO B, et al. Dynamic power consumption profiling and modeling by structured query language [J]. Journal of Computer Applications, 2015, 35(12): 3362-3367.)
[22] GUO B L, YU J, LIAO B, et al. A green framework for DBMS based on energy-aware query optimization and energy-efficient query processing [J]. Journal of Network & Computer Applications, 2017, 84(C): 118-130.
[23] 陸克中,朱金彬,李正民,等.面向固態(tài)硬盤的Spark數(shù)據(jù)持久化方法設計[J].計算機研究與發(fā)展,2017,54(6):1381-1390.(LU K Z, ZHU J B, LI Z M, et al. Design of RDD persistence method in Spark for SSDs [J]. Journal of Computer Research and Development, 2017, 54(6): 1381-1390.)