近年来,传统磁盘这种低性能的存储设备和日益增长的性能需求之间的矛盾日益凸显,这也成为制约大规模数据中心发展的重要瓶颈[1-2],寻找开发新型的高性能高容量存储系统成为现代云存储系统厂商的客观需求.随着闪存芯片容量的增加和价格的下降,闪存芯片的部署正从移动设备中走向个人计算机及大规模数据中心,闪存的低延迟、低能耗、抗震性等优势使得闪存在数据中心的应用正受到极大的关注[3].并且随着闪存转换层(flash translation layer, FTL)算法的完善,SSD控制器制作工艺的成熟,广大知名硬件厂商,如英特尔、三星电子、东芝、金士顿、IBM以及传统磁盘公司希捷和西部数据都推出了自己的固态硬盘产品.与传统磁盘相比,固态硬盘具有读写速度快、能耗低、可靠性高等优点[4-5],因此受到工业界及学术界的广泛关注,并且广泛应用于数据中心.国外各大公司企业也都计划将SSD应用于他们本身的存储系统产品中来降低能耗和提升性能[6-7],国际互联网数据中心IDC曾经预测,3年内IT企业在固态硬盘存储的市场需求量会达到300万块,可以创造接近12亿美元的市场价值[8].
由于固态硬盘(solid state disk, SSD)在性能及能耗方面的优异表现,目前很多学者将其作为混合存储的组成部分广泛应用于据中心[9].虽然SSD在能耗方面较传统磁盘(hard disk drive, HDD)表现优异,通常单盘能耗介于0.1~1 W之间.但由于目前SSD容量很小,面对大规模的数据存储应用来说,部分使用SSD的混合存储架构依然会部署大量的固态磁盘[10],因此其能耗并不能忽略.目前针对SSD能耗的主流建模是线性能耗建模方法,但本文在测试中发现线性建模方法在能耗预测精度方面还有较大的欠缺,虽然SSD能耗与读写操作的吞吐率在实验结果上呈线直观的线性相关关系,但由于SSD的电能消耗是由其内部并行度和交错度相关的功能部件引起的,每个部件有其自身的能耗范围,因此从原理上来说,并不应该呈现严格的线性相关关系.针对这一问题,本文提出一种基于能耗梯度的固态磁盘能耗预估方法,将SSD内部的交错性并行性行为作为建立能耗梯度列表的依据,使用测算结合的方法获得固态硬盘梯度列表,再根据比例模型去预测SSD的即时能耗.该建模方法所用的采集方法不会对系统带来额外的性能开销,适用于在线以及离线的SSD能耗预估.从实验结果来看,与传统的线性能耗模型相比,该建模方法在读写操作的能耗预测精度上都有显著的提高.
本文的主要贡献有3个方面:
1) 通过实验验证了线性SSD能耗模型预测结果有较大的误差.
2) 通过设计特定的实验,给出了获取SSD能耗模型所需参数的相关方法,例如物理页大小以及NANDFLASH内部交错性.这种方法同样可以用来独立的分析固态磁盘的内部结构特征.
3) 提出一种基于能耗梯度的SSD能耗建模方法,这种方法包括如何获取所需的内部参数,如何设计和测量所需的能耗梯度列表,以及SSD读写能耗的建模方法.实验表明,这种通用的建模方法适用于目前大部分SSD,并且预测结果比传统的线性能耗模型有显著的提高.
Mohan等人[11]提出了一种分析SLC类型SSD的细粒度能耗模型,并将其与CACTI5.3整合,用于分析内存组织架构.但由于现在MLC,TLC架构的SSD在性价比方面优势很大,FlashPower无法做到对主流结构的SSD进行能耗预测.Yoo等人[12]以及Bang等人[13]通过细间隔时间粒度下的能耗特征来分析SSD写操作的相关特性,包括通道利用策略、页分配策略、写操作的簇大小、通道转换延迟等.但该文主要关注SSD的读写原理分析,并没有构建出完整的能耗模型.而部分学者[14-17]则是在由I/O请求发生时,从芯片级别的内部工作原理来估计整体的能耗和性能.而在芯片级别的模拟器Nand-FlashSim[15]也是从芯片的角度去模拟性能和能耗.
学者们在芯片级别的性能或者能耗建模方面进行了广泛的研究,但由于面对SSD在大规模的存储系统中的应用来说,芯片级别的性能及能耗建模具有一定的局限性.其主要原因在于由于闪存控制器及FTL算法的存在,部分大容量闪存在保证一定读写性能的前提下还顾及到了闪存寿命等问题.因此闪存盘的能耗并不是简单的芯片能耗叠加.
而系统级的模拟器同样也可以模拟SSD的读写及能耗特征.例如现有的FLASHsim[18]和SSDsim[19]此类的模拟器更关注于系统级的性能建模,对于SSD的能耗仅仅提供简单的模型,并不能满足精确预测SSD能耗的需求.
由上述的相关研究可知,目前无论是通过细粒度的能耗分析推断SSD的内部读写特征还是模拟器模拟的功率模型,其建模方式都具有一定的局限性,在针对多层单元(multi-level cell, MLC)类型的SSD进行能耗预测时,采用的是近线性的能耗模型.但是从原理上来说,线性能耗模型并没有考虑SSD的内部工作原理,因此预测误差较大.本文提出一种基于能耗梯度的固态磁盘能耗预估方法来解决目前SSD线性能耗模型预估不准的问题.本文模型的采集负载很小,可以应用于在线及离线的能耗预测,同时,预测结果较线性模型有较大的改进.
对于很多固态磁盘厂商来说,其使用的NANDFLASH芯片的内部参数是保密的,只有很少的固态磁盘厂商在其产品白皮书中公开了其芯片的规格(例如三星).而对于SSD的性能及能耗模型构建来说,这些参数是必不可少的.本节采用特定的负载工具去测试在特定设置下SSD磁盘的整体性能从而推算出建模相关的主要参数.
在本文实验中,使用曙光天阔A620r-G服务器作为客户端.客户端通过SAS延长线连接IntelX25-M 160 GB的固态硬盘,便于附加功率的测量.客户端的测试环境为X86_64 Ubuntu 14.04.编译环境为gcc version 4.8.2.为保证数据访问的准确性和避免SSD本地更新而引发的FTL写映射影响,在有些实验之前需要应用脚本工具对SSD进行全盘擦除.在整个实验过程中关闭SSD缓存,实验前刷新文件系统的读写缓存,以减少缓存对读写的影响.实验设备连接如图1所示:
Fig. 1 The environment of experiment
图1 测试环境示意图
物理页测试实验在IntelX25-M,Kingston 300V等固态硬盘上按照顺序写入、每次传输块大小递增1 KB的方式重复了关于页组的测定算法及实验,在实验过程中与文献[4]不同之处在于每次的块擦除操作不是复写SSD中每一块的数据,而是使用ATA擦除命令对SSD进行整体擦除,其主要算法改进如算法1所示:
算法1. 物理页探测算法.
输入:使用O_DIRECT方式打开的闪存盘F、写入数据的总量Sdata、递增页大小Spage、写入块大小Sblock;
输出:SSD物理页写延迟.
ProbePageSize(F,Sdata,Spage,Sblock)
Sblock←0;
*写入块大小初始设置为0*
SSD_Inite(F);
*初始化SSD*
while Sblock≤Sdata do
Sblock←Sblock+Spage;
LSEEK(F,0,SEEK_SET);
*设置文件偏移量*
Start←gettimeofday();
for i=1 to n do
Write_file (F,Sblock)
*将数据块Sblock写入文件F*
FLUSH_CACHE()
*刷新缓存*
end for
End←gettimeofday();
end while
在物理页探测算法中,为去除FTL中映射算法以及垃圾回收、块擦除等行为对测试的影响,本节使用SSD_Inite(F)对SSD进行初始化,初始化工作主要是应用ATA命令对SSD中的块进行全擦除;设置文件访问模式为O_DIRECT,消除文件系统中的缓存对测试的影响;通过本组实验,可以获取SSD的物理页大小.测试结果如图2所示:
Fig. 2 The response time of writing operation
图2 写操作响应时间
从图2中可以看到,有些特定数据块大小的I/O响应时间明显低于其余数据点,其原因在于SSD中物理页是最小的读写单位,写入的数据寻址不是页大小的整数倍时,写入的数据横跨2个页面的大小,所以需要额外的页编程操作;这样就引起写操作时间的增加,因此对于低响应时间的写操作集合取最大公约数,可以获取当前SSD的物理页大小,通过本组测试,获取了IntelX25-M的物理页大小为4 KB.
本节应用了物理页探测算法对多类SSD进行测试,其测试的结果符合各自白皮书上所注明的NAND FLASH芯片页大小.在通过物理页探测算法获取页大小之后,应用FIO测试工具来测试和拟合SSD的交错度.交错度测量伪代码如算法2所示:
算法2. 交错度测量算法.
输入:使用O_DIRECT方式打开的闪存盘F、写入数据的总量Sdata、递增页大小Spage、写入块大小Sblock;
输出:交错度DInt.
过程:ProbeFLASHIOTime(F,Sblock,Spage,Sblock)
Sdata←256 KB;
*设置最大的写入块*
Spage←4 KB;
*设置写入块增量*
Sblock←0;
*写入块起始大小*
while Sblock≤Sdata do
SSD_Inite(F);
*初始化SSD*
Sblock←Sblock+Spage;
for i=1 to n do
Init_FIO(block_size=Sblock,ioengine=psync);
Run_FIO→plot;
end for
end while
交错度测量算法的主要功能是测试SSD在特定设置下牺牲部分并行性和交错性后SSD所体现出的写特征.交错度测量算法除了进行与物理页探测算法同样的初始化设置外,额外关闭了SSD本身的自带缓存,并且在运行FIO时将写入模式设置为同步写.通过对闪存芯片的并行性和交错性的了解可知,在这种条件下,SSD并不能完全发挥其通道、晶片、分组的并行度和交错度,写速率出现了严重的退化.如图3所示.
图3可以看出,SSD在牺牲并行度交错度的条件下,整体性能劣化非常严重,但还是具有明显的特征:以32,64,96,128,160,192等特殊物理页号为界,闪存的性能呈现出不同变化特征,也就是说Intel X25-M以32个物理页(128 KB)为间隔单位,在每个128 KB的间隔范围内都呈近线性的性能增长,128 KB的间隔之间呈现出明显不同的斜率.产生这种结果的原因在于虽然SSD内置的缓存通过ATA命令关闭,但其晶片和分组依然自带一定空间的寄存器.这些寄存器可以在数据块小于本身存储空间时触发部分的交错性来提升性能.随着数据块大小的增加,由于内置寄存器空间有限,当数据块大小大于内置寄存器空间时,不得不进行队列等待,此时在寄存器内的数据写入时可以发挥SSD部分的交错性,而在等待队列外的数据,在写入时则需要额外的页编程操作.
Fig. 3 The writing features without SSD writing cache
图3 关闭缓存后的写特征
交错度测量算法的实验结果是SSD中页写入时间、数据传输时间和交错度共同作用的结果.在关闭缓存并进行写入页大小整数倍的同步写的条件下,其页编程行为可以退化为简单的队列模型,在128 KB寄存器总量内的数据块触发了SSD的并发性和交错性,在寄存器外的数据块按照128 KB大小的倍数来触发额外的页编程操作.按照这种原理分析,设定SSD在这种特定情况下的写性能模型,建模参数如表1所示:
Table 1 The Parameters of Writing Operation
表1 写操作参数
VariableDescriptionTcmdCommand transmission timeTregTransfer-in of registerTprgProgram time TIOTIO=Treg+Tcmd+TprgSThroughputSblockBlock sizeNIntegral multiple of the page size
按照算法2的实验结果分析,建立数据吞吐率模型:
![]()
(1)
其中,各个参数的含义在表1中描述.式(1)中i=Sblock mod (Sreg),按照算法2对SSD进行了测试,并且使用式(1)进行了拟合.其结果如图4所示:
Fig. 4 The fitting of SSD interleave
图4 SSD的交错度拟合
可以看到整体拟合效果较好,而同时由图4的测试数据可以获得式(1)中3个重要的时间参数:Tcmd=0.15 ms;Treg=0.2 ms;Tprg=0.95 ms;这3个时间将会被用于获取SSD的交错度.
在SSD中并行性是由控制器的通道数提供的,这个通道数通常非常容易获得,例如IntelX25-M就在自己的销售广告中描述了自己10通道的架构,而一般的SSD盘在拆机之后也能清晰的看到其通道数量.因此本文将通道数所决定的并行度看做是SSD中已知的一个参数.而在SSD中的交错性是由晶片,分组共同作用的结果,本文认为在SSD中其最大的写性能发挥了其最大的并行度和交错度.所以有:
![]()
(2)
其中,PA代表并行度,由SSD中的控制器通道所确定;PZ代表页大小,由算法1获取;Smax表示SSD的标量最大写吞吐率,由商品信息可以获得,或者由性能测试工具IOmeter,FIO等测试获得;Tcmd,Treg,Tprg,由算法2获得.
在本节中,根据IntelX25-M的相关产品参数,将Smax=100 MBps,PA=10等已知参数以及通过上文2个算法获得的PZ=4 KB,Tcmd=0.15 ms;Treg=0.2 ms;Tprg=0.95 ms等数据带入式(2),可以获得交错度Dintv≈8.
通过对各种厂商SSD产品的标量性能和内部结构分析可知,并行度和交错度是影响SSD性能和能耗的主要因素.对于现有架构的SSD产品,都可以通过第2节中分析内部架构的方法获取SSD中关键性的内部参数,例如数据传输时间、页编程时间、内部交错性、页大小等.但在实际的SSD能耗模型构建过程中,虽然发现SSD的当前读写性能与SSD当前的功率有较为直接的相关关系,但这种建模方法误差较大,无法获得精确的预估结果.本节的主要工作是在获取这些参数的基础上,尝试使用SSD实时的并行度和交错度来描述SSD的工作状态,并构建SSD的能耗模型.
在确定SSD读写能耗与吞吐率的相关性实验中,应用FIO作为负载生成工具,采用随机写、顺序写、随机读、顺序读4种负载模式来测试SSD的能耗变化特征.在每次测试初始化过程中,都使用ATA脚本命令刷新SSD的内部数据,保证每次测试的读写不受SSD原有数据的影响.
3.1.1 SSD写操作能耗
本组实验测试SSD在写操作时能耗与吞吐率之间的相关关系,写操作方式分别为顺序写和随机写,由于SSD在写操作时,吞吐率增加非常快,为保证实验结果具有参考性,写入数据的块大小为4~64 KB,每次以4 KB为增量,顺序写和随机写分别收集16次数据.测试的具体结果如图5、图6所示:
Fig. 5 Energy consumption of random writing
图5 随机写块大小与能耗对应关系
Fig. 6 Energy consumption of sequence writing
图6 顺序写块大小与能耗对应关系
图5、图6为对SSD写操作的能耗测试数据,在测试过程中写入的块大小范围为4~64 KB,增量为4 KB.从图5、图6中可以看到,随机写和顺序写的吞吐率的变化趋势并不相同,其原因在于由于顺序写的地址都是连续的,可以更有效地利用SSD内部的并行性和交错性来提升写操作的性能,因此其吞吐率的上升趋势很迅速.在SSD上的顺序写操作在数据块大小16~24 KB区间内就达到了SSD的最大写吞吐率;而随机写操作在数据块大小达到32 KB左右才会达到其最大写吞吐率.其主要原因在于随机写相比顺序写来说,由于写入数据块的地址不连续,会让控制器的页编程分配效率降低,因此性能上会低于顺序写操作.而在SSD能耗方面,无论是随机写还是顺序写,SSD的能耗变化都与SSD吞吐率呈较为紧密的线性关系.
3.1.2 SSD读操作能耗
本组实验测试SSD在读操作时能耗与吞吐率之间的相关关系,读操作方式分别为顺序读和随机读,由于SSD在读操作时,吞吐率增加非常快,为保证实验结果具有参考性,写入数据的块大小为4~512 KB,每次增量为上次读操作块大小的1倍,顺序读和随机读分别收集8次数据.测试的具体结果如图7、图8所示:
Fig. 7 Energy consumption of random reading
图7 随机读块大小与能耗关系
Fig. 8 Energy consumption of sequence reading
图8 顺序读块大小与能耗关系
图7、图8为对SSD进行读操作的能耗测试结果,在测试过程中读块大小范围为4~512 KB.从图7、图8中可以看到,随机读和顺序读的吞吐率的变化趋势并不相同.在SSD上的顺序读操作数据块大小56 KB就达到了SSD的最大读吞吐率;而随机读操作的数据块在128 KB左右才会达到其最大读吞吐率.其主要原因在于有预取机制的存在,在SSD的缓存中顺序读会比随机读获得更佳的命中率.在能耗方面,可以发现无论是随机读还是顺序读,SSD的能耗变化都与SSD当前的读吞吐率呈现明显的相关关系.但由于SSD的读取机制跟写入机制的不同,SSD的写入数据时能耗明显高于读取数据的能耗.
由实验可以证实虽然读写模式不同,但SSD的能耗与读写的吞吐率有较为直接的相关性,线性能耗模型将此作为SSD粗粒度能耗模型的建模依据.表2是SSD线性能耗模型的建模参数:
Table 2 The Parameters of Linear Model
表2 线性能耗模型建模参数
VariableDescriptionP0Constant powerαCoefficient of writing powerβCoefficient of reading powerSwThroughput of writingSrThroughput of readingPSSD power
使用数学工具1stOpt对所需参数进行拟合估值,获取了所需的3个参数,拟合效果如图9所示,最终获取了IntelX 25-M的线性能耗模型:
P=a×Sw+b×Sr+P0.
(3)
根据上述的拟合计算获得α=8.4×10-4,β=4×10-4,P0=86 mW.这是对于IntelX25-M粗粒度能耗模型的建模结果.
Fig. 9 Energy consumption of linear model
图9 线性能耗模型拟合
3.1.3 粗粒度模型的误差
选取读负载和写负载来检测SSD粗粒度能耗模型的误差,2种负载均有FIO生成,读写块大小分布在4~128 KB之间,在负载测试过程中不关闭SSD的缓存.
图10中的F(X)表示误差累计分布函数值,在这2类特定负载的模型误差对比试验中,每种类型的I/O均使用IOstat采集工具收集了1 000个能耗数据点,访问数据块大小的不同导致不同的读写吞吐率,进而影响了SSD整体的能耗,误差收集结果如图10所示,对于写负载来说,其80%的误差集中在5%~10%,而对于读负载,其80%的误差集中在10%~15%.从实验结果中可以看出来,对于这2类特定负载,SSD粗粒度模型的预测结果都不够精确.
Fig. 10 The error CDF of energy consumption model
图10 SSD线性能耗模型误差的累积分布函数
从图5~8的实验数据中可以看出,SSD的能耗与SSD即时的读写吞吐率呈现直观的线性关系,但图9、图10的实验结果表明:单纯的依赖SSD读写吞吐率与SSD能耗之间的相关关系构建的线性模型并不能精确的对其能耗进行建模.其主要原因在于SSD的内部结构是由芯片、晶片、分组的层次结构构成的,而读写吞吐率随着块大小的增加而提升是因为数据块越大越容易充分发挥SSD内部的交错性和并行性,从而提升了读写操作的吞吐率;而内部交错性和并行性的提升因为晶片、分组大量通电片选而获得的,因此随着吞吐率的增加,能耗自然增加.但是由于分组晶片内部交错度的上升并不与能耗直接线性相关,因此会导致线性能耗模型能耗误差较大.但于SSD的粗粒度模型其优势是适用性广泛,建模简单,不需要太多的内部参数,可用于在一些不太注重精确性的场景下预估SSD的能耗.但对于一些对能耗预估精确度较高的场景来说,粗粒度能耗模型并不能满足需求.
由3.1节的分析可知,SSD的即时吞吐率与SSD的能耗都与SSD的内部并行性和交错性有紧密的联系,并且第2节给出了获取SSD内部并行性、交错性以及页编程等的重要相关参数的方法.同时也对各类SSD厂商所生产的固态硬盘进行了相关的调查,可以看到在不同并行度、编程时间等影响下,SSD各自的能耗与性能均不相同,但考虑SSD中所用的厂商芯片虽然各不相同,但其编程时间非常近似,因此SSD的并行度和交错度是固态磁盘主要性能跟能耗的影响因素.
根据SSD工作原理的解析,可以知道其性能及能耗与其工作时的通道间并行及NAND FLASH片内交错状态是息息相关的.根据算法2中获取的访问时间参数及推导出的NAND FLASH理论最大交错度对SSD的实时能耗进行建模,建模主要思路是将NAND FLASH芯片作为耗能的基本原件,计算出NAND FLASH芯片中每一交错度分别对应的读写吞吐率,称之为该交错度的标准吞吐率,然后根据实验获取的能耗及性能数值,找到与标准吞吐率相对应的能耗数值,将此成为SSD的能耗梯度.对于SSD一般的读写访问来说,其吞吐率虽然没有呈现特定的规律,但是由于访问块大小及访问频度的原因,导致其吞吐率在各个交错度的标准吞吐率之间变化.表3、表4是通过负载工具FIO及能耗分析仪获取的IntelX25-M写操作的各个交错度的标准吞吐率及能耗梯度值,其中BW表示吞吐率,Dint表示交错度:
Table 3 The Energy Consumption Gradient of Writing
表3 IntelX25-M写操作的能耗梯度
DintSMethod(Writing)Pgra∕mW13060KB Without Cache1232484KB With Cache138360120KB Without Cache1514688KB With Cache167574256KB Without Cache16967812KB With Cache17578216KB With Cache17888520KB With Cache179
Table 4 The Energy ConsumptionGradient of Reading
表4 IntelX25-M读操作的能耗梯度
DintSMethod(Reading)Pgra∕mW1808KB With Cache68212516KB With Cache69315228KB With Cache69417236KB With Cache72518640KB With Cache72619652KB With Cache73720564KB With Cache74821180KB With Cache75
按照同样的方法,也获取了IntelX25-M的读操作各个交错度的标准吞吐率及能耗梯度值.
本文所建立的SSD梯度能耗模型是面向在一定单位时间内读写特征不发生剧烈变化的负载进行的建模.因此假定能耗发生变化的原因是由于当前的访问模式特征导致了当前的瞬时吞吐率在标准吞吐率之间占的比重不同.简单起见,认为其按照一定比率分布在相邻的2个标准读写吞吐率中.按照这种思路建立能耗比例模型如下:
对于即时吞吐率S0,有S0=Wi×Si+Wi+1×Si+1其中S0介于Si,Si+1之间.Wi与Wi+1分别表示当前负载在2个标准吞吐率之间所占的比重.并且有Wi+Wi+1=1.由此可以获得当前SSD的即时功率为
![]()
(4)
式(4)中,Si,Si+1可以通过负载采集工具获得,目前Linux环境下的采集工具种类较多,例如blktrace,IOtsate Kprobe等在这里选取对Linux系统带来的额外负载最小的采集工具IOstate进行采集,采集内容包括读写块大小,读写吞吐率等参数,图11是模型预测能耗与实际SSD写操作能耗的对比.
Fig. 11 The energy consumption of gradient model
图11 SSD能耗梯度模型预测结果
图11中横坐标为写操作的样本数量,在本组测试中,共采集了600个写操作样本,这600个写操作的块大小从4~32 KB,均由FIO生成,写操作模式为psync,线程数为1.在图11中,虚线为预测能耗,实线为实测能耗.可以看出预测能耗和实测能耗的变化趋势一致,整体数据相吻合,在有些孤立中预测差异度较大,其原因在于在这些样本点中,IOSTATE检测到的写速率波动较大,而SSD实测能耗的变化具有一定的滞后性,因此在这些样本中预测精度会受到一定的影响.对于SSD的写操作来说,模型预测精度的累计函数(CDF)如图12所示:
Fig. 12 The writing error CDF of energy gradient model
图12 SSD能耗梯度模型写操作误差的累计分布图
在图12中,虚线为能耗梯度模型预测精度,实线为线性能耗模型预测精度,F(X)表示误差累计分布函数值.可以看出,SSD能耗梯度模型在写操作方面与线性模型相比精度有很大的提高,线性模型中10%的误差在5%以内,而对SSD能耗模型改进后,可以将精度提升到80%的误差在5%以内,因此使用SSD能耗模型对SSD的写操作进行预测可以获得较为理想的精度.
同时,本节也对SSD能耗梯度模型在读操作方面进行比较,图13为模型预测能耗与实际SSD读操作能耗的对比:
Fig. 13 The energy consumption of gradient model
图13 SSD能耗梯度模型预测结果
图13中给出了SSD能耗梯度模型预测能耗与实测能耗的数据对比,其中横坐标为读操作的样本数量.在该测试中,共采集了140个读操作样本,读操作的块大小范围为4~128 KB,均由FIO生成,读模式为psync,线程数为1.在图13中,虚线为预测能耗,实线为实测能耗.可以看出预测能耗和实测能耗的变化趋势整体一致.对于SSD的读操作来说,模型预测精度的累计函数(CDF)如图14所示:
Fig. 14 Thereading error CDF of energy gradient model
图14 SSD能耗梯度模型读操作的累计分布图
在图14中,虚线为能耗梯度模型预测精度,实线为线性能耗模型预测精度.从图14中可以看出:给出的SSD能耗模型误差与线性模型误差相比精度有很大的提高,线性模型中20%的样本误差在10%以内,而经过给出的SSD能耗梯度模型可以将精度提升到90%的样本误差在10%以内,因此使用SSD能耗模型对SSD的读操作进行预测同样可以获得较为理想的精度.
本文描述了SSD一般性的物理结构特征,分析了SSD中与性能相关的并行性和交错性的特点.为了给出一般性的SSD能耗建模方法,设计和实现了SSD内部重要物理参数的测试和提取.验证了SSD能耗与性能的线性关系,并通过测试证明了线性能耗模型在预测精度上的不足.为保证SSD更高精度的能耗预测,提出了一种基于能耗梯度的SSD能耗建模方法.该方法在获取SSD内部重要物理参数的基础上,根据测算结合的方式获取SSD的能耗梯度列表,然后根据SSD的即时能耗,结合能耗梯度列表,以比例模型的方法来预测能耗.通过实验可以证实,该建模方法可以有效的获得精度较高的SSD能耗模型,能耗预测结果吻合度比较好,并且其能耗预测结果与线性能耗模型相比,将整体误差降低到10%以内.
[1]Gim J, Won Y. Extract and infer quickly: Obtaining sector geometry of modern hard disk drives[J]. ACM Transactions on Storage, 2010, 6(2): 6:1-6:25
[2]Pitchumani R, Hospodor A, Amer A, et al. Emulating a shingled write disk[C] //Proc of the 20th Int Symp on Modeling, Analysis & Simulation of Computer and Telecommunication Systems. Piscataway, NJ: IEEE, 2012: 339-346
[3]Lu Youyou, Shu Jiwu. Survey on FLASH-based storage system[J]. Journal of Compute Research and Development, 2013, 50(1): 49-59 (in Chinese)(陆游游, 舒继武. 闪存存储系统综述[J]. 计算机研究与发展, 2013, 50(1): 49-59)
[4]Shin S, Shin D. Power analysis for flash memory SSD[C] //Proc of Workshop for Operating System Support for Non-Volatile RAM. Berlin: Springer, 2010: 45-51
[5]Seong Y J, Nam E H, Yoon J H, et al. Hydra: A block-mapped parallel flash memory solid-state disk architecture[J]. IEEE Transactions on Computers, 2010, 59(7): 905-921
[6]Claburn T. Google plans to use Intel SSD storage in servers[EB/OL]. [2017-05-02]. http://www. informationweek. com
[7]Reinsel D, Janukowicz J. Datacenter SSDs: Solid footing for growth[EB/OL]. [2017-05-02]. http://www.samsung.com/
[8]James M, Michael C, Brad B, et al. Big data: The next frontier for innovation, competition, and productivity[EB/OL]. [2017-05-02]. http://www.mckinsey.com/Insights/MGI/Research/Technology_and_Innovation/Big_data_The_next_frontier_for_innovation
[9]Srinivasan A, Wu Jie, Santhalingam P, et al. DeadDrop-in-a-Flash: Information hiding at SSD nNAND flash memory physical layer[J]. Securwares, 2014, 79: 67-75
[10]Wang Jiangtao, Lai Wenyu, Meng Xiaofeng. Flash-based database: Studies,techniques and forecast[J]. Chinese Journal of Computers, 2013, 36(8): 1549-1567 (in Chinese)(王江涛, 赖文豫, 孟小峰. 闪存数据库: 现状, 技术与展望[J]. 计算机学报, 2013, 36(8): 1549-1567)
[11]Mohan V, Gurumurthi S, Stan M R. Flashpower: A detailed power model for nand flash memory[C] //Proc of IEEE Date’10. Piscataway, NJ: IEEE, 2010: 502-507
[12]Yoo B, Won Y, Cho S, et al. SSD characterization: From energy consumption’s perspective[C] //Proc of USENIX HotStorage’11. Berkeley, CA: USENIX Association, 2011: 656-674
[13]Bang K, Kim D G, Park S H, et al. Application-aware design parameter exploration of NAND flash memory[J].Journal of Semiconductor Technology and Science, 2013, 13(4): 291-302
[14]Dong Xiangyu, Xu Cong, Xie Yuan, et al. NVSim: A circuit-level performance, energy, and area model for emerging nonvolatile memory[J]. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2012, 31(7): 994-1007
[15]Jung M, Choi W, Gao Shuwen, et al. NANDFlashSim: High-fidelity, microarchitecture-aware NAND flash memory simulation[J]. ACM Transactions on Storage, 2016, 12(2): 6:1-6:32
[16]Doh I H, Lee H J, Moon Y J, et al. Impact of NVRAM write cache for file system metadata on I/O performance in embedded systems[C] //Proc of ACM SAC’09. New York: ACM, 2009: 1658-1663
[17]Jinsong J, Wang Chao, Zhou Xuehai. System-level early power estimation for memory subsystem in embedded systems[C] //Proc of IEEE SEC’08. Piscataway, NJ: IEEE, 2008: 370-375
[18]Kim Y, Tauras B, Gupta A, et al. Flashsim: A simulator for NAND flash-based solid-state drives[C] //Proc of IEEE SIMUL’09. Piscataway, NJ: IEEE, 2009: 125-131
[19]Agrawal N, Prabhakaran V, Wobber T, et al. Design tradeoffs for SSD performance[C] //Proc of USENIX ATC’08. Berkeley, CA: USENIX Association, 2008: 57-70




