具体实施方式
现在参考附图并尤其参考图1,其中图示了包括数据存储系统的示例性数据处理环境100的高层框图,其中数据存储系统实现数据的选择性的基于软件的压缩,如本文进一步所描述的。如所示出的,数据处理环境100包括至少一个处理器系统102,其具有一个或多个处理指令和数据的处理器104。处理器系统102可附加地包括本地存储装置106(例如,动态随机访问存储器(DRAM)或磁盘),本地存储装置可以存储程序代码、操作数和/或由处理器104执行的处理的执行结果。在各种实施例中,处理器系统102可以是例如移动计算设备(诸如智能手机)、膝上型或台式个人计算机系统、服务器计算机系统(诸如可从国际商用机器公司获得的POWER系列中的一个)、或大型机计算机系统。
处理器系统102还包括输入/输出(I/O)适配器108,该输入/输出适配器108经I/O通道110直接地(即,没有任何中间设备)或间接地(即,通过至少一个中间设备)耦合到数据存储系统120。在各种实施例中,I/O通道可以采用已知的或将来开发的通信协议中的任何一种或组合,所述通信协议包括,例如,光纤通道(FC)、以太网上FC(FCoE)、因特网小型计算机系统接口(iSCSI)、传输控制协议/因特网协议(TCP/IP)等。经I/O通道110通信的I/O操作(IOP)包括读IOP和写IOP,其中处理器系统102通过读IOP从数据存储系统120请求数据,处理器系统102通过写IOP请求在数据存储系统120中存储数据。
数据存储系统120包括大容量存储介质122,其通常提供比处理器系统102的本地存储装置106大得多的存储容量。大容量存储介质122通常用非易失性存储介质实现,诸如磁盘、闪存存储器、SSD、相变存储器(PCM)等。取决于数据存储系统120的大小与配置,大容量存储介质122可以物理上完全或部分地位于与数据存储系统120的其余部分相同的外壳内或者可以被外部放置在一个或多个单独的外壳内。通过处理器系统102对大容量存储介质122的内容的读和写访问由存储控制器124控制。在至少一种实施例中,存储控制器124实现对数据存储系统120的软件控制。因此,图1说明了存储控制器124的实施例,该存储控制器124包括存储控制代码130的私有存储器128,以及一个或多个处理器126,处理器126执行来自私有存储器128的控制代码130以控制数据存储系统120。私有存储器128附加地包括压缩代码131,该压缩代码被一个或多个处理器126执行以实现对由处理器系统102写到数据存储系统120的数据的选择性的基于软件的压缩,如本文进一步所公开的。
由于选择用来实现大容量存储介质122的存储技术通常具有比其它可用存储技术更高的访问延迟,因此数据存储系统120通常包括高速缓存由处理器系统102写到数据存储系统120的数据的较低延迟的写高速缓存132。写高速缓存132包括用于存储写数据的数组140,以及指示至少当前在数组140中保持的数据的地址的目录142。在至少一些实施例中,写高速缓存132可以是通过由存储控制器124执行控制代码130来软件管理的,以便智能地和选择性地高速缓存从处理器系统102接收的写IOP的写数据,以确保写高速缓存以提高(而不是消减)数据存储系统120预期的性能度量的方式实现。
如在图1中进一步示出的,数据存储系统120可选地还可以包括读高速缓存134,其高速缓存可能由处理器系统102从大容量存储介质122中读取的数据。读高速缓存器134包括用于存储读数据的数组150和指示至少数组150的内容的地址的目录。写高速缓存132和读高速缓存器134可以用例如DRAM、SRAM、或PCM实现。
应当注意,在数据处理环境100的一些实施例中,多于一个的处理器系统102可以访问单一数据存储系统120。同样,在一些实施例中,数据存储系统120可作为本地存储装置106的一部分实现。在还有的其它实施例中,存储控制器124和数据存储系统120的写高速缓存132可作为本地存储装置106的一部分实现并且可经I/O通道110外部附接大容量存储介质122。
现在参照图2,其中描绘了示例性方法的高层逻辑流程图,通过该示例性方法,数据存储系统确定“最热”地址的可变的百分比,其中用于这些地址的相关联的数据将不被数据存储系统120压缩。图2的过程优选地由存储控制器124通过执行控制代码130来完成。在可替换的实施例中,控制代码130的功能可以部分地或全部地用硬件,诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC),实现。
所说明的过程在块200开始,之后前进到块202,其描绘了存储控制器124,该存储控制器124初始化在由数据存储系统120采用的I/O地址空间中最频繁访问(即,最热)的地址的某个百分比,其中存储控制器124将不对这些最频繁访问的地址执行基于软件的数据压缩。该初始化步骤可以例如作为数据存储系统120的引导过程的一部分来执行。尽管取决于例如处理器126的数量和性能、数据存储系统120用于某个IOP工作负载的预期平均响应时间(ART)、及IOP的期望接收率(rate of receipt),在块202建立的初始百分比在实施例之间会变化很大,但是,在至少一些实施例中,在块202建立的初始百分比大约是在I/O地址空间中的地址的最热的10%。该初始化的值可被设置成用于数据存储系统的全部内容和/或可以基于该数据存储系统的历史平均而设置。而且,应当认识到,与这些地址相关联的存储颗粒的大小会在实施例之间变化,并且在一些实现中,可以是例如通过执行控制代码130动态地可配置的。例如,存储颗粒的大小可以是64kB、256kB、1MB、100MB,等等。
在块202初始化之后,过程前进到包括块204-212的处理循环,其中存储控制器124动态地改变最热地址的百分比,其中在数据存储系统120的操作过程中(即,当数据存储系统120正在服务于从处理器系统102接收的读和写IOP时)不为这些地址执行基于软件的数据压缩。在图2中示出的实施例中,存储控制器124基于存储控制器124不断监视的一个或多个性能标准改变该百分比。在各种实施例中,包括块204-212的处理循环可以例如以固定的时间间隔、或响应于诸如处理器126的CPU使用率之类的一个或多个性能标准、满足一个或多个阈值来执行。
现在参考块204,存储控制器124确定处理器126的当前CPU使用率是否满足第一阈值。例如,在至少一些实施例中,在块204描述的确定确定处理器126的平均CPU使用率是否大于或等于第一阈值,诸如50%。响应于在块204的否定确定,过程前进到块208,这将在下面进行描述。但是,响应于存储控制器124在块204确定处理器126的CPU使用率满足第一阈值,过程前进到块206。
块206描绘了存储控制器124增加压缩代码131对其的数据不执行压缩的最热地址的当前百分比。在各种实施例中,存储控制器124可以在块206将该百分比增加固定的或可配置的量,并且还可以基于一个或多个性能标准改变增加的量,其中性能标准包括存储控制器124的CPU使用率、ART、写IOP的接收率等。作为在块206所做的增加的结果,存储控制器124为较少的写IOP的存储数据执行基于软件的数据压缩(通过执行压缩代码131),这不仅直接减少了处理器的使用率,还具有随之而来的效果,即,减少了在闪存存储器中的重复数据删除(deduplication)和垃圾回收过程中基于软件的数据压缩和减少了由读IOP请求的读数据的基于软件的数据解压缩。在块206之后,图2的过程返回到块204,这已经进行了描述。
现在参考块208,存储控制器124确定数据存储系统120在当前(或最近)的时间间隔上的平均响应时间(ART)是否满足(例如,大于或等于)第二阈值。在各种实施例中,在块208的确定中采用的ART可以是数据存储系统120响应于仅仅IOP(例如,所有写IOP或所有读IOP)的子集或响应于所有IOP的ART。响应于在块208的否定确定,过程前进到块210,这将在以下描述。但是,响应于存储控制器124在块208确定数据存储系统120的ART满足第二阈值,过程转到块206,这已经进行了描述。
现在参考块210,存储控制器124确定来自处理器系统102的写IOP的由数据存储系统120的接收率(即,对其可能会执行基于软件的数据压缩的IOP)是否满足(例如,大于或等于)第三阈值。如果是,则过程转到块206,这已经进行了描述。另一方面,如果存储控制器124在块210确定写IOP的接收率不满足第三阈值,则过程转到块212。块212说明存储控制器124减少最热地址的当前百分比,对于这些最热地址,不通过压缩代码131为其执行基于软件的数据压缩(即,增加由压缩代码131对其执行基于软件的数据压缩的地址的当前百分比)。在各种实施例中,存储控制器124可以在块212将该百分比减少固定的或可配置的量,并且还可以基于一个或多个性能标准改变减少的量,其中性能标准包括存储控制器124的CPU使用率、ART、写IOP的接收率等。可以在一些实施例中使用的另一个标准是平均响应时间是否已超过阈值比如五分钟的时间间隔。作为在块212所做的减少的结果,存储控制器124为更多的写IOP的存储数据执行基于软件的数据压缩(通过执行压缩代码131),这不仅直接增加了处理器使用率,还具有随之而来的效果,即,增加了闪存存储器中的重复数据删除和垃圾回收过程中基于软件的数据压缩和增加了由读IOP请求的读数据的基于软件的数据解压缩。在块212之后,图2的过程返回到块204,这已经进行了描述。
现在参考图3,其中有示例性方法的高层逻辑流程图,该方法基于数据热度选择性地在诸如数据存储系统120的数据存储系统中执行基于软件的数据压缩。所说明的过程可通过例如执行控制代码130和由存储控制器124的处理器126选择性地执行压缩代码131来完成。如上所述,在其它的实施例中,所说明的过程可以部分地或全部地用硬件实现。
图3的过程在块300开始,然后前进到块302,其中说明了存储控制器124等待接收来自处理器系统102的写IOP。如所示出的,图3的过程在块302重复直到存储控制器124确定它已收到来自处理器系统102的写IOP,并且作为对其的响应,前进到块304。如本领域技术人员将意识到的,可并发地接收许多IOP,因此,如果有一队列的写IOP,那么将立即进入块304。同样,一些实施例将具有多个线程并发地执行图3的过程。在块304,存储控制器124确定由写IOP指定的地址是否是“热”地址,其在本文中所定义的意思是在存储控制器124对其不执行基于软件的数据压缩的最频繁访问地址的当前百分比中的地址。
在一种实施例中,存储控制器124通过参考可选的在例如私有存储器128中驻留的温度数据结构(TDS)160可做出在块304所描述的确定。如在图4中所示出的,在这个实施例中,TDS 160可以实现为例如表或其它数据结构,其包括多个计数器402a-402x,每个计数器都与数据存储系统120的I/O地址空间中的多个存储颗粒中的相应的一个相关联。在这个实施例中,存储控制器124响应于接收到指定映射到相关联的存储颗粒的地址的每个读或写IOP而简单地向前推进在TDS 160中的每个计数器402并且在每个监视间隔(例如,每个小时)的开始或者响应于任一计数器402的溢出而重置所有的计数器402。因此,在这个实施例中,存储控制器124在块304确定在块302接收的写IOP指定的目标地址是否识别出一存储颗粒,对于该存储颗粒,TDS 160中相关联的计数器具有计数器值中最高的M%的其中一个(其中M表示由图2的过程建立的当前百分比)。
在一个或多个可替换的实施例中,TDS 160可以被省略,并且存储控制器124可通过参考目录142和152中的一个或多个,做出在块304所说明的确定。例如,存储控制器124可以在块304确定由在块302接收的写IOP指定的地址是否命中高速缓存目录142和152中的一个或两者。作为进一步的细化,如所指示的,例如通过替换在高速缓存目录142和/或152中维护的顺序向量,存储控制器124还可以把该命中确定限制到仅仅目标地址映射到的同余类(congruence class)的N个最近参考过的方式。存储控制器124还可以利用图2的过程确定数字N,其中,考虑到在块304所做的确定,在图2的过程中,百分比M的每次增加或减少对应于高速缓存存储器最近使用的方式的添加或去除。
与确定写IOP的目标地址是否为热地址的实现无关,在一些实施例中,响应于存储控制器124在块304确定目标地址是热地址,过程从块304直接前进到块306。在一些可替换的实施例中,存储控制器124首先在块305确定(例如,通过历史、数据类型或写数据样本的快速检查)写数据是高度可压缩的并将因此需要很少的处理器执行时间来压缩。作为例子,高度可压缩的数据可以包括包含所有零、稀疏分布的表、或其它数据的数据页。响应于在块305确定写数据不是高度可压缩的,过程前进到块306,这将在下面进行描述。但是,响应于在块305确定写数据是高度可压缩的,过程转到块310,如下面所描述的,块310说明存储控制器124压缩写数据。
当过程从块304或305前进到块306时,存储控制器124在数据存储系统120中引导写IOP的数据的存储(即,在写高速缓存132或大容量存储介质122中),在此情况下以未压缩的形式存储。此外,存储控制器124例如通过向前推进TDS 160中的相关计数器402和/或在写高速缓存132中更新适当的替换顺序向量来更新一个或多个数据结构,以反映写IOP的目标地址的动态“温度”或“热度”。如将理解的,由于各个地址的“热度”或“温度”响应于IOP的访问模式而被更新,因此被压缩的地址集合(和未被压缩的地址集合)将随着时间而动态地变化并且将独立于对其执行基于软件的压缩的地址的动态变化的百分比(如通过图2的过程所确定的)而这么做。之后,图3的过程在块308结束。
返回到块304,响应于确定由写IOP指定的目标地址不是热地址,过程或者直接转到块310,或者在可替换的实施例中,首先转到可选块308。在块308,存储控制器124确定由写IOP指定的数据是否容易压缩。在块308所描述的确定可以包括检查由写IOP或由写数据自身的编码所指示的文件类型,以确定写数据是否构成已知难以实质性压缩的文件类型(例如,可携式文件格式(PDF)文件、联合图像专家组(JPEG)文件格式中的一种、其它媒体文件格式等)的至少一部分。可替换地或附加地,在块308描述的确定还可以包括写数据的压缩率的估计,这可能意味着执行压缩代码131来压缩写数据的小样本或者测量写数据的随机性。
在任何情况下,如果实现了可选块308,则响应于确定写数据不容易压缩,过程转到块306,并且存储控制器124在数据存储系统120中以未压缩的形式存储写数据并且更新温度数据结构,如前面所描述的。但是,如果块308被省略或者响应于在块308确定写数据容易压缩,则存储控制器124执行压缩代码131来压缩写IOP的写数据。此后,存储控制器124在数据存储系统120中存储压缩的数据并且更新温度数据结构,如在块306所示出的。在块306之后,图3的过程在块308结束。
如已经描述的,在数据存储系统的一些实施例中,响应于接收到来自处理器系统的包括地址和数据的写输入/输出操作(IOP),数据存储系统的存储控制器确定该地址是否为较频繁访问的热地址。响应于确定该地址是热地址,存储控制器在数据存储系统中以未压缩的形式存储该数据。响应于确定该地址不是热地址,存储控制器压缩该数据以获得压缩的数据并且在数据存储系统中存储压缩的数据。
虽然已经如参考一个或多个优选实施例描述的那样特定地示出了本发明,但是本领域技术人员应当理解,在不背离本发明的主旨和范围的情况下,可以对形式和细节进行各种变化。例如,尽管已经针对执行指导本发明功能的程序代码的计算机系统描述各方面,但是应该理解,本发明可替代地实现为包括存储可由处理器处理以指导所述功能的程序代码的存储设备(例如,存储器、磁盘、DVD、CD-ROM等)的程序产品。如本文所采用的,术语“存储设备”定义为本身不包括临时传播信号。