本发明涉及用于在存储器拷贝和存储器映射技术之间动态切换以优化存储系统中的i/o性能的系统和方法。
背景技术:
外围部件互连(pci)主桥可以实现数据处理系统内的处理器和输入/输出(i/o)子系统之间的通信。pci主桥提供数据缓冲能力,以使读和写数据能够在处理器和i/o子系统之间传送。i/o子系统可以是一组连接到pci总线的pci设备。当pci总线上的pci设备通过直接存储器存取(dma)向系统存储器发出读或写命令时,pci主桥将dma的pci地址转换成系统存储器的系统存储器地址。
pci总线上的每个pci设备可以与驻留在系统存储器内的相应转换控制条目(tce)表相关联。tce表可以用于执行从pci地址到系统存储器地址的tce转换。响应于dma读或写操作,pci主桥读取相应的tce表以提供tce转换。
在诸如ibmds8000tm企业存储系统的存储系统中,由存储系统处理的每个i/o需要一次或多次映射存储系统的高速缓存存储器。例如,对高速缓存存储器的读取命中需要创建tce映射,使得主机适配器可以经由dma读取高速缓存存储器。然后在dma完成之后解除映射该tce映射。在读取未命中的情况下,需要两个tce映射:在高速缓存存储器和设备适配器之间的一个映射,以便从存储驱动器检索读取的数据,以及在高速缓存存储器和主机适配器之间的第二映射,以便将读取的数据返回到主机系统。在dma完成之后,tce映射可以被解除映射。
鉴于上述内容,需要的是用于在诸如ibmds8000tm企业存储系统的存储系统内传送数据的替代数据传送技术。进一步需要的是在几种数据传送技术之间动态切换以优化诸如ibmds8000tm企业存储系统的存储系统中的i/o性能的系统和方法。
技术实现要素:
响应于本领域的当前状态,并且特别地,响应于本领域中尚未被当前可用的系统和方法完全解决的问题和需要,开发了本发明。相应地,开发了本发明的实施例,用于动态地优化数据传送技术的利用。本发明的特征和优点将从以下描述和所附权利要求书中变得更加完全显而易见,或者可以通过如下文所述的本发明的实践来了解。
与前述一致,公开了一种用于动态优化数据传送技术的利用的方法。该方法根据哪一数据传送技术更有效,采用几个数据传送技术中的一个,处理多个i/o请求。数据传送技术包括:存储器拷贝数据传送技术,其将与i/o请求相关联的高速缓存段从高速缓存存储器拷贝到永久映射存储器,该永久映射存储器永久映射到总线地址窗口;以及存储器映射数据传送技术,其将与i/o请求相关联的高速缓存段从高速缓存存储器临时映射到总线地址窗口。为了处理i/o请求,该方法利用与存储器拷贝数据传送技术相关联的第一数量的“拷贝”窗口,以及与存储器映射数据传送技术相关联的第二数量的“映射”窗口。该方法动态调整第一数量和第二数量中的一个或多个,以便优化i/o请求的处理。
还公开了对应的系统和计算机程序产品,并在这里请求保护。
附图说明
为了容易地理解本发明的优点,将通过参考附图中示出的具体实施例来呈现对以上简要描述的本发明的更具体的描述。应理解,这些附图仅描绘了本发明的典型实施例,因此不应被认为是对其范围的限制,将通过使用附图以附加的特征和细节来描述和解释本发明,在附图中:
图1是示出其中可以实现根据本发明的系统和方法的网络环境的一个示例的高级框图;
图2是示出用于图1的网络环境中的存储系统的一个实施例的高级框图;
图3是示出存储器映射数据传送技术的示例的高级框图;
图4是示出存储器拷贝数据传送技术的示例的高级框图;
图5是示出用于确定针对特定i/o请求使用哪种数据传送技术的方法的一个实施例的流程图;
图6是示出为与存储器映射数据传送技术一起使用而分配的“映射”窗口和为与存储器拷贝数据传送技术一起使用而分配的“拷贝”窗口的高级框图;
图7是示出动态调整“映射”窗口的数量和“拷贝”窗口的数量以便在处理i/o请求时提高效率的高级框图;
图8是示出用于优化与存储器映射数据传送技术相关联使用的“映射”窗口的数量和与存储器拷贝数据传送技术相关联使用的“拷贝”窗口的数量的方法的一个实施例的流程图;
图9是示出用于优化与存储器映射数据传送技术相关联使用的“映射”窗口的数量和与存储器拷贝数据传送技术相关联使用的“拷贝”窗口的数量的方法的另一个实施例的流程图;以及
图10是示出用于确定是利用存储器映射数据传送技术还是存储器拷贝数据传送技术来处理i/o请求的方法的一个实施例的流程图。
具体实施方式
容易理解,如在这里的附图中一般性描述和示出的,本发明的部件可以以各种不同的配置来布置和设计。因此,如附图中所表示的,本发明的实施例的以下更详细的描述不旨在限制所要求保护的本发明的范围,而仅仅是根据本发明的目前预期的实施例的某些示例的代表。通过参考附图,将更好地理解目前描述的实施例,其中,在所有附图中,相同的部件由相同的附图标记表示。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c 等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。
计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
在此可以参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
参考图1,示出了网络环境100的一个示例。网络环境100被呈现以示出其中可以实现根据本发明的系统和方法的环境的一个示例。网络环境100是作为示例而非限制来呈现的。实际上,本文公开的系统和方法可适用于除所示网络环境100之外的各种各样的不同网络环境。
如图所示,网络环境100包括通过网络104互连的一个或多个计算机102、106。网络104可以包括例如局域网(lan)104、广域网(wan)104、因特网104、内联网104等。在某些实施例中,计算机102、106可以包括客户端计算机102和服务器计算机106(在此也称为"主机"106或"主机系统"106)。通常,客户端计算机102发起通信会话,而服务器计算机106等待并响应来自客户端计算机102的请求。在某些实施例中,计算机102和/或服务器106可以连接到一个或多个内部或外部直接附接的存储系统112(例如,硬盘存储驱动器、固态驱动器、磁带驱动器等的阵列)。这些计算机102、106和直接附接的存储系统112可以使用诸如ata、sata、scsi、sas、光纤通道等协议进行通信。
在某些实施例中,网络环境100可以包括服务器106后面的存储网络108,例如存储区域网络(san)108或lan108(例如,当使用网络附接的存储装置时)。该网络108可以将服务器106连接到一个或多个存储系统110,例如硬盘驱动器或固态驱动器的阵列110a、磁带库110b、单独的硬盘驱动器110c或固态驱动器110c、磁带驱动器110d、cd-rom库等。为了访问存储系统110,主机系统106可以通过从主机106上的一个或多个端口到存储系统110上的一个或多个端口的物理连接进行通信。连接可以通过交换机、结构、直接连接等。在某些实施例中,服务器106和存储系统110可以使用诸如光纤通道(fc)或iscsi的联网标准进行通信。
参考图2,示出了包含硬盘驱动器204和/或固态驱动器204的阵列的存储系统110a的一个示例。示出了存储系统110a的内部组件,因为根据本发明的系统和方法可以在这样的存储系统110a中实现。如图所示,存储系统110a包括存储控制器200、一个或多个交换机202以及一个或多个存储驱动器204,诸如硬盘驱动器204和/或固态驱动器204(例如,基于闪存存储器的驱动器204)。存储控制器200可以使一个或多个主机系统106(例如,运行诸如z/os、zvm等的操作系统的开放系统和/或主机服务器106)能够访问一个或多个存储驱动器204中的数据。
在所选实施例中,存储控制器200包括一个或多个服务器206a、206b。存储控制器200还可以包括主机适配器208和设备适配器210,以将存储控制器200分别连接到主机系统106和存储驱动器204。多个服务器206a、206b可以提供冗余以确保数据总是可用于连接的主机系统106。因此,当一个服务器206a发生故障时,另一个服务器206b可以获得发生故障的服务器206a的i/o负载,以确保i/o能够在主机系统106和存储驱动器204之间继续。该过程可以被称为"故障转移"。"
在所选实施例中,每个服务器206包括一个或多个处理器212和存储器214。存储器214可以包括易失性存储器(例如,ram)以及非易失性存储器(例如,rom、eprom、eeprom、硬盘、闪存等)。在某些实施例中,易失性和非易失性存储器可以存储在处理器212上运行并且用于访问存储驱动器204中的数据的软件模块。这些软件模块可以管理对存储驱动器204中的逻辑卷的所有读取和写入请求。
在某些实施例中,存储器214包括高速缓存216,例如dram高速缓存216。无论何时主机106(例如,开放系统或主机服务器)对未驻留在高速缓存216中的数据执行读取操作,执行读取的服务器206可以从存储驱动器204获取数据,并且在再次需要数据的情况下将其保存在其高速缓存216中。如果主机系统106再次请求数据,则服务器206可以从高速缓存216获取数据,而不是从存储驱动器204获取数据,从而节省时间和资源。类似地,当主机系统106执行写入时,接收写入请求的服务器206可以将修改的数据存储在其高速缓存216中,并且在稍后的时间将修改的数据送出到存储驱动器204。
具有与图2所示的体系结构类似的体系结构的存储系统110a的一个例子是ibmds8000tm企业存储系统。ds8000tm是高性能、高容量的存储控制器,提供被设计成支持连续操作的磁盘和固态存储。然而,这里公开的技术不限于ibmds8000tm企业存储系统110a,而是可以在任何可比较的或类似的存储系统110中实现,而不管与系统110相关联的制造商、产品名称、或组件名称。任何可以从本发明的一个或多个实施例中受益的存储系统都被认为落入本发明的范围内。因此,ibmds8000tm仅作为示例而非限制给出。
参考图3,通常,外围部件互连(pci)主桥可以使能数据处理系统内的处理器和输入/输出(i/o)子系统之间的通信。pci主桥可以提供数据缓冲能力,以使得能够在处理器和i/o子系统之间传送读取和写入数据。i/o子系统可以是连接到pci总线的一组pci设备(主机适配器和/或设备适配器)。当pci总线上的pci设备经由直接存储器访问(dma)向系统存储器发起读取或写入命令时,pci主桥可以将dma的pci地址转换成系统存储器的系统存储器地址。
pci总线上的每个pci设备可以与驻留在系统存储器214内的相应的转换控制条目(tce)映射302相关联。tce映射302可以用于执行从pci地址到系统存储器地址的tce转换。响应于dma读或写操作,pci主桥读取相应的tce映射以提供tce转换。
在诸如ibmds8000tm企业存储系统的存储系统中,由存储系统110处理的每个i/o需要一次或多次映射存储系统110的高速缓存存储器216。例如,对高速缓存存储器216的读取命中需要创建tce映射302,使得主机适配器208可以经由dma读取高速缓存存储器216。然后在dma完成之后解除映射该tce映射302。在读取未命中的情况下,需要两个tce映射:在高速缓存存储器216和设备适配器210之间的一个映射302,以便从存储驱动器204检索读取的数据,以及在高速缓存存储器216和主机适配器208之间的第二映射302,以便将读取的数据返回到主机系统106。在dma完成之后,tce映射302可以被解除映射。
tce映射和解除映射在时间方面可能是昂贵的,尤其是在高i/o速率的情况下。一种规避对tce映射302的需要的方法是保持高速缓存存储器216的某些部分被永久映射(即,使用专用永久映射存储器)。当i/o到达时,可以将所请求的数据从高速缓存存储器216拷贝到该永久映射存储器400。然后,dma可以从该永久映射存储器400发生,而不需要执行tce映射/解除映射。该技术消除了执行tce映射/解除映射的成本(例如,所需的时间),但是引入了将数据从一个存储器位置拷贝到另一个存储器位置的成本(例如,所需的时间)。该成本可以取决于两个存储器位置相对于彼此的位置。有时,执行tce映射/解除映射的成本可能较小,而在其它时候,将数据拷贝到永久映射存储器400的成本可能较小。
鉴于上述内容,需要在存储器拷贝和存储器映射数据传送技术之间动态切换的系统和方法,以优化诸如ibmds8000tm企业存储系统的存储系统中的i/o性能。理想地,取决于所涉及的i/o操作,这样的系统和方法将利用最有效的数据传送技术(即,存储器拷贝或存储器映射)。
图3是示出诸如tce映射的存储器映射数据传送技术的一个示例的高级框图。如图所示,高速缓存216可以包括一个或多个高速缓存段300,例如四千字节的高速缓存段300。在某些实施例中,诸如"轨道"的数据元素可以由多个高速缓存段300、诸如十七个高速缓存段300组成。因此,在轨道由十七个各为四千字节的高速缓存段300构成的情况下,该轨道可包含六十八个千字节的数据。在许多情况下,与轨道相关联的高速缓存段300在高速缓存216中可能不是连续的。即,轨道的高速缓存段300可以零星地或随机地位于高速缓存216中的不同位置。因此,为了在高速缓存216中读取或写入轨道(即,高速缓存段300的连续序列),可能需要将轨道映射到对应的高速缓存段300。在某些实施例中,映射302(例如,tce映射302)可以将与轨道相关联的高速缓存段300映射到总线地址窗口304,使得主机适配器208和/或设备适配器210可以经由dma向/从高速缓存216传送轨道。在某些实施例中,映射302可以按照高速缓存段300在轨道中的排列顺序对其进行排序,如图3所示。
图4是示出存储器拷贝数据传送技术的示例的高级框图。如图所示,存储器拷贝数据传送技术可以首先将与数据元素(例如,轨道)相关联的高速缓存段300拷贝到永久映射存储器400,而不是将高速缓存段300映射到总线地址窗口304。永久映射存储器400可以驻留在与高速缓存216相同的存储器214(例如,存储器芯片)中,或者驻留在不同的存储器214(例如,存储器芯片)中。因此,将高速缓存段300从高速缓存216拷贝到永久映射存储器400可能具有一些成本,其大小可能根据高速缓存216和永久映射存储器400的位置以及在它们之间拷贝数据所需的时间而变化。在某些实施例中,拷贝的高速缓存段300可以与它们存在于轨道中相同的方式在永久映射存储器400中排序,从而提供可以由主机适配器208和/或设备适配器210经由dma传送的高速缓存段300的连续排序的组。
参考图5,示出了用于确定针对特定i/o请求使用哪种数据传送技术的方法500的一个实施例的流程图。该方法500可以在每次存储系统110接收到i/o请求时执行。如图所示,方法500最初接收502i/o请求。然后,方法500使用存储器映射数据传送技术、例如图3中描述的存储器映射数据传送技术,计算504与执行i/o请求相关联的成本。在某些实施例中,可以通过分析过去的统计数据来确定映射和解除映射特定数据轨道通常花费多长时间来计算504成本。
然后,方法500计算506使用存储器拷贝数据传送技术、诸如结合图4描述的存储器拷贝数据传送技术来执行i/o请求的成本。在某些实施例中,通过确定要拷贝到永久映射存储器400的高速缓存段300的数量,计算与使用存储器拷贝数据传送技术相关联的成本。在某些实施例中,存储器拷贝数据传送技术可以用于拷贝少于完整轨道的数据,而存储器映射数据传送技术可能需要映射高速缓存段300的完整轨道。因此,存储器拷贝数据传送技术可以比存储器映射数据传送技术更高效地进行较小传送(例如,少于数据的完整轨道)。与存储器拷贝数据传送技术相关联的成本也可取决于高速缓存216和永久映射存储器400的相对位置。例如,如果高速缓存216和永久映射存储器400位于同一存储器芯片中,则成本可以更低,因为拷贝数据的时间可以更短。另一方面,如果高速缓存216和永久映射存储器400位于不同的存储器芯片上,则成本可能更高,因为拷贝数据所需的时间可能更长。
然后,方法500比较508存储器映射数据传送技术的成本与存储器拷贝数据传送技术的成本。如果存储器映射数据传送技术的成本较大,则如果可能,方法500可使用510存储器拷贝数据传送技术来将与i/o请求相关联的数据从/向高速缓存216传送到主机适配器208和/或设备适配器210。另一方面,如果存储器拷贝数据传送技术的成本较大,则如果可能,方法500可以使用512存储器映射数据传送技术来将与i/o请求相关联的数据从/向高速缓存216传送到主机适配器208和/或设备适配器210。如将结合图10更详细地解释的,存储器映射或存储器拷贝数据传送技术的使用可取决于是"映射"窗口还是"拷贝"窗口可用于传送数据。将结合图10描述用于执行图5的步骤510和512的方法的更详细的实施例。
参考图6,在某些实施例中,可以分配指定数量的"映射"窗口600用于使用存储器映射数据传送技术来传送数据,并且可以分配指定数量的"拷贝"窗口602用于使用存储器拷贝数据传送技术来传送数据。每个"映射"窗口可以提供用于使用存储器映射数据传送技术来传送数据的总线地址窗口304,并且每个"拷贝"窗口可以提供用于使用存储器拷贝数据传送技术来传送数据的总线地址窗口304。如前所述,总线地址窗口304可以为主机适配器208和/或设备适配器210提供在地址总线上读或写一定量的连续存储空间(例如,轨道)的方式。
例如,假设最初分配了总共两千个窗口用于传送数据,并且在这两千个窗口中,一千个窗口是"映射"窗口,而另一千个窗口是"拷贝"窗口。"映射"窗口可用于为认为存储器映射数据传送技术更有效的i/o请求服务,而"拷贝"窗口可用于为认为存储器拷贝数据传送技术更有效的i/o请求服务。如果最初分配了一定数量的"拷贝"窗口和"映射"窗口用于传送数据,则根据本发明的系统和方法可根据输入的i/o请求动态地调整分配给每一数据传送技术的窗口的相应数量。例如,如果没有足够的"拷贝"窗口可用于服务被标识为使用存储器拷贝数据传送技术的传入i/o请求,则可以将总共的窗口中的更多窗口分配给"拷贝"窗口602,并可以将总共的窗口中的更少窗口分配给"映射"窗口600,如图7所示。以此方式,"拷贝"窗口的数量和"映射"窗口的数量可被动态地改变以对应于传入的i/o请求。
参考图8,示出了用于分配窗口和动态改变窗口分配的方法800的一个实施例。如图所示,方法800最初分配802将与存储器拷贝数据传送技术相关联地使用的第一数量的"拷贝"窗口和将与存储器映射数据传送技术相关联地使用的第二数量的"映射"窗口。在某些实施例中,分配窗口可以包括分配一定量的存储器214以实现窗口。例如,可以将存储器214的两个吉字节(gigabyte)分配给窗口,其中,一个吉字节被分配给与存储器映射数据传送技术相关联的映射302,一个吉字节被分配给与存储器拷贝数据传送技术相关联的永久映射存储器400。
在其它实施例中,分配可包括窗口的总数,其中总窗口的某一比例是"映射"窗口,而总窗口的剩余比例是"拷贝"窗口。在某些实施例中,窗口的总数或分配给窗口的存储器214的总量是固定的。在其它实施例中,窗口的总数或分配给窗口的存储器214的总量根据需要进行调整。窗口的初始分配可以基于对需要多少的估计或猜测,或者基于统计数据,例如过去已经接收到的i/o的类型。
一旦分配了第一数量的"拷贝"窗口和第二数量的"映射"窗口,方法800就在一段时间内使用(如果可能的话)处理i/o请求最有效的数据传送技术来处理804i/o请求。也就是说,如果存储器映射数据传送技术被认为对于处理i/o请求更有效,则方法800理想地利用存储器映射数据传送技术和相关联的"映射"窗口来处理i/o请求。类似地,如果存储器拷贝数据传送技术被认为对于处理i/o请求更有效,则方法800理想地利用存储器拷贝数据传送技术和相关联的"拷贝"窗口来处理i/o请求。
在处理i/o请求时,方法800跟踪806存储器拷贝数据传送技术理想地被利用但由于缺少相关联的"拷贝"窗口而不可用的次数。类似地,方法800跟踪808存储器映射数据传送技术理想地被利用但由于缺少相关联的"映射"窗口而不可用的次数。基于每种类型的窗口不可用的次数,方法800动态地改变810"拷贝"窗口和"映射"窗口的分配(例如,相对于"映射"窗口的数量改变"拷贝"窗口的数量,或增加/减少"拷贝"窗口和/或"映射"窗口的数量)。这可以以最小化需要特定类型的窗口但不可用的次数为目标来执行。
参考图9,示出了用于分配窗口和动态改变窗口分配的方法900的另一实施例。如图所示,方法900最初分配902与存储器拷贝数据传送技术相关联地使用的第一数量的"拷贝"窗口和与存储器映射数据传送技术相关联地使用的第二数量的"映射"窗口。一旦分配了第一数量的"拷贝"窗口和第二数量的"映射"窗口,方法900就在一段时间内使用(如果可能的话)处理i/o请求最有效的数据传送技术来处理904i/o请求。
在处理i/o请求的同时,方法900跟踪906特定类型的i/o请求的比例。例如,方法900可以跟踪906什么比例的i/o请求是顺序i/o请求、大的随机i/o请求和小的随机i/o请求。顺序i/o请求和大的随机i/o请求通常是全轨道访问,因此可以使用存储器映射数据传送技术来更有效地处理。相反,小的随机i/o请求可以包括少于全轨道的访问,因此可以使用存储器拷贝数据传送技术来更有效地处理。如先前所解释的,存储器拷贝数据传送技术可以用于拷贝少于完整轨道的数据,而存储器映射数据传送技术可能需要映射完整轨道的高速缓存段300。
根据每种类型的i/o请求的比例,方法900可以动态地调整"拷贝"窗口的数量和"映射"窗口的数量,以符合输入i/o请求的组成和类型。这可以尽可能地确保为每个输入i/o请求选择和使用最有效的数据传送技术。
图10是示出用于确定是利用存储器映射数据传送技术还是存储器拷贝数据传送技术来处理i/o请求的方法1000的一个实施例的流程图。在某些实施例中,使用该方法1000来代替图5中所示的步骤510、512。如图所示,方法1000最初为接收的i/o请求确定1002使用存储器拷贝数据传送技术是否比使用存储器映射数据传送技术成本更低。如果是,则方法1000确定"拷贝"窗口的可用数目是否低于阈值(例如,100),"映射"窗口的可用数目是否高于阈值(例如,100),以及使用存储器拷贝数据传送技术和使用存储器映射数据传送技术之间的成本差是否低于阈值(例如,5微秒)。如果满足这些条件,则方法1000使用1004存储器映射数据传送技术来传输与i/o请求相关联的数据。实质上,如果"拷贝"窗口供应不足,"映射"窗口未处于供应不足,并且数据传送技术之间的成本差不是太大,则该步骤1004使用存储器映射数据传送技术来传送与i/o请求相关联的数据。否则,方法1000进行到下一步骤1006。
在步骤1006,如果没有"拷贝"窗口可用,但是至少一个"映射"窗口可用,则方法1000使用1006存储器映射数据传送技术来传送与i/o请求相关联的数据,而不管使用存储器拷贝数据传送技术和使用存储器映射数据传送技术之间的成本差异。实质上,如果存储器映射数据传送技术是仅有的选项,即使使用存储器拷贝数据传送技术是最有效的,该步骤1006也使用存储器映射数据传送技术来传送与i/o请求相关联的数据。否则,方法1000进行到下一步骤1008。
在步骤1008,如果没有"拷贝"窗口和"映射"窗口可用,则方法1000等待1008下一个可用窗口("拷贝"窗口或"映射"窗口),并使用该窗口以及相应的数据传送技术来传送与i/o请求相关联的数据。这是在不考虑使用存储器拷贝数据传送技术和使用存储器映射数据传送技术之间的成本差异的情况下执行的。否则,方法1000进行到下一步骤1010。在步骤1010,方法1000使用存储器拷贝数据传送技术来传送与i/o请求相关联的数据,因为"拷贝"窗口是可用的,并且使用存储器拷贝数据传送技术比使用存储器映射数据传送技术成本更低。
如果在步骤1002存储器拷贝数据传送技术不比存储器映射数据传送技术成本更低(意味着存储器映射数据传送技术比存储器拷贝数据传送技术成本更低),则方法1000进行到步骤1012。在步骤1012,方法1000确定1012"映射"窗口的可用数目是否低于阈值(例如,100),"拷贝"窗口的可用数目是否高于阈值(例如,100),以及使用存储器映射数据传送技术和使用存储器拷贝数据传送技术之间的成本差是否低于阈值(例如,5微秒)。如果满足这些条件,则方法1000使用1012存储器拷贝数据传送技术来传送与i/o请求相关联的数据。实质上,如果"映射"窗口供应不足,"拷贝"窗口未处于供应不足,并且数据传送技术之间的成本差不是太大,则该步骤1012使用存储器拷贝数据传送技术来传送与i/o请求相关联的数据。否则,方法1000进行到下一步骤1014。
在步骤1014,如果没有"映射"窗口可用但至少一个"拷贝"窗口可用,则方法1000使用1014存储器拷贝数据传送技术来传送与i/o请求相关联的数据,而不管使用存储器映射数据传送技术和使用存储器拷贝数据传送技术之间的成本差异。实质上,如果存储器拷贝数据传送技术是仅有的选项,则该步骤1014就使用存储器拷贝数据传送技术来传送与i/o请求相关联的数据,即使使用存储器映射数据传送技术会更有效。否则,方法1000进行到下一步骤1016。
在步骤1016,如果没有"映射"窗口或"拷贝"窗口可用,则方法1000等待1016下一个可用窗口("拷贝"窗口或"映射"窗口),并使用该窗口以及相应的数据传送技术来传送数据。这是在不考虑存储器映射数据传送技术和存储器拷贝数据传送技术之间的成本差异的情况下执行的。否则,方法1000进行到下一步骤1018。在步骤1018,方法1000使用1018存储器映射数据传送技术来传送与i/o请求相关联的数据,因为"映射"窗口是可用的,并且使用存储器映射数据传送技术比使用存储器拷贝数据传送技术成本更低。
附图中的流程图和/或框图示出了根据本发明的各种实施例的系统、方法和计算机可用介质的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示代码的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。还应当注意,在一些备选实现中,框中所标注的功能可以不按图中所标注的顺序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图的每个框以及框图和/或流程图中的框的组合可以由执行指定功能或动作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。
1.一种用于动态优化数据传送技术的利用的方法,所述方法包括:
根据哪一数据传送技术更有效,采用几个数据传送技术中的一个,处理多个i/o请求中的每一个,所述几个数据传送技术包括:
存储器拷贝数据传送技术,将与i/o请求相关联的高速缓存段从高速缓存存储器拷贝到永久映射存储器,其中,所述永久映射存储器永久映射到总线地址窗口;以及
存储器映射数据传送技术,将与i/o请求相关联的高速缓存段从所述高速缓存存储器临时映射到所述总线地址窗口;
为了处理所述i/o请求,利用与所述存储器拷贝数据传送技术相关联的第一数量的“拷贝”窗口,以及与所述存储器映射数据传送技术相关联的“映射”窗口;以及
动态调整所述第一数量和所述第二数量中的至少一个,以便优化所述i/o请求的所述处理。
2.如权利要求1所述的方法,其中,所述总线地址窗口是外围组件互连(pci)总线地址窗口。
3.如权利要求1所述的方法,进一步包括,监视在一段时间中“拷贝”窗口被需要但不可用的次数和“映射”窗口被需要但不可用的次数中的至少一个。
4.如权利要求3所述的方法,其中,动态调整包括动态调整以减少“拷贝”窗口被需要但不可用的所述次数。
5.如权利要求3所述的方法,其中,动态调整包括动态调整以减少“映射”窗口被需要但不可用的所述次数。
6.如权利要求1所述的方法,进一步包括,监视在一段时间中使用所述存储器拷贝数据传送技术更有效的所述i/o请求相对于使用所述存储器映射数据传送技术更有效的所述i/o请求的比例。
7.如权利要求6所述的方法,其中,动态调整包括动态调整所述第一数量和所述第二数量中的至少一个以对应于所述比例。
8.一种用于动态优化数据传输技术的利用的计算机程序产品,所述计算机程序产品包括其中包含计算机可用程序代码的计算机可读介质,所述计算机可用程序代码被配置为当由至少一个处理器执行时执行如权利要求1-7中任一项权利要求所述的方法中的步骤。
9.一种用于动态优化数据传输技术的利用的系统,所述系统包括:
至少一个处理器;
至少一个存储器设备,所述至少一个存储器设备耦合到所述至少一个处理器并且存储用于在所述至少一个处理器上执行的指令,所述指令使所述至少一个处理器执行如权利要求1-7中任一项权利要求所述的方法中的步骤。
10.一种用于动态优化数据传输技术的利用的装置,所述装置包括被配置为执行如权利要求1-7中任一项权利要求所述的方法中的步骤的模块。
技术总结