亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

數(shù)據(jù)庫系統(tǒng)中連接操作cpu密集度估算方法

文檔序號:9274587閱讀:728來源:國知局
數(shù)據(jù)庫系統(tǒng)中連接操作cpu密集度估算方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種CPU密集度估算方法,用于估算數(shù)據(jù)庫系統(tǒng)中連接操作的CPU密 集度,是進(jìn)行峰值功率預(yù)測的關(guān)鍵所在。
【背景技術(shù)】
[0002] 數(shù)據(jù)中心的基礎(chǔ)設(shè)施(數(shù)據(jù)庫服務(wù)器等)、運(yùn)行、冷卻等能耗占一個(gè)典型數(shù)據(jù)中心 總能耗的30%。大規(guī)模數(shù)據(jù)中心的能源成本快速攀升并迅速超過硬件本身的成本,數(shù)據(jù)中 心的能耗問題成為日益關(guān)注的焦點(diǎn),能耗管理成為現(xiàn)代數(shù)據(jù)中心重要的度量與設(shè)計(jì)標(biāo)準(zhǔn)。 因此,準(zhǔn)確地評估服務(wù)器系統(tǒng)的功率對能耗管理至關(guān)重要。
[0003] 評估一個(gè)系統(tǒng)功率使用情況,可從兩方面來進(jìn)行:平均功率和峰值功率。平均功率 是一段時(shí)間里系統(tǒng)耗能與時(shí)間的比值,是指物體在某一段時(shí)間內(nèi)的功率平均值,平均功率 影響長期耗能與散熱系統(tǒng)的設(shè)計(jì);與平均功率相對的一個(gè)概念是瞬時(shí)功率,瞬時(shí)功率是指 系統(tǒng)在某一時(shí)刻的功率,而在一定負(fù)載下系統(tǒng)達(dá)到的最大功率即為系統(tǒng)峰值功率,峰值功 率與服務(wù)器設(shè)計(jì)、容量規(guī)劃、過熱防止是密切相關(guān),峰值功率是數(shù)據(jù)中心能耗管理的一個(gè)重 要方面。當(dāng)今大部分三層計(jì)算結(jié)構(gòu)中,DBMS是其中重要的一類系統(tǒng)軟件;在典型的數(shù)據(jù)中 心,大部分的計(jì)算資源用于數(shù)據(jù)庫服務(wù)器,在所部署的軟件中,DBMS是最大的能耗部件。因 此,對數(shù)據(jù)庫服務(wù)器系統(tǒng)的能耗管理成為數(shù)據(jù)中心的關(guān)鍵任務(wù)。查詢處理是數(shù)據(jù)庫系統(tǒng)的 主要任務(wù),連接操作是查詢處理的核心操作,準(zhǔn)確地評估連接操作的峰值功率是功率感知 DBMS的基礎(chǔ)。冷卻與電力供應(yīng)是根據(jù)峰值功率來設(shè)計(jì)的,峰值功率增加會導(dǎo)致升溫,導(dǎo)致系 統(tǒng)超過冷卻能力或大大增加冷卻成本,降低峰值功率可以緩解這方面的限制。數(shù)據(jù)中心通 常實(shí)施功率預(yù)算,由機(jī)架到節(jié)點(diǎn)機(jī)的各層協(xié)同控制進(jìn)行實(shí)施。為每臺機(jī)器、每個(gè)機(jī)架配備功 率計(jì)不現(xiàn)實(shí)也不經(jīng)濟(jì),系統(tǒng)自身感知是解決該問題的可行方法?,F(xiàn)有研究大都以平均功率 為指標(biāo)來進(jìn)行,沒有從峰值功率指標(biāo)入手。與平均功率相比,峰值功率需要對并行操作顯式 處理,峰值功率是并發(fā)操作的最大聚集和,DBMS功率感知首先要解決查詢計(jì)劃中各個(gè)操作 的峰值功率評估,該問題是查詢優(yōu)化器進(jìn)行查詢計(jì)劃峰值功率評估的基礎(chǔ)。
[0004] 數(shù)據(jù)庫系統(tǒng)查詢操作的峰值功率是指在給定的計(jì)算機(jī)體系結(jié)構(gòu)下,其執(zhí)行過程中 所耗費(fèi)的最大功率。查詢操作的峰值功率可以由兩種方式獲取:一是對操作進(jìn)行實(shí)際測量 獲取峰值大?。涣硪环N是通過軟件評估的方式對峰值進(jìn)行預(yù)測。對于面向峰值功率的查詢 優(yōu)化器,在確定最優(yōu)查詢計(jì)劃之前進(jìn)行實(shí)際測量是不現(xiàn)實(shí)的,需要通過軟件評估的方式對 峰值進(jìn)行預(yù)測。在查詢操作執(zhí)行過程中,峰值功率的大小與CPU運(yùn)行主頻、數(shù)據(jù)庫統(tǒng)計(jì)信息 (表大小、元組大小、內(nèi)存大小、輸入輸出緩沖區(qū)大?。┟芮邢嚓P(guān),在算法執(zhí)行之前這些數(shù)據(jù) 未定,因此,通過建立查詢操作的功率模型來預(yù)測峰值是一種解決方法。
[0005] 過去的研究表明系統(tǒng)的功率與CPU利用率近似線性相關(guān),這個(gè)規(guī)律可用來估算功 率。而峰值功率需要捕捉猝發(fā)或短期功率,依賴運(yùn)行時(shí)CPU利用率,但查詢優(yōu)化器在運(yùn)行前 需要獲知峰值功率,此時(shí)尚未執(zhí)行查詢,沒有CPU利用率值可資利用,難以用于峰值功率建 模。為了建立查詢操作峰值功率模型,需要找到一種CPU利用率的估計(jì)方法。
[0006] 傳統(tǒng)將工作負(fù)載分為片上計(jì)算型(on-chip computing)與片外計(jì)算型(off-chip computing),通過性能監(jiān)測單元(PMU)得到兩種操作所需要的時(shí)鐘周期數(shù),根據(jù)兩者的比 值大小來判定操作的CPU密集度并相應(yīng)地調(diào)節(jié)CPU頻率以降低功率;另一種類似的方法是 通過計(jì)算CPU密集型負(fù)載指令數(shù)與內(nèi)存密集型負(fù)載指令數(shù)的比值作為CPU密集度的值。這 兩種方法不適用于數(shù)據(jù)庫操作場景,因?yàn)椴樵儾僮鬟€涉及磁盤I/O訪問,CPU密集度計(jì)算需 要尋找新的方法。

【發(fā)明內(nèi)容】

[0007] 本發(fā)明是針對數(shù)據(jù)庫系統(tǒng)查詢操作的CPU密集度提出評估方法,解決功率建模中 關(guān)鍵數(shù)據(jù)獲取問題,從而解決功率感知數(shù)據(jù)庫系統(tǒng)的查詢優(yōu)化器在進(jìn)行優(yōu)化前需要在實(shí)際 執(zhí)行查詢計(jì)劃之前感知操作的峰值功率這個(gè)難題。
[0008] -種數(shù)據(jù)庫系統(tǒng)服務(wù)器連接操作CPU密集度估算方法,其特征在于所提估算方法 包括以下步驟:
[0009] 1)初始化CPU占用時(shí)間1:。_=0,單位時(shí)間剩余量t lrft= 1以及完成連接輸入緩 存IB中元組所需時(shí)間tMn_IB_le;ft,填滿輸出緩存0B所需連接時(shí)間參數(shù);
[0010] 2)若tl6ft大于0,則轉(zhuǎn)至步驟3,否則終止并輸出t
[0011] 3)若剩余時(shí)間tlrft足夠連接完IB,轉(zhuǎn)至步驟4,否則轉(zhuǎn)至步驟8 ;
[0012] 4)若IB連接的結(jié)果不夠填充0B,則轉(zhuǎn)至步驟7 ;
[0013] 5)若IB連接的結(jié)果多于填滿0B,則將IB的部分元組進(jìn)行連接,異步進(jìn)行IB'的 讀入與OB'的寫出,直到連接結(jié)果填滿0B為止,更新,獲取可用的輸出緩存并記為0B。 該步驟是在滿St lrft> t join-IB-left-S* t JoinJBJeft> tj_B left情形所進(jìn)行的操作,具體由以 下步驟組成:
[0014] (5. 1)連接IB中元組直到填滿0B,使用了時(shí)間tj()in QB left;
[0015] // 更新 tleft、tcpu、tj〇in-IB- 1(^值
[0016] (5. 2) tleft- t left-tj〇in-0B-left;
[0017] (5. 3) tcpu^ t cpu+tJoin_ _0B-left;
[0018] (5. 4) tj〇in-IB-left-t j〇in-IB-left_tj〇in- 0B-left;
[0019] //異步并行讀寫R/W時(shí)間更新
[0020] (5. 5) Update (tread-IB,-left,tj〇in- 0B-left) ;//tread-IB,-丄淑疋從磁盤i頭取數(shù)據(jù)填兩 IB 剩余部分所需的讀取時(shí)間;
[0021] (5. 6) Update (twrite-QB,-left,tjQin-QB-left) ;//twrite-QB,-left疋兀成 0B 未與出部分所茜 的寫出時(shí)間;
[0022] (5. 7) twrite 0B left- T w;// 更新其寫出時(shí)間 t write_0B_left? 其中 twrite-0B-left 是完成〇B未 寫出部分預(yù)計(jì)所需的寫出時(shí)間,寫出〇B的時(shí)間是Tw;
[0023] (5. 8)獲取已完成寫出操作的0B緩沖區(qū)getEmptyOBO;
[0024] (5. 9)轉(zhuǎn)步驟 2).
[0025]6)若IB連接的結(jié)果剛好填滿0B,則獲取可用的輸入緩存并記為IB,獲取可用的輸 出緩存并記為0B,更新i^pu。該步驟是丨兩足tlrft> t join-IB-left-S* t j〇in-ib-left ^ join_0B_left ^ 形下進(jìn)行的一系列操作,具體由以下步驟組成:
[0026] (6. 1)完成IB剩余元組連接,用時(shí)tjQinIB left;
[0027] (6. 2)tleft- t left-tj〇in-0B-left;// 更新tleft
[0028](6. 3) tcpu- t cpu+tjoin-0B-left;// 更新tcpu
[0029] //異步并行讀寫R/W時(shí)間更新
[0030] (6. 4) Update (tread-IB,-left,tjQin-qB-left) ;//更新 IB 的 tread-IB,-left時(shí)間
[0031] (6. 5) Update (twrite-0B,-left,0B- left) ;// 更新 OB 的 ^,write_0B, _left時(shí)間
[0032] (6. 6) tread_IB-left Tr; //更新其讀取時(shí)間t read-IB-left' 其中T;是讀入| IB |大小的數(shù) 據(jù)塊所需的時(shí)間,t_d IB lrft表示從磁盤讀取數(shù)據(jù)填滿IB剩余空間預(yù)計(jì)所需的讀取時(shí)間; [0033] (6. 7) twrite 0B left- T W;//0B完成寫出,更新其寫出時(shí)間t write_0B_left
[0034] (6. 8)若 tMad IB, left> t mite QB, lefJlJ // 阻塞時(shí),OB' 先完成寫出
[0035] (6. 8. l)getEmptyOB〇 ;//取完成寫出后可用的輸出緩存記為OB
[0036] (6. 8. 2) getReadylB () ;// 再獲取完成讀取的 IB
[0037](6. 9)否則 /tread_IB' -left<twrite_〇B' _left?阻塞狀態(tài),IB'先完成讀入
[0038] (6. 9. 1)獲取已完成讀取操作的IB緩沖區(qū)getReadylB ();
[0039] (6. 9. 2)getEmptyOB〇 ;//取完成寫出后可用的輸出緩存記為0B
[0040] (6. 10)轉(zhuǎn)步驟 2) ?
[0041] 7)連接IB的所有剩余元組,異步進(jìn)行IB'的讀入與0B'的寫出,直到完成IB連 接,獲取可用的輸入緩存并記為IB,更新tepu。該步驟是滿足tlrft> = t t j lrft< 情形所進(jìn)行的一系列操作,具體由以下步驟組成:
[0042] (7. 1)連接IB的剩余元組,用時(shí)tjQin IB left;
[0043] // 更新 tleft,tcpu,tj〇in-0B-left
[0044] (7. 2) tleft- t left_tj〇in-IB-left;
[0045] (7. 3)tcpu-t cpu+tj oin_IB_left?
[0046] (7. 4)tj〇in-0B-left-tj〇in-0B-left_tj〇in-IB-left;
[0047] //異步并行讀寫R/W時(shí)間更新
[0048] (7. 5) Update (tread-IB,-left,tjoin- IB-left) ;// 更新 IB的tread-IB,-left
[0049] (7. 6) Update (twrite-0B,-left,IB- left);//更新 0B的 ^,write_0B, _left
[0050] (7. 7) tread_IB-left Tr;//IB完成連接,更新其讀取時(shí)間t read-IB_left
[0051] (7. 8) getReadylB () ;// 獲取完成讀取的 IB
[0052] (7. 9)轉(zhuǎn)步驟 2) ?
[0053] 8)若剩余時(shí)間tleft不夠連接填滿0B,則轉(zhuǎn)至步驟9;否則此時(shí)滿足t left< t j()in IB left且t left> t _ left,將IB剩余部分元組進(jìn)行連接,與此同時(shí),可異步進(jìn)行IB'的讀入與 0B'的寫出,直到連接結(jié)果填滿0B為止,獲取可用的輸出緩存并記為0B,更新,具體由以 下步驟組成:
[0054](8. 1)連接IB中部分元組直到0B填滿,用時(shí)tjQinQB left;
[0055] // 更新 tleft、tcpu、tj〇in-IB-left
[0056] (8. 2) tleft- t left-tj〇in-0B-left;
[0057] (8. 3) t cpu- t cpu+tJoin _0B-left;
[0058] (8. 4)tj〇in_IB_left^ t j〇in_IB_left_^join_0B_left?
[0059] (8.5)Upd
當(dāng)前第1頁1 2 3 4 5 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1