孫 鑒 李戰(zhàn)懷 李 強(qiáng) 張 曉 趙曉南
1(北方民族大學(xué)計(jì)算機(jī)學(xué)院 銀川 750021)2(西北工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 西安 710129)
近年來,傳統(tǒng)磁盤這種低性能的存儲(chǔ)設(shè)備和日益增長的性能需求之間的矛盾日益凸顯,這也成為制約大規(guī)模數(shù)據(jù)中心發(fā)展的重要瓶頸[1-2],尋找開發(fā)新型的高性能高容量存儲(chǔ)系統(tǒng)成為現(xiàn)代云存儲(chǔ)系統(tǒng)廠商的客觀需求.隨著閃存芯片容量的增加和價(jià)格的下降,閃存芯片的部署正從移動(dòng)設(shè)備中走向個(gè)人計(jì)算機(jī)及大規(guī)模數(shù)據(jù)中心,閃存的低延遲、低能耗、抗震性等優(yōu)勢(shì)使得閃存在數(shù)據(jù)中心的應(yīng)用正受到極大的關(guān)注[3].并且隨著閃存轉(zhuǎn)換層(flash translation layer, FTL)算法的完善,SSD控制器制作工藝的成熟,廣大知名硬件廠商,如英特爾、三星電子、東芝、金士頓、IBM以及傳統(tǒng)磁盤公司希捷和西部數(shù)據(jù)都推出了自己的固態(tài)硬盤產(chǎn)品.與傳統(tǒng)磁盤相比,固態(tài)硬盤具有讀寫速度快、能耗低、可靠性高等優(yōu)點(diǎn)[4-5],因此受到工業(yè)界及學(xué)術(shù)界的廣泛關(guān)注,并且廣泛應(yīng)用于數(shù)據(jù)中心.國外各大公司企業(yè)也都計(jì)劃將SSD應(yīng)用于他們本身的存儲(chǔ)系統(tǒng)產(chǎn)品中來降低能耗和提升性能[6-7],國際互聯(lián)網(wǎng)數(shù)據(jù)中心IDC曾經(jīng)預(yù)測(cè),3年內(nèi)IT企業(yè)在固態(tài)硬盤存儲(chǔ)的市場(chǎng)需求量會(huì)達(dá)到300萬塊,可以創(chuàng)造接近12億美元的市場(chǎng)價(jià)值[8].
由于固態(tài)硬盤(solid state disk, SSD)在性能及能耗方面的優(yōu)異表現(xiàn),目前很多學(xué)者將其作為混合存儲(chǔ)的組成部分廣泛應(yīng)用于據(jù)中心[9].雖然SSD在能耗方面較傳統(tǒng)磁盤(hard disk drive, HDD)表現(xiàn)優(yōu)異,通常單盤能耗介于0.1~1 W之間.但由于目前SSD容量很小,面對(duì)大規(guī)模的數(shù)據(jù)存儲(chǔ)應(yīng)用來說,部分使用SSD的混合存儲(chǔ)架構(gòu)依然會(huì)部署大量的固態(tài)磁盤[10],因此其能耗并不能忽略.目前針對(duì)SSD能耗的主流建模是線性能耗建模方法,但本文在測(cè)試中發(fā)現(xiàn)線性建模方法在能耗預(yù)測(cè)精度方面還有較大的欠缺,雖然SSD能耗與讀寫操作的吞吐率在實(shí)驗(yàn)結(jié)果上呈線直觀的線性相關(guān)關(guān)系,但由于SSD的電能消耗是由其內(nèi)部并行度和交錯(cuò)度相關(guān)的功能部件引起的,每個(gè)部件有其自身的能耗范圍,因此從原理上來說,并不應(yīng)該呈現(xiàn)嚴(yán)格的線性相關(guān)關(guān)系.針對(duì)這一問題,本文提出一種基于能耗梯度的固態(tài)磁盤能耗預(yù)估方法,將SSD內(nèi)部的交錯(cuò)性并行性行為作為建立能耗梯度列表的依據(jù),使用測(cè)算結(jié)合的方法獲得固態(tài)硬盤梯度列表,再根據(jù)比例模型去預(yù)測(cè)SSD的即時(shí)能耗.該建模方法所用的采集方法不會(huì)對(duì)系統(tǒng)帶來額外的性能開銷,適用于在線以及離線的SSD能耗預(yù)估.從實(shí)驗(yàn)結(jié)果來看,與傳統(tǒng)的線性能耗模型相比,該建模方法在讀寫操作的能耗預(yù)測(cè)精度上都有顯著的提高.
本文的主要貢獻(xiàn)有3個(gè)方面:
1) 通過實(shí)驗(yàn)驗(yàn)證了線性SSD能耗模型預(yù)測(cè)結(jié)果有較大的誤差.
2) 通過設(shè)計(jì)特定的實(shí)驗(yàn),給出了獲取SSD能耗模型所需參數(shù)的相關(guān)方法,例如物理頁大小以及NANDFLASH內(nèi)部交錯(cuò)性.這種方法同樣可以用來獨(dú)立的分析固態(tài)磁盤的內(nèi)部結(jié)構(gòu)特征.
3) 提出一種基于能耗梯度的SSD能耗建模方法,這種方法包括如何獲取所需的內(nèi)部參數(shù),如何設(shè)計(jì)和測(cè)量所需的能耗梯度列表,以及SSD讀寫能耗的建模方法.實(shí)驗(yàn)表明,這種通用的建模方法適用于目前大部分SSD,并且預(yù)測(cè)結(jié)果比傳統(tǒng)的線性能耗模型有顯著的提高.
Mohan等人[11]提出了一種分析SLC類型SSD的細(xì)粒度能耗模型,并將其與CACTI5.3整合,用于分析內(nèi)存組織架構(gòu).但由于現(xiàn)在MLC,TLC架構(gòu)的SSD在性價(jià)比方面優(yōu)勢(shì)很大,F(xiàn)lashPower無法做到對(duì)主流結(jié)構(gòu)的SSD進(jìn)行能耗預(yù)測(cè).Yoo等人[12]以及Bang等人[13]通過細(xì)間隔時(shí)間粒度下的能耗特征來分析SSD寫操作的相關(guān)特性,包括通道利用策略、頁分配策略、寫操作的簇大小、通道轉(zhuǎn)換延遲等.但該文主要關(guān)注SSD的讀寫原理分析,并沒有構(gòu)建出完整的能耗模型.而部分學(xué)者[14-17]則是在由I/O請(qǐng)求發(fā)生時(shí),從芯片級(jí)別的內(nèi)部工作原理來估計(jì)整體的能耗和性能.而在芯片級(jí)別的模擬器Nand-FlashSim[15]也是從芯片的角度去模擬性能和能耗.
學(xué)者們?cè)谛酒?jí)別的性能或者能耗建模方面進(jìn)行了廣泛的研究,但由于面對(duì)SSD在大規(guī)模的存儲(chǔ)系統(tǒng)中的應(yīng)用來說,芯片級(jí)別的性能及能耗建模具有一定的局限性.其主要原因在于由于閃存控制器及FTL算法的存在,部分大容量閃存在保證一定讀寫性能的前提下還顧及到了閃存壽命等問題.因此閃存盤的能耗并不是簡(jiǎn)單的芯片能耗疊加.
而系統(tǒng)級(jí)的模擬器同樣也可以模擬SSD的讀寫及能耗特征.例如現(xiàn)有的FLASHsim[18]和SSDsim[19]此類的模擬器更關(guān)注于系統(tǒng)級(jí)的性能建模,對(duì)于SSD的能耗僅僅提供簡(jiǎn)單的模型,并不能滿足精確預(yù)測(cè)SSD能耗的需求.
由上述的相關(guān)研究可知,目前無論是通過細(xì)粒度的能耗分析推斷SSD的內(nèi)部讀寫特征還是模擬器模擬的功率模型,其建模方式都具有一定的局限性,在針對(duì)多層單元(multi-level cell, MLC)類型的SSD進(jìn)行能耗預(yù)測(cè)時(shí),采用的是近線性的能耗模型.但是從原理上來說,線性能耗模型并沒有考慮SSD的內(nèi)部工作原理,因此預(yù)測(cè)誤差較大.本文提出一種基于能耗梯度的固態(tài)磁盤能耗預(yù)估方法來解決目前SSD線性能耗模型預(yù)估不準(zhǔn)的問題.本文模型的采集負(fù)載很小,可以應(yīng)用于在線及離線的能耗預(yù)測(cè),同時(shí),預(yù)測(cè)結(jié)果較線性模型有較大的改進(jìn).
對(duì)于很多固態(tài)磁盤廠商來說,其使用的NANDFLASH芯片的內(nèi)部參數(shù)是保密的,只有很少的固態(tài)磁盤廠商在其產(chǎn)品白皮書中公開了其芯片的規(guī)格(例如三星).而對(duì)于SSD的性能及能耗模型構(gòu)建來說,這些參數(shù)是必不可少的.本節(jié)采用特定的負(fù)載工具去測(cè)試在特定設(shè)置下SSD磁盤的整體性能從而推算出建模相關(guān)的主要參數(shù).
在本文實(shí)驗(yàn)中,使用曙光天闊A620r-G服務(wù)器作為客戶端.客戶端通過SAS延長線連接IntelX25-M 160 GB的固態(tài)硬盤,便于附加功率的測(cè)量.客戶端的測(cè)試環(huán)境為X86_64 Ubuntu 14.04.編譯環(huán)境為gcc version 4.8.2.為保證數(shù)據(jù)訪問的準(zhǔn)確性和避免SSD本地更新而引發(fā)的FTL寫映射影響,在有些實(shí)驗(yàn)之前需要應(yīng)用腳本工具對(duì)SSD進(jìn)行全盤擦除.在整個(gè)實(shí)驗(yàn)過程中關(guān)閉SSD緩存,實(shí)驗(yàn)前刷新文件系統(tǒng)的讀寫緩存,以減少緩存對(duì)讀寫的影響.實(shí)驗(yàn)設(shè)備連接如圖1所示:
Fig. 1 The environment of experiment圖1 測(cè)試環(huán)境示意圖
物理頁測(cè)試實(shí)驗(yàn)在IntelX25-M,Kingston 300V等固態(tài)硬盤上按照順序?qū)懭?、每次傳輸塊大小遞增1 KB的方式重復(fù)了關(guān)于頁組的測(cè)定算法及實(shí)驗(yàn),在實(shí)驗(yàn)過程中與文獻(xiàn)[4]不同之處在于每次的塊擦除操作不是復(fù)寫SSD中每一塊的數(shù)據(jù),而是使用ATA擦除命令對(duì)SSD進(jìn)行整體擦除,其主要算法改進(jìn)如算法1所示:
算法1.物理頁探測(cè)算法.
輸入:使用O_DIRECT方式打開的閃存盤F、寫入數(shù)據(jù)的總量Sdata、遞增頁大小Spage、寫入塊大小Sblock;
輸出:SSD物理頁寫延遲.
ProbePageSize(F,Sdata,Spage,Sblock)
Sblock←0;*寫入塊大小初始設(shè)置為0*
SSD_Inite(F);*初始化SSD*
whileSblock≤Sdatado
Sblock←Sblock+Spage;
LSEEK(F,0,SEEK_SET);*設(shè)置文件偏移量*
Start←gettimeofday();
fori=1 tondo
Write_file(F,Sblock)*將數(shù)據(jù)塊Sblock寫入文件F*
FLUSH_CACHE()*刷新緩存*
end for
End←gettimeofday();
end while
在物理頁探測(cè)算法中,為去除FTL中映射算法以及垃圾回收、塊擦除等行為對(duì)測(cè)試的影響,本節(jié)使用SSD_Inite(F)對(duì)SSD進(jìn)行初始化,初始化工作主要是應(yīng)用ATA命令對(duì)SSD中的塊進(jìn)行全擦除;設(shè)置文件訪問模式為O_DIRECT,消除文件系統(tǒng)中的緩存對(duì)測(cè)試的影響;通過本組實(shí)驗(yàn),可以獲取SSD的物理頁大小.測(cè)試結(jié)果如圖2所示:
Fig. 2 The response time of writing operation圖2 寫操作響應(yīng)時(shí)間
從圖2中可以看到,有些特定數(shù)據(jù)塊大小的I/O響應(yīng)時(shí)間明顯低于其余數(shù)據(jù)點(diǎn),其原因在于SSD中物理頁是最小的讀寫單位,寫入的數(shù)據(jù)尋址不是頁大小的整數(shù)倍時(shí),寫入的數(shù)據(jù)橫跨2個(gè)頁面的大小,所以需要額外的頁編程操作;這樣就引起寫操作時(shí)間的增加,因此對(duì)于低響應(yīng)時(shí)間的寫操作集合取最大公約數(shù),可以獲取當(dāng)前SSD的物理頁大小,通過本組測(cè)試,獲取了IntelX25-M的物理頁大小為4 KB.
本節(jié)應(yīng)用了物理頁探測(cè)算法對(duì)多類SSD進(jìn)行測(cè)試,其測(cè)試的結(jié)果符合各自白皮書上所注明的NAND FLASH芯片頁大小.在通過物理頁探測(cè)算法獲取頁大小之后,應(yīng)用FIO測(cè)試工具來測(cè)試和擬合SSD的交錯(cuò)度.交錯(cuò)度測(cè)量偽代碼如算法2所示:
算法2.交錯(cuò)度測(cè)量算法.
輸入:使用O_DIRECT方式打開的閃存盤F、寫入數(shù)據(jù)的總量Sdata、遞增頁大小Spage、寫入塊大小Sblock;
輸出:交錯(cuò)度DInt.
過程:ProbeFLASHIOTime(F,Sblock,Spage,Sblock)
Sdata←256 KB;*設(shè)置最大的寫入塊*
Spage←4 KB;*設(shè)置寫入塊增量*
Sblock←0;*寫入塊起始大小*
whileSblock≤Sdatado
SSD_Inite(F);*初始化SSD*
Sblock←Sblock+Spage;
fori=1 tondo
Init_FIO(block_size=Sblock,ioengine=psync);
Run_FIO→plot;
end for
end while
交錯(cuò)度測(cè)量算法的主要功能是測(cè)試SSD在特定設(shè)置下犧牲部分并行性和交錯(cuò)性后SSD所體現(xiàn)出的寫特征.交錯(cuò)度測(cè)量算法除了進(jìn)行與物理頁探測(cè)算法同樣的初始化設(shè)置外,額外關(guān)閉了SSD本身的自帶緩存,并且在運(yùn)行FIO時(shí)將寫入模式設(shè)置為同步寫.通過對(duì)閃存芯片的并行性和交錯(cuò)性的了解可知,在這種條件下,SSD并不能完全發(fā)揮其通道、晶片、分組的并行度和交錯(cuò)度,寫速率出現(xiàn)了嚴(yán)重的退化.如圖3所示.
圖3可以看出,SSD在犧牲并行度交錯(cuò)度的條件下,整體性能劣化非常嚴(yán)重,但還是具有明顯的特征:以32,64,96,128,160,192等特殊物理頁號(hào)為界,閃存的性能呈現(xiàn)出不同變化特征,也就是說Intel X25-M以32個(gè)物理頁(128 KB)為間隔單位,在每個(gè)128 KB的間隔范圍內(nèi)都呈近線性的性能增長,128 KB的間隔之間呈現(xiàn)出明顯不同的斜率.產(chǎn)生這種結(jié)果的原因在于雖然SSD內(nèi)置的緩存通過ATA命令關(guān)閉,但其晶片和分組依然自帶一定空間的寄存器.這些寄存器可以在數(shù)據(jù)塊小于本身存儲(chǔ)空間時(shí)觸發(fā)部分的交錯(cuò)性來提升性能.隨著數(shù)據(jù)塊大小的增加,由于內(nèi)置寄存器空間有限,當(dāng)數(shù)據(jù)塊大小大于內(nèi)置寄存器空間時(shí),不得不進(jìn)行隊(duì)列等待,此時(shí)在寄存器內(nèi)的數(shù)據(jù)寫入時(shí)可以發(fā)揮SSD部分的交錯(cuò)性,而在等待隊(duì)列外的數(shù)據(jù),在寫入時(shí)則需要額外的頁編程操作.
Fig. 3 The writing features without SSD writing cache圖3 關(guān)閉緩存后的寫特征
交錯(cuò)度測(cè)量算法的實(shí)驗(yàn)結(jié)果是SSD中頁寫入時(shí)間、數(shù)據(jù)傳輸時(shí)間和交錯(cuò)度共同作用的結(jié)果.在關(guān)閉緩存并進(jìn)行寫入頁大小整數(shù)倍的同步寫的條件下,其頁編程行為可以退化為簡(jiǎn)單的隊(duì)列模型,在128 KB寄存器總量?jī)?nèi)的數(shù)據(jù)塊觸發(fā)了SSD的并發(fā)性和交錯(cuò)性,在寄存器外的數(shù)據(jù)塊按照128 KB大小的倍數(shù)來觸發(fā)額外的頁編程操作.按照這種原理分析,設(shè)定SSD在這種特定情況下的寫性能模型,建模參數(shù)如表1所示:
Table 1 The Parameters of Writing Operation表1 寫操作參數(shù)
按照算法2的實(shí)驗(yàn)結(jié)果分析,建立數(shù)據(jù)吞吐率模型:
(1)
其中,各個(gè)參數(shù)的含義在表1中描述.式(1)中i=Sblockmod (Sreg),按照算法2對(duì)SSD進(jìn)行了測(cè)試,并且使用式(1)進(jìn)行了擬合.其結(jié)果如圖4所示:
Fig. 4 The fitting of SSD interleave圖4 SSD的交錯(cuò)度擬合
可以看到整體擬合效果較好,而同時(shí)由圖4的測(cè)試數(shù)據(jù)可以獲得式(1)中3個(gè)重要的時(shí)間參數(shù):Tcmd=0.15 ms;Treg=0.2 ms;Tprg=0.95 ms;這3個(gè)時(shí)間將會(huì)被用于獲取SSD的交錯(cuò)度.
在SSD中并行性是由控制器的通道數(shù)提供的,這個(gè)通道數(shù)通常非常容易獲得,例如IntelX25-M就在自己的銷售廣告中描述了自己10通道的架構(gòu),而一般的SSD盤在拆機(jī)之后也能清晰的看到其通道數(shù)量.因此本文將通道數(shù)所決定的并行度看做是SSD中已知的一個(gè)參數(shù).而在SSD中的交錯(cuò)性是由晶片,分組共同作用的結(jié)果,本文認(rèn)為在SSD中其最大的寫性能發(fā)揮了其最大的并行度和交錯(cuò)度.所以有:
(2)
其中,PA代表并行度,由SSD中的控制器通道所確定;PZ代表頁大小,由算法1獲?。籗max表示SSD的標(biāo)量最大寫吞吐率,由商品信息可以獲得,或者由性能測(cè)試工具IOmeter,F(xiàn)IO等測(cè)試獲得;Tcmd,Treg,Tprg,由算法2獲得.
在本節(jié)中,根據(jù)IntelX25-M的相關(guān)產(chǎn)品參數(shù),將Smax=100 MBps,PA=10等已知參數(shù)以及通過上文2個(gè)算法獲得的PZ=4 KB,Tcmd=0.15 ms;Treg=0.2 ms;Tprg=0.95 ms等數(shù)據(jù)帶入式(2),可以獲得交錯(cuò)度Dintv≈8.
通過對(duì)各種廠商SSD產(chǎn)品的標(biāo)量性能和內(nèi)部結(jié)構(gòu)分析可知,并行度和交錯(cuò)度是影響SSD性能和能耗的主要因素.對(duì)于現(xiàn)有架構(gòu)的SSD產(chǎn)品,都可以通過第2節(jié)中分析內(nèi)部架構(gòu)的方法獲取SSD中關(guān)鍵性的內(nèi)部參數(shù),例如數(shù)據(jù)傳輸時(shí)間、頁編程時(shí)間、內(nèi)部交錯(cuò)性、頁大小等.但在實(shí)際的SSD能耗模型構(gòu)建過程中,雖然發(fā)現(xiàn)SSD的當(dāng)前讀寫性能與SSD當(dāng)前的功率有較為直接的相關(guān)關(guān)系,但這種建模方法誤差較大,無法獲得精確的預(yù)估結(jié)果.本節(jié)的主要工作是在獲取這些參數(shù)的基礎(chǔ)上,嘗試使用SSD實(shí)時(shí)的并行度和交錯(cuò)度來描述SSD的工作狀態(tài),并構(gòu)建SSD的能耗模型.
在確定SSD讀寫能耗與吞吐率的相關(guān)性實(shí)驗(yàn)中,應(yīng)用FIO作為負(fù)載生成工具,采用隨機(jī)寫、順序?qū)?、隨機(jī)讀、順序讀4種負(fù)載模式來測(cè)試SSD的能耗變化特征.在每次測(cè)試初始化過程中,都使用ATA腳本命令刷新SSD的內(nèi)部數(shù)據(jù),保證每次測(cè)試的讀寫不受SSD原有數(shù)據(jù)的影響.
3.1.1 SSD寫操作能耗
本組實(shí)驗(yàn)測(cè)試SSD在寫操作時(shí)能耗與吞吐率之間的相關(guān)關(guān)系,寫操作方式分別為順序?qū)懞碗S機(jī)寫,由于SSD在寫操作時(shí),吞吐率增加非???,為保證實(shí)驗(yàn)結(jié)果具有參考性,寫入數(shù)據(jù)的塊大小為4~64 KB,每次以4 KB為增量,順序?qū)懞碗S機(jī)寫分別收集16次數(shù)據(jù).測(cè)試的具體結(jié)果如圖5、圖6所示:
Fig. 5 Energy consumption of random writing圖5 隨機(jī)寫塊大小與能耗對(duì)應(yīng)關(guān)系
Fig. 6 Energy consumption of sequence writing圖6 順序?qū)憠K大小與能耗對(duì)應(yīng)關(guān)系
圖5、圖6為對(duì)SSD寫操作的能耗測(cè)試數(shù)據(jù),在測(cè)試過程中寫入的塊大小范圍為4~64 KB,增量為4 KB.從圖5、圖6中可以看到,隨機(jī)寫和順序?qū)懙耐掏侣实淖兓厔?shì)并不相同,其原因在于由于順序?qū)懙牡刂范际沁B續(xù)的,可以更有效地利用SSD內(nèi)部的并行性和交錯(cuò)性來提升寫操作的性能,因此其吞吐率的上升趨勢(shì)很迅速.在SSD上的順序?qū)懖僮髟跀?shù)據(jù)塊大小16~24 KB區(qū)間內(nèi)就達(dá)到了SSD的最大寫吞吐率;而隨機(jī)寫操作在數(shù)據(jù)塊大小達(dá)到32 KB左右才會(huì)達(dá)到其最大寫吞吐率.其主要原因在于隨機(jī)寫相比順序?qū)憗碚f,由于寫入數(shù)據(jù)塊的地址不連續(xù),會(huì)讓控制器的頁編程分配效率降低,因此性能上會(huì)低于順序?qū)懖僮?而在SSD能耗方面,無論是隨機(jī)寫還是順序?qū)?,SSD的能耗變化都與SSD吞吐率呈較為緊密的線性關(guān)系.
3.1.2 SSD讀操作能耗
本組實(shí)驗(yàn)測(cè)試SSD在讀操作時(shí)能耗與吞吐率之間的相關(guān)關(guān)系,讀操作方式分別為順序讀和隨機(jī)讀,由于SSD在讀操作時(shí),吞吐率增加非??欤瑸楸WC實(shí)驗(yàn)結(jié)果具有參考性,寫入數(shù)據(jù)的塊大小為4~512 KB,每次增量為上次讀操作塊大小的1倍,順序讀和隨機(jī)讀分別收集8次數(shù)據(jù).測(cè)試的具體結(jié)果如圖7、圖8所示:
Fig. 7 Energy consumption of random reading圖7 隨機(jī)讀塊大小與能耗關(guān)系
Fig. 8 Energy consumption of sequence reading圖8 順序讀塊大小與能耗關(guān)系
圖7、圖8為對(duì)SSD進(jìn)行讀操作的能耗測(cè)試結(jié)果,在測(cè)試過程中讀塊大小范圍為4~512 KB.從圖7、圖8中可以看到,隨機(jī)讀和順序讀的吞吐率的變化趨勢(shì)并不相同.在SSD上的順序讀操作數(shù)據(jù)塊大小56 KB就達(dá)到了SSD的最大讀吞吐率;而隨機(jī)讀操作的數(shù)據(jù)塊在128 KB左右才會(huì)達(dá)到其最大讀吞吐率.其主要原因在于有預(yù)取機(jī)制的存在,在SSD的緩存中順序讀會(huì)比隨機(jī)讀獲得更佳的命中率.在能耗方面,可以發(fā)現(xiàn)無論是隨機(jī)讀還是順序讀,SSD的能耗變化都與SSD當(dāng)前的讀吞吐率呈現(xiàn)明顯的相關(guān)關(guān)系.但由于SSD的讀取機(jī)制跟寫入機(jī)制的不同,SSD的寫入數(shù)據(jù)時(shí)能耗明顯高于讀取數(shù)據(jù)的能耗.
由實(shí)驗(yàn)可以證實(shí)雖然讀寫模式不同,但SSD的能耗與讀寫的吞吐率有較為直接的相關(guān)性,線性能耗模型將此作為SSD粗粒度能耗模型的建模依據(jù).表2是SSD線性能耗模型的建模參數(shù):
Table 2 The Parameters of Linear Model表2 線性能耗模型建模參數(shù)
使用數(shù)學(xué)工具1stOpt對(duì)所需參數(shù)進(jìn)行擬合估值,獲取了所需的3個(gè)參數(shù),擬合效果如圖9所示,最終獲取了IntelX 25-M的線性能耗模型:
P=a×Sw+b×Sr+P0.
(3)
根據(jù)上述的擬合計(jì)算獲得α=8.4×10-4,β=4×10-4,P0=86 mW.這是對(duì)于IntelX25-M粗粒度能耗模型的建模結(jié)果.
Fig. 9 Energy consumption of linear model圖9 線性能耗模型擬合
3.1.3 粗粒度模型的誤差
選取讀負(fù)載和寫負(fù)載來檢測(cè)SSD粗粒度能耗模型的誤差,2種負(fù)載均有FIO生成,讀寫塊大小分布在4~128 KB之間,在負(fù)載測(cè)試過程中不關(guān)閉SSD的緩存.
圖10中的F(X)表示誤差累計(jì)分布函數(shù)值,在這2類特定負(fù)載的模型誤差對(duì)比試驗(yàn)中,每種類型的I/O均使用IOstat采集工具收集了1 000個(gè)能耗數(shù)據(jù)點(diǎn),訪問數(shù)據(jù)塊大小的不同導(dǎo)致不同的讀寫吞吐率,進(jìn)而影響了SSD整體的能耗,誤差收集結(jié)果如圖10所示,對(duì)于寫負(fù)載來說,其80%的誤差集中在5%~10%,而對(duì)于讀負(fù)載,其80%的誤差集中在10%~15%.從實(shí)驗(yàn)結(jié)果中可以看出來,對(duì)于這2類特定負(fù)載,SSD粗粒度模型的預(yù)測(cè)結(jié)果都不夠精確.
Fig. 10 The error CDF of energy consumption model圖10 SSD線性能耗模型誤差的累積分布函數(shù)
從圖5~8的實(shí)驗(yàn)數(shù)據(jù)中可以看出,SSD的能耗與SSD即時(shí)的讀寫吞吐率呈現(xiàn)直觀的線性關(guān)系,但圖9、圖10的實(shí)驗(yàn)結(jié)果表明:?jiǎn)渭兊囊蕾嘢SD讀寫吞吐率與SSD能耗之間的相關(guān)關(guān)系構(gòu)建的線性模型并不能精確的對(duì)其能耗進(jìn)行建模.其主要原因在于SSD的內(nèi)部結(jié)構(gòu)是由芯片、晶片、分組的層次結(jié)構(gòu)構(gòu)成的,而讀寫吞吐率隨著塊大小的增加而提升是因?yàn)閿?shù)據(jù)塊越大越容易充分發(fā)揮SSD內(nèi)部的交錯(cuò)性和并行性,從而提升了讀寫操作的吞吐率;而內(nèi)部交錯(cuò)性和并行性的提升因?yàn)榫⒎纸M大量通電片選而獲得的,因此隨著吞吐率的增加,能耗自然增加.但是由于分組晶片內(nèi)部交錯(cuò)度的上升并不與能耗直接線性相關(guān),因此會(huì)導(dǎo)致線性能耗模型能耗誤差較大.但于SSD的粗粒度模型其優(yōu)勢(shì)是適用性廣泛,建模簡(jiǎn)單,不需要太多的內(nèi)部參數(shù),可用于在一些不太注重精確性的場(chǎng)景下預(yù)估SSD的能耗.但對(duì)于一些對(duì)能耗預(yù)估精確度較高的場(chǎng)景來說,粗粒度能耗模型并不能滿足需求.
由3.1節(jié)的分析可知,SSD的即時(shí)吞吐率與SSD的能耗都與SSD的內(nèi)部并行性和交錯(cuò)性有緊密的聯(lián)系,并且第2節(jié)給出了獲取SSD內(nèi)部并行性、交錯(cuò)性以及頁編程等的重要相關(guān)參數(shù)的方法.同時(shí)也對(duì)各類SSD廠商所生產(chǎn)的固態(tài)硬盤進(jìn)行了相關(guān)的調(diào)查,可以看到在不同并行度、編程時(shí)間等影響下,SSD各自的能耗與性能均不相同,但考慮SSD中所用的廠商芯片雖然各不相同,但其編程時(shí)間非常近似,因此SSD的并行度和交錯(cuò)度是固態(tài)磁盤主要性能跟能耗的影響因素.
根據(jù)SSD工作原理的解析,可以知道其性能及能耗與其工作時(shí)的通道間并行及NAND FLASH片內(nèi)交錯(cuò)狀態(tài)是息息相關(guān)的.根據(jù)算法2中獲取的訪問時(shí)間參數(shù)及推導(dǎo)出的NAND FLASH理論最大交錯(cuò)度對(duì)SSD的實(shí)時(shí)能耗進(jìn)行建模,建模主要思路是將NAND FLASH芯片作為耗能的基本原件,計(jì)算出NAND FLASH芯片中每一交錯(cuò)度分別對(duì)應(yīng)的讀寫吞吐率,稱之為該交錯(cuò)度的標(biāo)準(zhǔn)吞吐率,然后根據(jù)實(shí)驗(yàn)獲取的能耗及性能數(shù)值,找到與標(biāo)準(zhǔn)吞吐率相對(duì)應(yīng)的能耗數(shù)值,將此成為SSD的能耗梯度.對(duì)于SSD一般的讀寫訪問來說,其吞吐率雖然沒有呈現(xiàn)特定的規(guī)律,但是由于訪問塊大小及訪問頻度的原因,導(dǎo)致其吞吐率在各個(gè)交錯(cuò)度的標(biāo)準(zhǔn)吞吐率之間變化.表3、表4是通過負(fù)載工具FIO及能耗分析儀獲取的IntelX25-M寫操作的各個(gè)交錯(cuò)度的標(biāo)準(zhǔn)吞吐率及能耗梯度值,其中BW表示吞吐率,Dint表示交錯(cuò)度:
Table 3 The Energy Consumption Gradient of Writing 表3 IntelX25-M寫操作的能耗梯度
Table 4 The Energy ConsumptionGradient of Reading 表4 IntelX25-M讀操作的能耗梯度
按照同樣的方法,也獲取了IntelX25-M的讀操作各個(gè)交錯(cuò)度的標(biāo)準(zhǔn)吞吐率及能耗梯度值.
本文所建立的SSD梯度能耗模型是面向在一定單位時(shí)間內(nèi)讀寫特征不發(fā)生劇烈變化的負(fù)載進(jìn)行的建模.因此假定能耗發(fā)生變化的原因是由于當(dāng)前的訪問模式特征導(dǎo)致了當(dāng)前的瞬時(shí)吞吐率在標(biāo)準(zhǔn)吞吐率之間占的比重不同.簡(jiǎn)單起見,認(rèn)為其按照一定比率分布在相鄰的2個(gè)標(biāo)準(zhǔn)讀寫吞吐率中.按照這種思路建立能耗比例模型如下:
對(duì)于即時(shí)吞吐率S0,有S0=Wi×Si+Wi+1×Si+1其中S0介于Si,Si+1之間.Wi與Wi+1分別表示當(dāng)前負(fù)載在2個(gè)標(biāo)準(zhǔn)吞吐率之間所占的比重.并且有Wi+Wi+1=1.由此可以獲得當(dāng)前SSD的即時(shí)功率為
(4)
式(4)中,Si,Si+1可以通過負(fù)載采集工具獲得,目前Linux環(huán)境下的采集工具種類較多,例如blktrace,IOtsate Kprobe等在這里選取對(duì)Linux系統(tǒng)帶來的額外負(fù)載最小的采集工具IOstate進(jìn)行采集,采集內(nèi)容包括讀寫塊大小,讀寫吞吐率等參數(shù),圖11是模型預(yù)測(cè)能耗與實(shí)際SSD寫操作能耗的對(duì)比.
Fig. 11 The energy consumption of gradient model圖11 SSD能耗梯度模型預(yù)測(cè)結(jié)果
圖11中橫坐標(biāo)為寫操作的樣本數(shù)量,在本組測(cè)試中,共采集了600個(gè)寫操作樣本,這600個(gè)寫操作的塊大小從4~32 KB,均由FIO生成,寫操作模式為psync,線程數(shù)為1.在圖11中,虛線為預(yù)測(cè)能耗,實(shí)線為實(shí)測(cè)能耗.可以看出預(yù)測(cè)能耗和實(shí)測(cè)能耗的變化趨勢(shì)一致,整體數(shù)據(jù)相吻合,在有些孤立中預(yù)測(cè)差異度較大,其原因在于在這些樣本點(diǎn)中,IOSTATE檢測(cè)到的寫速率波動(dòng)較大,而SSD實(shí)測(cè)能耗的變化具有一定的滯后性,因此在這些樣本中預(yù)測(cè)精度會(huì)受到一定的影響.對(duì)于SSD的寫操作來說,模型預(yù)測(cè)精度的累計(jì)函數(shù)(CDF)如圖12所示:
Fig. 12 The writing error CDF of energy gradient model圖12 SSD能耗梯度模型寫操作誤差的累計(jì)分布圖
在圖12中,虛線為能耗梯度模型預(yù)測(cè)精度,實(shí)線為線性能耗模型預(yù)測(cè)精度,F(xiàn)(X)表示誤差累計(jì)分布函數(shù)值.可以看出,SSD能耗梯度模型在寫操作方面與線性模型相比精度有很大的提高,線性模型中10%的誤差在5%以內(nèi),而對(duì)SSD能耗模型改進(jìn)后,可以將精度提升到80%的誤差在5%以內(nèi),因此使用SSD能耗模型對(duì)SSD的寫操作進(jìn)行預(yù)測(cè)可以獲得較為理想的精度.
同時(shí),本節(jié)也對(duì)SSD能耗梯度模型在讀操作方面進(jìn)行比較,圖13為模型預(yù)測(cè)能耗與實(shí)際SSD讀操作能耗的對(duì)比:
Fig. 13 The energy consumption of gradient model圖13 SSD能耗梯度模型預(yù)測(cè)結(jié)果
圖13中給出了SSD能耗梯度模型預(yù)測(cè)能耗與實(shí)測(cè)能耗的數(shù)據(jù)對(duì)比,其中橫坐標(biāo)為讀操作的樣本數(shù)量.在該測(cè)試中,共采集了140個(gè)讀操作樣本,讀操作的塊大小范圍為4~128 KB,均由FIO生成,讀模式為psync,線程數(shù)為1.在圖13中,虛線為預(yù)測(cè)能耗,實(shí)線為實(shí)測(cè)能耗.可以看出預(yù)測(cè)能耗和實(shí)測(cè)能耗的變化趨勢(shì)整體一致.對(duì)于SSD的讀操作來說,模型預(yù)測(cè)精度的累計(jì)函數(shù)(CDF)如圖14所示:
Fig. 14 Thereading error CDF of energy gradient model圖14 SSD能耗梯度模型讀操作的累計(jì)分布圖
在圖14中,虛線為能耗梯度模型預(yù)測(cè)精度,實(shí)線為線性能耗模型預(yù)測(cè)精度.從圖14中可以看出:給出的SSD能耗模型誤差與線性模型誤差相比精度有很大的提高,線性模型中20%的樣本誤差在10%以內(nèi),而經(jīng)過給出的SSD能耗梯度模型可以將精度提升到90%的樣本誤差在10%以內(nèi),因此使用SSD能耗模型對(duì)SSD的讀操作進(jìn)行預(yù)測(cè)同樣可以獲得較為理想的精度.
本文描述了SSD一般性的物理結(jié)構(gòu)特征,分析了SSD中與性能相關(guān)的并行性和交錯(cuò)性的特點(diǎn).為了給出一般性的SSD能耗建模方法,設(shè)計(jì)和實(shí)現(xiàn)了SSD內(nèi)部重要物理參數(shù)的測(cè)試和提取.驗(yàn)證了SSD能耗與性能的線性關(guān)系,并通過測(cè)試證明了線性能耗模型在預(yù)測(cè)精度上的不足.為保證SSD更高精度的能耗預(yù)測(cè),提出了一種基于能耗梯度的SSD能耗建模方法.該方法在獲取SSD內(nèi)部重要物理參數(shù)的基礎(chǔ)上,根據(jù)測(cè)算結(jié)合的方式獲取SSD的能耗梯度列表,然后根據(jù)SSD的即時(shí)能耗,結(jié)合能耗梯度列表,以比例模型的方法來預(yù)測(cè)能耗.通過實(shí)驗(yàn)可以證實(shí),該建模方法可以有效的獲得精度較高的SSD能耗模型,能耗預(yù)測(cè)結(jié)果吻合度比較好,并且其能耗預(yù)測(cè)結(jié)果與線性能耗模型相比,將整體誤差降低到10%以內(nèi).