动态允许和禁止写XFR_RDY.pdf

上传人:a*** 文档编号:4755672 上传时间:2018-11-07 格式:PDF 页数:20 大小:4.36MB
返回 下载 相关 举报
摘要
申请专利号:

CN201180051735.1

申请日:

2011.10.13

公开号:

CN103180840A

公开日:

2013.06.26

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 13/42申请日:20111013|||公开

IPC分类号:

G06F13/42

主分类号:

G06F13/42

申请人:

国际商业机器公司

发明人:

S·E·克莱恩; D·W·谢尔曼; M·J·卡洛斯; D·N·党

地址:

美国纽约

优先权:

2010.10.28 US 12/914,024

专利代理机构:

中国国际贸易促进委员会专利商标事务所 11038

代理人:

李玲

PDF下载: PDF下载
内容摘要

本发明涉及动态允许和禁止写XFR_RDY。公开一种动态允许和禁止XFR_RDY的使用的方法。在本发明的一个实施例中,所述方法包括在目标方接收写命令,和判定对于所述写命令,XFR_RDY是被允许还是被禁止。如果XFR_RDY被禁止,所述方法判定是否一个或多个缓冲器在目标方可用。如果至少一个缓冲器可用,所述方法通过把与所述写命令相关的数据写入所述一个或多个缓冲器中,来处理所述写命令。所述方法随后返回指示在完成所述写命令之后,在目标方仍然可用的缓冲器的数目的信息。这里还公开和要求保护对应的设备和计算机程序产品。

权利要求书

权利要求书
1.   一种动态允许和禁止XFR_RDY的方法,所述方法包括:
在目标方接收写命令;
判定对于所述写命令,XFR_RDY是否被禁止;
如果XFR_RDY被禁止,判定是否至少一个缓冲器在目标方可用;
如果至少一个缓冲器可用,通过把与所述写命令相关的数据写入所述至少一个缓冲器来处理所述写命令;和
返回指示在完成所述写命令之后,在目标方仍然可用的缓冲器的数目的信息。

2.   按照权利要求1所述的方法,还包括如果所述至少一个缓冲器不可用,在目标方放弃与所述写命令相关的数据。

3.   按照权利要求2所述的方法,其中放弃数据还包括返回指示所述写命令失败以及应在XFR_RDY被允许的情况下重新驱动所述写命令的状态。

4.   按照任意前述权利要求所述的方法,其中返回信息还包括把所述信息传送给写命令的发起方。

5.   按照权利要求4所述的方法,其中在向目标方传送XFR_RDY被禁止的另一个写命令之前,发起方判定在目标方仍然可用的缓冲器的数目是否大于发起方具有的与目标方的未决写命令的数目。

6.   按照权利要求5所述的方法,其中发起方被配置成如果发起方判定在目标方仍然可用的缓冲器的数目大于发起方具有的与目标方的未决写命令的数目,传送XFR_RDY被禁止的另一个写命令。

7.   按照权利要求5所述的方法,其中发起方被配置成如果发起方判定在目标方仍然可用的缓冲器的数目不大于发起方具有的与目标方的未决写命令的数目,传送XFR_RDY被允许的写命令。

8.   一种包含保存在计算机可读介质上的计算机程序代码的计算机程序,当被载入计算机系统中并在计算机系统上执行时,所述计算机程序代码使所述计算机系统执行按照权利要求1‑7任意之一所述的方法的所有步骤。

9.   一种动态允许和禁止XFR_RDY的系统,所述系统包括:
传送写命令的发起方;
接收所述写命令,并判定对于所述写命令XFR_RDY是否被禁止的目标方;
目标方还被配置成如果XFR_RDY被禁止,判定是否至少一个缓冲器在目标方可用;
目标方还被配置成如果至少一个缓冲器在目标方可用,通过把与所述写命令相关的数据写入所述至少一个缓冲器来处理所述写命令;并且
目标方还被配置成向发起方返回指示在完成所述写命令之后,在目标方仍然可用的缓冲器的数目的信息。

10.   按照权利要求9所述的系统,其中目标方还被配置成如果至少一个缓冲器不可用,放弃与所述写命令相关的数据。

11.   按照权利要求10所述的系统,其中目标方还被配置成如果数据被放弃,返回指示所述写命令失败以及应在XFR_RDY被允许的情况下重新驱动所述写命令的状态。

12.   按照权利要求9‑11中任意之一所述的系统,其中发起方还被配置成在向目标方传送XFR_RDY被禁止的另一个写命令之前,判定在目标方仍然可用的缓冲器的数目是否大于与目标方的未决写命令的数目。

13.   按照权利要求12所述的系统,其中发起方还被配置成如果在目标方仍然可用的缓冲器的数目大于与目标方的未决写命令的数目,把XFR_RDY被禁止的另一个写命令传送给目标方。

14.   按照权利要求12所述的系统,其中发起方还被配置成如果在目标方仍然可用的缓冲器的数目不大于与目标方的未决写命令的数目,传送XFR_RDY被允许的写命令。

说明书

说明书动态允许和禁止写XFR_RDY
技术领域
本发明涉及动态切换传递就绪(XFR_RDY)允许模式和传递就绪(XFR_RDY)禁止模式的设备和方法。
背景技术
在光纤通道协议(FCP)写操作中,XFR_RDY可被FCP目标设备用于通知FCP发起方,目标设备准备好接收FCP数据突发串。在进程登录(PRLI)时,在两个FCP端口之间协商XFR_RDY对于第一数据突发串的使用。FCP端口协商或者在写操作中,对第一FCP数据突发串使用XFR_RDY,或者对第一突发串禁止XFR_RDY。如果XFR_RDY被允许,在接收到FCP写命令之后,目标设备将为第一FCP数据突发串分配空间,之后把XFR_RDY消息发送给发起方。同样地,只有在发起方接收到XFR_RDY消息后,它才可以发送FCP写数据突发串。如果XFR_RDY被禁止,发起方认为目标设备总是具有可用于接收第一数据突发串的x字节的数据,从而发起方将发送后面紧跟FCP数据的写命令,而不等待XFR_RDY消息。对于受等待时间约束的应用,比如长距离数据复制来说,无XFR_RDY允许的操作尤其有益。
现代的光纤通道端口一般支持至少4K的并发光纤通道交换,和每个数据突发串至少64K。假定这些值,支持XFR_RDY禁止的FCB设备必须具有可用于接收第一数据突发串的每个端口至少64K×4K=256MB的内存。这是相当大量的内存,尤其是考虑到现代存储控制器可支持超过128个端口,这转化为为第一数据突发串保留的32G(256MB×128)内存。不是所有的存储控制器都具有可用于保留如此多的内存,以便在XFR_RDY禁止的情况下,接收第一数据突发串的资源。在没有保证可用于接收第一数据突发串的足够缓冲空间的情况下,需要能够在XFR_RDY被禁止的情况下工作的存储控制器具有以下选择:
第一种选择是不支持XFR_RDY禁止模式的操作。这是多数光纤通道设备实现的选择。不过,在许多结构(比如长距离复制数据的结构)中,这种选择不可行,因为它会不可接受地影响写性能。这归因于禁止XFR_RDY要求发起方等待来自目标方的XFR_RDY消息,之后才能够进行数据传递的事实。在许多结构中,这样的延迟是不能接受的。
第二种选择是支持发起方和目标方之间的数目有限的交换。在其中过预订普遍的竞争环境中,这种选择不可行。许多控制器需要支持每个端口登录的大量发起方,同时每个发起方并发地发送大量的交换。
第三种选择是支持XFR_RDY禁止模式的操作,但是限制第一数据突发串的大小。对具有基于高速缓存跟踪(cache track)的体系结构的存储控制器来说,这种选择并不可行,所述体系结构被配置成对于每个64K跟踪,发送一个XFR_RDY消息。于是需要具有能够支持最少64K的突发串大小。
第四种选择是支持XFR_RDY禁止模式的操作,但是不保证存在容纳在XFR_RDY被禁止的情况下,发生的最大数目的并发写传输的足够缓冲器。换句话说,目标设备被配置成允许可用的缓冲空间的过预订。这种选择依赖于多数时间工作负荷不需要所有资源的事实。不过,如果工作负荷足够高,从而需要比物理可用的缓冲空间更多的缓冲空间,目标控制器必须或者放弃或者异常中止交换。这导致I/O错误,从而导致性能退化和可能的SAN拥塞及其各种结果,包括影响SAN中的其它设备。
第五种选择是对于FCP端口,在进程登录期间,协商XFR_RDY的禁止。当缓冲空间低于一定的阈值时,目标方被配置成丢弃新到来的交换和/或注销主机。这会迫使主机再次登录,此时FCP端口可重新协商,以允许XFR_RDY。这种选择需要在能够允许或禁止XFR_RDY使用之前,终止所有的I/O,导致不希望的性能退化。
鉴于上面所述,需要一种减轻现有技术的上述缺陷的手段。
发明内容
因而在第一方面,本发明提供一种动态允许和禁止XFR_RDY的方法,所述方法包括:在目标方接收写命令;判定对于所述写命令,XFR_RDY是否被禁止;如果XFR_RDY被禁止,判定是否至少一个缓冲器在目标方可用;
如果至少一个缓冲器可用,通过把与所述写命令相关的数据写入所述至少一个缓冲器,来处理所述写命令;和返回指示在完成所述写命令之后,在目标方仍然可用的缓冲器的数目的信息。
所述方法还可包括如果至少一个缓冲器不可用,在目标方放弃与所述写命令相关的数据。优选地,放弃数据还包括返回指示所述写命令失败且应在XFR_RDY被允许的情况下重新驱动所述写命令的状态。优选地,返回信息还包括把所述信息传送给所述写命令的发起方。优选地,在向目标方传送XFR_RDY被禁止的另一个写命令之前,发起方判定在目标方仍然可用的缓冲器的数目是否大于发起方具有的与目标方的未决写命令的数目。优选地,发起方被配置成如果发起方判定在目标方仍然可用的缓冲器的数目大于发起方具有的与目标方的未决写命令的数目,传送XFR_RDY被禁止的另一个写命令。优选地,发起方被配置成如果发起方判定在目标方仍然可用的缓冲器的数目不大于发起方具有的与目标方的未决写命令的数目,传送XFR_RDY被允许的写命令。
在第二方面,提供一种包含保存在计算机可读介质上的计算机程序代码的计算机程序,当被载入计算机系统中,并在计算机系统上执行时,所述计算机程序代码使所述计算机系统执行按照第一方面的方法的所有步骤。
可以动态允许和禁止XFR_RDY的计算机程序产品的形式,提供所述第二方面的发明,所述计算机程序产品包括其中包含有计算机可用程序代码的计算机可用存储介质,所述计算机可用程序代码包括:在目标方接收写命令的计算机可用程序代码;判定对于所述写命令,XFR_RDY是否被禁止的计算机可用程序代码;如果XFR_RDY被禁止,判定是否至少一个缓冲器在目标方可用的计算机可用程序代码;如果至少一个缓冲器可用,通过把与所述写命令相关的数据写入所述至少一个缓冲器,来处理所述写命令的计算机可用程序代码;和返回指示在完成所述写命令之后,在目标方仍然可用的缓冲器的数目的信息的计算机可用程序代码。
在第三方面,提供一种动态允许和禁止XFR_RDY的系统,所述系统包括:传送写命令的发起方;接收所述写命令,并判定对于所述写命令,XFR_RDY是否被禁止的目标方;目标方还被配置成如果XFR_RDY被禁止,判定是否至少一个缓冲器在目标方可用;目标方还被配置成如果至少一个缓冲器可用,通过把与所述写命令相关的数据写入所述至少一个缓冲器,来处理所述写命令;并且目标方还被配置成向发起方返回指示在完成所述写命令之后,在目标方仍然可用的缓冲器的数目的信息。
优选地,目标方还被配置成如果至少一个缓冲器不可用,放弃与所述写命令相关的数据。优选地,目标方还被配置成如果数据被放弃,返回指示所述写命令失败且应在XFR_RDY被允许的情况下重新驱动所述写命令的状态。优选地,发起方还被配置成在向目标方传送XFR_RDY被禁止的另一个写命令之前,判定在目标方仍然可用的缓冲器的数目是否大于与目标方的未决写命令的数目。优选地,发起方还被配置成如果在目标方仍然可用的缓冲器的数目大于与目标方的未决写命令的数目,把XFR_RDY被禁止的另一个写命令传送给目标方。优选地,发起方还被配置成如果在目标方仍然可用的缓冲器的数目不大于与目标方的未决写命令的数目,传送XFR_RDY被允许的写命令。
在一个实施例中,动态允许和禁止XFR_RDY的方法可包括:从目标方接收指示在目标方可用的缓冲器的数目的信息;判定在目标方仍然可用的缓冲器的数目是否大于与目标方的未决写命令的数目;如果在目标方可用的缓冲器的数目大于与目标方的未决写命令的数目,传送XFR_RDY被禁止的写命令;和如果在目标方可用的缓冲器的数目不大于与目标方的未决写命令的数目,传送XFR_RDY被允许的写命令。所述方法还可包括如果XFR_RDY被禁止的写命令失败,在XFR_RDY被允许的情况下重新驱动写命令。
本发明的实施例从而提供一种允许设备利用在XFR_RDY被禁止的情况下,可能存在的性能增益,而不要求支持的最大数目的FCP写操作能够并发进行的解决方案。此外,需要一种能够以最小的写性能退化,有效地允许和禁止XFR_RDY的解决方案。理想地,这种解决方案应允许设备当工作负荷变化时,在交换对交换的基础上,允许和禁止XFR_RDY。因而,提出了本发明,以提供动态允许和禁止XFR_RDY的使用的设备和方法。根据以下说明和附加的权利要求,本发明的特征和优点将变得更明显,或者依据下面记载的本发明的实践,可以获悉本发明的特征和优点。
与上面所述一致,这里公开一种动态允许和禁止XFR_RDY的使用的方法。在本发明的一个实施例中,所述方法包括:在目标方接收写命令,和判定对于所述写命令,XFR_RDY是被允许还是被禁止。如果XFR_RDY被禁止,所述方法判定是否一个或多个缓冲器在目标方可用。如果至少一个缓冲器可用,所述方法通过把与所述写命令相关的数据写入所述一个或多个缓冲器中,来处理所述写命令。所述方法随后返回指示在完成所述写命令之后,在目标方仍然可用的缓冲器的数目的信息。
这里还公开和要求保护对应的设备和计算机程序产品。
附图说明
下面参考附图,举例说明本发明的优选实施例,附图中:
图1是表示其中可实现按照本发明的实施例的设备和方法的网络环境的一个例子的高级方框图;
图2是表示允许网络设备之间的通信的组件的高级方框图;
图3是表示发起方和目标方之间的通信的高级方框图;
图4是表示由支持XFR_RDY的动态允许和禁止的发起方实现的方法的一个实施例的流程图;
图5是表示由支持XFR_RDY的动态允许和禁止的目标方实现的方法的一个实施例的流程图;
图6是表示在支持XFR_RDY的动态允许和禁止的发起方内实现的各个模块的高级方框图;以及
图7是表示在支持XFR_RDY的动态允许和禁止的目标方内实现的各个模块的高级方框图。
具体实施方式
易于理解可按照各种不同的结构,布置和设计附图中说明和例示的本发明的实施例的各个组件。从而,在附图中表示的本发明的实施例的以下更详细说明并不意图限制要求保护的本发明的范围,仅仅代表目前构思的按照本发明的实施例的一些例子。参考附图,将更好地理解目前说明的实施例,附图中,相同的部分用相同的附图标记表示。
所属技术领域的技术人员知道,本发明可以实现为装置、系统、方法或计算机程序产品。此外,本发明可以采取硬件实施例、配置成操作硬件的软件实施例(包括固件、驻留软件、微代码等)、或者结合硬件和软件的实施例的形式,本文一般都称为“模块”或“系统”。此外,本发明可采取用任何有形的表达介质体现的计算机可用存储介质的形式,所述表达介质保存有计算机可用程序代码。
可以利用一个或多个计算机可用介质或计算机可读存储介质的任意组合保存计算机程序产品。计算机可用或计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体系统、装置或器件。计算机可读存储介质的更具体例子(非穷举列表)包括:具有一条或多条导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD‑ROM)、光存储器件或磁存储器件。在本文的上下文中,计算机可用或计算机可读存储介质可以是任何能够包含、存储或传送程序的任何介质,该程序可以供指令执行系统、装置或者器件使用或者与其结合使用。
可用一种或多种编程语言,包括诸如Java、Smalltalk、C++之类的面向对象编程语言,和诸如“C”编程语言或类似编程语言之类的常规过程编程语言的任意组合,编写执行本发明的操作的计算机程序代码。也可用诸如汇编语言之类的低级编程语言,编写实现本发明的计算机程序代码。
下面参考按照本发明各个实施例的方法、设备、系统和计算机程序产品的流程图和/或方框图,说明本发明。应当理解,流程图和/或方框图的每个方框,以及流程图和/或方框图中的各个方框的组合可用计算机程序指令或代码实现。这些计算机程序指令可被提供给通用计算机、专用计算机或者其它可编程数据处理设备的处理器,从而产生机器,以致通过计算机或其它可编程数据处理设备的处理器执行的指令产生实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的装置。
这些计算机程序指令也可被保存在计算机可读存储介质中,所述计算机可读存储介质可指令计算机或其它可编程数据处理设备按特定方式工作,以致保存在计算机可读存储介质中的指令产生制成品,所述制成品包括实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的指令装置。
计算机程序指令也可被加载到计算机或其它可编程数据处理设备上,使得在所述计算机或其它可编程设备上执行一系列的操作步骤,从而产生计算机实现的过程,以致在所述计算机或其它可编程设备上执行的指令提供实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的过程。
参见图1,图中图解说明网络体系结构100的一个例子。介绍网络体系结构100是为了表示其中可实现按照本发明的设备和方法的环境的一个例子。网络体系结构100只是作为例子给出的,并不意图限制本发明。实际上,除了所示的网络体系结构100之外,这里公开的设备和方法还适用于各种不同的网络体系结构。
如图所示,网络体系结构100包括利用网络104互连的一个或多个计算机102、106。网络104例如可包括局域网(LAN)104、广域网(WAN)104、因特网104、企业内部网104等等。在一些实施例中,计算机102、106可包括客户端计算机102和服务器计算机(这里也称为“主机系统”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上的一个或多个端口的物理连接,进行通信。连接可以经由交换机、架构(fabric)、直接连接等。在一些实施例中,服务器106和存储系统110可以利用诸如光纤通道(FC)之类的连网标准通信。
参见图2,主机系统106和存储系统110都可包括通过存储网络108,与其它主机系统106和存储系统110通信的一个或多个主机适配器200。在一些实施例中,主机适配器200被实现成分别插入主机系统106和存储系统110的扩展插槽中的适配卡,不过在所有实施例中,这不是强制性的。主机系统106和存储系统110上的主机适配器200可包括便利通信的一个或多个端口202。对于本说明来说,发起通信(例如,通过发送命令)的端口202可被称为“发起方”,而接收并响应所述通信的端口202可被称为“目标方”。图3中图解说明了表示发起方300和目标方302的一个例子的高级方框图。
参见图3,如在上面的背景技术部分中所述,在光纤通信协议(FCP)写操作中,FCP目标方302可以利用XFR_RDY告知FCP发起方300,目标方302准备好接收FCP数据突发串。可在进程登录(PRLI)时,在两个FCP端口202之间协商对XFR_RDY使用第一数据突发串。FCP端口202可协商或者在写操作中,对第一FCP数据突发串使用XFR_RDY,或者对第一突发串禁止XFR_RDY。如果XFR_RDY被允许,在接收到FCP写命令之后,目标方302将为第一FCP数据突发串分配空间,之后把XFR_RDY消息发送给发起方300。同样地,只有在发起方接收到XFR_RDY消息后,它才可以发送FCP写数据突发串。如果XFR_RDY被禁止,发起方300认为目标设备302总是具有可用于接收第一数据突发串的x字节的数据,从而发起方300将发送后面紧跟x字节的FCP数据的写命令,而不等待XFR_RDY消息。
如在背景技术部分中所述,无XFR_RDY允许的操作有益于受等待时间约束的结构,比如长距离数据复制(例如,对等远程复制应用,或者说PPRC)。然而,如上所述,不是所有的存储控制器都具有可用于保留为在XFR_RDY被禁止的情况下,接收第一数据突发串而需要的大量内存的资源。从而,需要一种使设备能够利用对于有限数目的写操作,使XFR_RDY被禁止的性能优点的解决方案。此外需要一种以最小的写性能降低,动态允许和禁止XFR_RDY的使用的解决方案。理想地,这种设备和方法应允许设备在工作负荷变化时并在交换对交换的基础上,允许和禁止XFR_RDY。
图3表示动态允许和禁止XFR_RDY的使用的技术的概况。下面将结合图4和5,更详细地说明该技术。该技术允许发起方300和目标方302利用与对于有限数目的写操作,禁止XFR_RDY相关的性能增益。
如图3中所示,在选择的实施例中,发起方300可被配置成留意它具有的与目标方302的(XFR_RDY被禁止的)未决写命令308的数目304。未决写命令308可包括发起方300已发送给目标方302,但是还未接收到指示写命令308是成功还是失败的状态310的那些写命令。在一些实施例中,发起方300发送给目标方302的每个写命令308可包括支持字段312和允许/禁止字段314。
支持字段312指示发起方300是否支持XFR_RDY的动态允许和禁止。在一些实施例中,支持字段312是单个比特。可以选择或配置该比特,以致不支持XFR_RDY的动态允许和禁止的目标方302将看不见该比特。当该比特被设定时,发起方300可指示它支持两件事物:(1)指示XFR_RDY被禁止的写命令308失败,从而应在XFR_RDY被允许的情况下重新驱动所述写命令308的状态消息310;和(2)指示写操作成功完成的状态消息310,其中状态消息310包括指示在目标方302可用于服务来自发起方300的XFR_RDY被禁止的写操作的缓冲器的数目306的信息。
在其它实施例中,可以使用不同于利用支持字段312的方法,或者除了利用支持字段312之外的方法,确定发起方300和目标方302是否支持XFR_RDY的动态允许和禁止。例如,发起方300和目标方302可在登录阶段中,或者作为特征交换协议或者其它适当协议的一部分,协商是否支持XFR_RDY的动态允许和禁止。在其它实施例中,与包含在写命令308中相反,支持字段312可被包含在帧报头或者其它适当位置中。
发起方300可设定允许/禁止字段314,以指示对于其中包含允许/禁止字段314的特定写命令308,XFR_RDY是被允许还是被禁止。如果XFR_RDY被允许,在发送与写命令308相关的数据之前,发起方300将等待来自目标方302的XFR_RDY消息。另一方面,如果XFR_RDY被禁止,发起方300将在写命令308之后发送数据,而不等待来自目标方302的XFR_RDY消息。在一些实施例中,代替在写命令308中设置允许/禁止字段314,允许/禁止字段314被包含在帧报头的控制字段或者其它适当位置中。
目标方302可被配置成留意它可用于服务来自发起方300的写命令308的缓冲器的数目(Y)306。在一些实施例中,目标方302为登录到目标方302的每个发起方300保持不同的“Y”值。目标方302可根据进行中的写命令308的数目和登录到目标方302的发起方300的数目,动态改变“Y”的值。目标方302还可由于其它原因,比如需要把缓冲器用于目标设备302上的其它操作,来改变“Y”的值。“Y”的当前值是在任何特定时间,在目标方302可供发起方300利用的缓冲器的数目的快照。
当目标方302处理写命令308时,目标方302可答复以指示写操作308的成功或失败的状态310。状态消息310(或者另一个消息,取决于期望的实现)可指示在完成写命令308之后,在目标方302上仍然可用的缓冲器的数目306。利用该信息306,发起方300可比较在目标方302可用的缓冲器的数目306,和它具有的与目标302的未决写命令的数目304。可进行所述比较,以确定发起方300发送给目标方302的下一个写命令308的操作模式(即,XFR_RDY是被允许还是被禁止)。
例如,如果在目标方302可用的缓冲器的数目306大于发起方300具有的与目标方302的未决写命令的数目304,发起方300可发送XFR_RDY被禁止的下一个写命令308。另一方面,如果在目标方302可用的缓冲器的数目306小于或等于发起方300具有的与目标方302的未决写命令的数目304,发起方300可发送XFR_RDY被允许的下一个写命令308。允许XFR_RDY将使目标302可以在接收与写命令308相关的数据之前,分配缓冲器。
参见图4,图中图解说明由支持XFR_RDY的动态允许和禁止的发起方300实现的方法400的一个实施例。如图所示,发起方300首选判定它是否准备好传送写命令(步骤402)。如果发起方300接收到需要被写入目标设备302中的数据,会发生所述判定。发起方300随后在写命令308的控制字段312中,指示它支持XFR_RDY的动态允许和禁止(步骤404)。如前所述,可以选择所述控制字段312,以致不支持XFR_RDY的动态允许和禁止的目标方302看不见或者忽略所述控制字段312。
发起方300随后判定在目标方302可用的缓冲器的数目306(步骤406)。这可通过读取发起方300保持的Y的值来实现。在一些实施例中,发起方300把它的Y的内部值初始化为期望值,随后当在状态消息310或其它适当消息中,从目标方302接收到可用缓冲器的数目306时更新Y。发起方300还判定它具有的与目标方302的未决写命令的数目304(步骤408)。当发起方300把写命令308发送给目标方302,并从目标方302接收到状态消息310时,发起方300可留意所述数目304。
在步骤410,如果在目标方302可用的缓冲器的数目(Y)306大于发起方300具有的与目标方302的未决写命令的数目(Z)304,发起方300发送XFR_RDY被禁止的写命令308(步骤412)。发起方300随后把与写命令308相关的数据发送给目标方302(步骤412),而不等待来自目标方302的XFR_RDY消息。在步骤410,如果在目标方302可用的缓冲器的数目306小于或等于发起方300具有的与目标方302的未决写命令的数目304,发起方300发送XFR_RDY被允许的写命令308(步骤414)。发起方300随后等待接收来自目标方302的XFR_RDY消息(步骤416)。一旦发起方300接收到XFR_RDY消息,发起方300就向目标方302发送与写命令308相关的数据(步骤418)。
一旦在步骤412或418,发起方300发送了数据,发起方300就等待从目标方302接收状态310(步骤420)。如果状态良好,意味写操作成功完成,发起方300从状态信息310读取在目标方302可用的缓冲器的数目(步骤422)。该信息允许发起方300相应地为未来的写命令308允许或禁止XFR_RDY。另一方面,如果状态不好,意味写命令308没有成功完成,发起方300可进行错误恢复处理(步骤424)。这可包括在较短的等待期之后,沿着相同的路径或者另一条路径,重新驱动写命令308。另外或者另一方面,这可包括在XFR_RDY被允许的情况下,重新驱动写命令308,如果状态消息310指令发起方300这样做的话。当发起方300被告知写命令308没有成功完成时,发起方300可把它的Y的内部值设定为0,以反映在目标方302上目前没有任何缓冲器可用。另一方面,目标方302可告知发起方300,没有任何缓冲器可用,以致发起方可更新其Y值。发起方300随后对下一个写命令308重复方法400。
参见图5,图中图解说明由支持XFR_RDY的动态允许和禁止的目标方302实现的方法500的一个实施例。如图所示,目标方302首选判定是否接收到了写命令308(步骤502)。如果接收到了写命令308(步骤502),通过检查写命令308,目标方302判定XFR_RDY是否被禁止(步骤504)。如果XFR_RDY未被禁止,目标方302分配缓冲器(步骤526),并向发起方300发送XFR_RDY(步骤526)。当数据从发起方300到达时,目标方302把数据写入所述缓冲器中,并向发起方300返回状态310(步骤528),状态310指示写操作的成功或失败,以及在完成写操作之后,在目标方仍然可用的缓冲器的数目306。
在步骤504,如果XFR_RDY被禁止,目标方302等待与写命令308相关的数据到达(步骤506),而不发送XFR_RDY。当数据到达时,目标方302判定在目标方302,一个或多个缓冲器是否可用(步骤508)。如果一个或多个缓冲器可用,目标方302通过把数据写入所述缓冲器,来处理写命令308(步骤510)。目标方302随后判定发起方300是否支持XFR_RDY的动态允许和禁止(步骤512)。这可通过读取写命令308中的支持字段312来实现。如果是,目标方302答复以指示在目标方302仍然可用的缓冲器的数目306的良好状态310(步骤514)(假定写操作成功完成)。另一方面,如果发起方300不支持XFR_RDY的动态允许和禁止,目标方302仅仅答复以良好状态(步骤516)(假定写操作成功完成)。
在步骤508,如果目标方302判定没有缓冲器可用于保持与写命令308相关的数据,在接收到与写命令308相关的数据时,目标方302放弃该数据(步骤518),因为目标方302没有资源来保存该数据。目标方302随后判定发起方300是否支持XFR_RDY的动态允许和禁止(步骤520)。如果否,目标方302答复以错误状态310。这使发起方300可以调用错误恢复处理来响应错误状态310。在步骤520,如果目标方302判定发起方300支持XFR_RDY的动态允许和禁止,目标方302指令发起方300在XFR_RDY被允许的情况下重新驱动写命令308。在XFR_RDY被允许的情况下重新驱动写命令308将使目标方302可以在它接收到数据之前,分配缓冲器。
图4和5中的方法400、500只是作为例子给出的,并不意图限制本发明。本领域的技术人员会认识到,可对方法400、500作出各种改变,而不脱离本发明的本质或特性。介绍方法400、500只是为了表示可分别由发起方300和目标方302执行的方法400、500的例子。
参见图6和7,可以一个或多个模块的形式,实现在图4和5中说明的方法400、500。可用硬件、可在硬件上执行的软件或固件、或者它们的组合,实现这些模块。这些模块只是作为例子给出的,并不意图限制本发明。实际上,备选实施例可以包括比例示的模块更多或者更少的模块。另外应认识到在一些实施例中,一些模块的功能可被分离到多个模块,或者相反地,几个模块的功能可被结合到单个模块或者较少的几个模块中。另外应认识到不一定在图解说明模块的位置,实现所述模块。例如,在发起方300中表示的一些功能实际上可在目标方302中实现,反之亦然。从而,模块的位置只是作为例子给出的,并不意图限制本发明。
图6是表示可包含在支持XFR_RDY的动态允许和禁止的发起方300内的各个模块的高级方框图。如图6中所示,在选择的实施例中,所述发起方300可包括协商模块600、值跟踪模块602、命令生成模块604、命令发送模块606、等待模块608、数据发送模块610和状态模块612中的一个或多个。命令生成模块604可包括设定模块614、判定模块616、允许模块618和禁止模块620中的一个或多个。
发起方300的协商模块600可用于与目标方302的对应协商模块700(例示于图7中)协商。在一些实施例中,协商模块600、700之间的协商在进程登录时发生。利用协商模块600、700,发起方300和目标方302可协商是否支持按XFR_RDY禁止模式的操作。发起方300和目标方302还可协商是否支持XFR_RDY的动态允许和禁止。
值跟踪模块602可用于跟踪与目标方302的未完成写命令308的数目304。当XFR_RDY被禁止的新的写命令308被发送给目标方302时,值跟踪模块602可递增数目304。类似地,当对于XFR_RDY被禁止的未决写命令,返回状态310时,值跟踪模块602可递减数目304。值跟踪模块602还可留意在目标方302可用的缓冲器的数目306。这可通过例如当从发起方300接收到状态消息310时,读取可用的缓冲器的数目306来实现。
命令生成模块604可用于生成和填充供传输给目标方302的写命令308。为了完成该任务,设定模块614可设定写命令308中的支持字段312,以指示发起方300支持XFR_RDY的动态允许和禁止。判定模块616随后可判定如何设定允许/禁止字段314。更具体地说,判定模块616可判定在目标方302可用的缓冲器的数目306是否大于发起方300具有的与目标方302的未决写命令的数目304。如果是,禁止模块620设定允许/禁止字段314,以便对于写命令308,禁止XFR_RDY。如果否,允许模块618设定允许/禁止字段314,以允许XFR_RDY。
一旦命令生成模块604生成了写命令308,命令发送模块606就把写命令308发送给目标方302。如果在写命令308中,XFR_RDY被允许,等待模块608等待来自目标302的XFR_RDY消息。一旦接收到该消息,数据发送模块610就把与写命令308相关的数据发送给目标方302,比如通过在一帧或多帧中发送所述数据。另一方面,如果XFR_RDY被禁止,数据发送模块610可发送数据,而不等待XFR_RDY消息。一旦数据发送模块610发送了数据,状态模块612就等待并读取来自目标方302的状态信息310。这可包括从状态信息310中,读取在完成写操作之后,在目标方302仍然可用的缓冲器的数目306。
图7是表示可包含在支持XFR_RDY的动态允许和禁止的目标方302内的各个模块的高级方框图。如图7中所示,在选择的实施例中,所述目标方302包括协商模块700、值跟踪模块702、检查模块704、判定模块706、分配模块708、发送模块710、可用性模块712、放弃模块714、处理模块716和响应模块718中的一个或多个。
如前所述,目标方302的协商模块700可在进程登录时,与发起方300的协商模块700协商,以判定是否支持某些特征。更具体地说,协商模块700可协商是否支持按XFR_RDY禁止模式操作,以及是否支持XFR_RDY的动态允许和禁止。值跟踪模块702可跟踪在目标方302可用的缓冲器的数目306。当一个缓冲器被使用时,值跟踪模块702可递减数目306。类似地,当在目标方302,一个缓冲器变得可用时,值跟踪模块702可递增数目306。
检查模块704可用于检查到来的写命令308。特别地,检查模块704可被配置成检查到来的写命令308的支持字段312和允许/禁止字段314。利用这些字段312、314中的信息,判定模块706可判定发起方300是否支持XFR_RDY的动态允许和禁止,和对于写命令308,XFR_RDY是被允许还是被禁止。如果对于写命令308,允许XFR_RDY,分配模块708为与写命令308相关的数据分配缓冲器,以及发送模块710向发起方300发送指示分配了缓冲器并且目标方302准备好接收数据的XFR_RDY消息。
另一方面,如果判定模块706判定对于写命令308,XFR_RDY被禁止,目标方302可简单地等待与写命令308相关的数据到达。当数据到达时,可用性模块712可判定是否至少一个缓冲器在目标方302可用于接收所述数据。如果没有缓冲器可用,当从发起方300接收到所述数据时,放弃模块714可放弃该数据。如果至少一个缓冲器可用,处理模块716可通过把与命令308相关的数据写入所述至少一个缓冲器中,来处理写命令308。响应模块718随后可把指示写操作的结果的状态310发送给发起方300。响应模块718可在状态310中包括指示在完成写操作之后,在目标方302仍然可用的缓冲器的数目的信息。
附图中的流程图和方框图图解说明按照本发明的各个实施例的系统、方法和计算机可用介质的各种可能实现的体系结构、功能和操作。在这方面,流程图或方框图中的每个方框可代表包含实现指定逻辑功能的一个或多个可执行指令的模块、程序段或一部分代码。另外应注意,在一些备选实现中,在方框中表示的功能可不按照附图中所示的顺序发生。例如,接连表示的两个方框事实上可以基本同时地执行,或者各个块有时可按照相反的顺序执行,取决于所涉及的功能。另外要注意,方框图和/或流程图中的每个方框,以及方框图和/或流程图中的各个方框的组合可用实现指定功能或动作的基于专用硬件的系统,或者专用硬件和计算机指令的组合来实现。

动态允许和禁止写XFR_RDY.pdf_第1页
第1页 / 共20页
动态允许和禁止写XFR_RDY.pdf_第2页
第2页 / 共20页
动态允许和禁止写XFR_RDY.pdf_第3页
第3页 / 共20页
点击查看更多>>
资源描述

《动态允许和禁止写XFR_RDY.pdf》由会员分享,可在线阅读,更多相关《动态允许和禁止写XFR_RDY.pdf(20页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103180840 A (43)申请公布日 2013.06.26 CN 103180840 A *CN103180840A* (21)申请号 201180051735.1 (22)申请日 2011.10.13 12/914,024 2010.10.28 US G06F 13/42(2006.01) (71)申请人 国际商业机器公司 地址 美国纽约 (72)发明人 SE克莱恩 DW谢尔曼 MJ卡洛斯 DN党 (74)专利代理机构 中国国际贸易促进委员会专 利商标事务所 11038 代理人 李玲 (54) 发明名称 动态允许和禁止写 XFR_RDY (57) 摘要 本发明。

2、涉及动态允许和禁止写XFR_RDY。 公开 一种动态允许和禁止 XFR_RDY 的使用的方法。在 本发明的一个实施例中, 所述方法包括在目标方 接收写命令, 和判定对于所述写命令, XFR_RDY 是 被允许还是被禁止。如果 XFR_RDY 被禁止, 所述 方法判定是否一个或多个缓冲器在目标方可用。 如果至少一个缓冲器可用, 所述方法通过把与所 述写命令相关的数据写入所述一个或多个缓冲器 中, 来处理所述写命令。 所述方法随后返回指示在 完成所述写命令之后, 在目标方仍然可用的缓冲 器的数目的信息。这里还公开和要求保护对应的 设备和计算机程序产品。 (30)优先权数据 (85)PCT申请进入国。

3、家阶段日 2013.04.26 (86)PCT申请的申请数据 PCT/EP2011/067866 2011.10.13 (87)PCT申请的公布数据 WO2012/055705 EN 2012.05.03 (51)Int.Cl. 权利要求书 2 页 说明书 10 页 附图 7 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书10页 附图7页 (10)申请公布号 CN 103180840 A CN 103180840 A *CN103180840A* 1/2 页 2 1. 一种动态允许和禁止 XFR_RDY 的方法, 所述方法包括 : 在目标方接收写命令 ;。

4、 判定对于所述写命令, XFR_RDY 是否被禁止 ; 如果 XFR_RDY 被禁止, 判定是否至少一个缓冲器在目标方可用 ; 如果至少一个缓冲器可用, 通过把与所述写命令相关的数据写入所述至少一个缓冲器 来处理所述写命令 ; 和 返回指示在完成所述写命令之后, 在目标方仍然可用的缓冲器的数目的信息。 2. 按照权利要求 1 所述的方法, 还包括如果所述至少一个缓冲器不可用, 在目标方放 弃与所述写命令相关的数据。 3. 按照权利要求 2 所述的方法, 其中放弃数据还包括返回指示所述写命令失败以及应 在 XFR_RDY 被允许的情况下重新驱动所述写命令的状态。 4. 按照任意前述权利要求所述的。

5、方法, 其中返回信息还包括把所述信息传送给写命令 的发起方。 5. 按照权利要求 4 所述的方法, 其中在向目标方传送 XFR_RDY 被禁止的另一个写命令 之前, 发起方判定在目标方仍然可用的缓冲器的数目是否大于发起方具有的与目标方的未 决写命令的数目。 6. 按照权利要求 5 所述的方法, 其中发起方被配置成如果发起方判定在目标方仍然可 用的缓冲器的数目大于发起方具有的与目标方的未决写命令的数目, 传送 XFR_RDY 被禁止 的另一个写命令。 7. 按照权利要求 5 所述的方法, 其中发起方被配置成如果发起方判定在目标方仍然可 用的缓冲器的数目不大于发起方具有的与目标方的未决写命令的数目。

6、, 传送 XFR_RDY 被允 许的写命令。 8. 一种包含保存在计算机可读介质上的计算机程序代码的计算机程序, 当被载入计算 机系统中并在计算机系统上执行时, 所述计算机程序代码使所述计算机系统执行按照权利 要求 1-7 任意之一所述的方法的所有步骤。 9. 一种动态允许和禁止 XFR_RDY 的系统, 所述系统包括 : 传送写命令的发起方 ; 接收所述写命令, 并判定对于所述写命令 XFR_RDY 是否被禁止的目标方 ; 目标方还被配置成如果 XFR_RDY 被禁止, 判定是否至少一个缓冲器在目标方可用 ; 目标方还被配置成如果至少一个缓冲器在目标方可用, 通过把与所述写命令相关的数 据写。

7、入所述至少一个缓冲器来处理所述写命令 ; 并且 目标方还被配置成向发起方返回指示在完成所述写命令之后, 在目标方仍然可用的缓 冲器的数目的信息。 10. 按照权利要求 9 所述的系统, 其中目标方还被配置成如果至少一个缓冲器不可用, 放弃与所述写命令相关的数据。 11. 按照权利要求 10 所述的系统, 其中目标方还被配置成如果数据被放弃, 返回指示 所述写命令失败以及应在 XFR_RDY 被允许的情况下重新驱动所述写命令的状态。 12. 按照权利要求 9-11 中任意之一所述的系统, 其中发起方还被配置成在向目标方传 送 XFR_RDY 被禁止的另一个写命令之前, 判定在目标方仍然可用的缓冲。

8、器的数目是否大于 权 利 要 求 书 CN 103180840 A 2 2/2 页 3 与目标方的未决写命令的数目。 13. 按照权利要求 12 所述的系统, 其中发起方还被配置成如果在目标方仍然可用的缓 冲器的数目大于与目标方的未决写命令的数目, 把 XFR_RDY 被禁止的另一个写命令传送给 目标方。 14. 按照权利要求 12 所述的系统, 其中发起方还被配置成如果在目标方仍然可用的缓 冲器的数目不大于与目标方的未决写命令的数目, 传送 XFR_RDY 被允许的写命令。 权 利 要 求 书 CN 103180840 A 3 1/10 页 4 动态允许和禁止写 XFR_RDY 技术领域 0。

9、001 本发明涉及动态切换传递就绪(XFR_RDY)允许模式和传递就绪(XFR_RDY)禁止模 式的设备和方法。 背景技术 0002 在光纤通道协议 (FCP) 写操作中, XFR_RDY 可被 FCP 目标设备用于通知 FCP 发起 方, 目标设备准备好接收 FCP 数据突发串。在进程登录 (PRLI) 时, 在两个 FCP 端口之间协 商XFR_RDY对于第一数据突发串的使用。 FCP端口协商或者在写操作中, 对第一FCP数据突 发串使用 XFR_RDY, 或者对第一突发串禁止 XFR_RDY。如果 XFR_RDY 被允许, 在接收到 FCP 写命令之后, 目标设备将为第一FCP数据突发串。

10、分配空间, 之后把XFR_RDY消息发送给发起 方。同样地, 只有在发起方接收到 XFR_RDY 消息后, 它才可以发送 FCP 写数据突发串。如果 XFR_RDY 被禁止, 发起方认为目标设备总是具有可用于接收第一数据突发串的 x 字节的数 据, 从而发起方将发送后面紧跟 FCP 数据的写命令, 而不等待 XFR_RDY 消息。对于受等待时 间约束的应用, 比如长距离数据复制来说, 无 XFR_RDY 允许的操作尤其有益。 0003 现代的光纤通道端口一般支持至少 4K 的并发光纤通道交换, 和每个数据突发串 至少 64K。假定这些值, 支持 XFR_RDY 禁止的 FCB 设备必须具有可用。

11、于接收第一数据突发 串的每个端口至少 64K4K=256MB 的内存。这是相当大量的内存, 尤其是考虑到现代存储 控制器可支持超过128个端口, 这转化为为第一数据突发串保留的32G(256MB128)内存。 不是所有的存储控制器都具有可用于保留如此多的内存, 以便在 XFR_RDY 禁止的情况下, 接收第一数据突发串的资源。 在没有保证可用于接收第一数据突发串的足够缓冲空间的情 况下, 需要能够在 XFR_RDY 被禁止的情况下工作的存储控制器具有以下选择 : 0004 第一种选择是不支持 XFR_RDY 禁止模式的操作。这是多数光纤通道设备实现的选 择。不过, 在许多结构 ( 比如长距离复。

12、制数据的结构 ) 中, 这种选择不可行, 因为它会不可 接受地影响写性能。这归因于禁止 XFR_RDY 要求发起方等待来自目标方的 XFR_RDY 消息, 之后才能够进行数据传递的事实。在许多结构中, 这样的延迟是不能接受的。 0005 第二种选择是支持发起方和目标方之间的数目有限的交换。 在其中过预订普遍的 竞争环境中, 这种选择不可行。 许多控制器需要支持每个端口登录的大量发起方, 同时每个 发起方并发地发送大量的交换。 0006 第三种选择是支持 XFR_RDY 禁止模式的操作, 但是限制第一数据突发串的大小。 对具有基于高速缓存跟踪 (cache track) 的体系结构的存储控制器来。

13、说, 这种选择并不可 行, 所述体系结构被配置成对于每个 64K 跟踪, 发送一个 XFR_RDY 消息。于是需要具有能够 支持最少 64K 的突发串大小。 0007 第四种选择是支持 XFR_RDY 禁止模式的操作, 但是不保证存在容纳在 XFR_RDY 被 禁止的情况下, 发生的最大数目的并发写传输的足够缓冲器。 换句话说, 目标设备被配置成 允许可用的缓冲空间的过预订。这种选择依赖于多数时间工作负荷不需要所有资源的事 实。不过, 如果工作负荷足够高, 从而需要比物理可用的缓冲空间更多的缓冲空间, 目标控 说 明 书 CN 103180840 A 4 2/10 页 5 制器必须或者放弃或者。

14、异常中止交换。这导致 I/O 错误, 从而导致性能退化和可能的 SAN 拥塞及其各种结果, 包括影响 SAN 中的其它设备。 0008 第五种选择是对于 FCP 端口, 在进程登录期间, 协商 XFR_RDY 的禁止。当缓冲空间 低于一定的阈值时, 目标方被配置成丢弃新到来的交换和 / 或注销主机。这会迫使主机再 次登录, 此时 FCP 端口可重新协商, 以允许 XFR_RDY。这种选择需要在能够允许或禁止 XFR_ RDY 使用之前, 终止所有的 I/O, 导致不希望的性能退化。 0009 鉴于上面所述, 需要一种减轻现有技术的上述缺陷的手段。 发明内容 0010 因而在第一方面, 本发明提。

15、供一种动态允许和禁止 XFR_RDY 的方法, 所述方法包 括 : 在目标方接收写命令 ; 判定对于所述写命令, XFR_RDY 是否被禁止 ; 如果 XFR_RDY 被禁 止, 判定是否至少一个缓冲器在目标方可用 ; 0011 如果至少一个缓冲器可用, 通过把与所述写命令相关的数据写入所述至少一个缓 冲器, 来处理所述写命令 ; 和返回指示在完成所述写命令之后, 在目标方仍然可用的缓冲器 的数目的信息。 0012 所述方法还可包括如果至少一个缓冲器不可用, 在目标方放弃与所述写命令相关 的数据。优选地, 放弃数据还包括返回指示所述写命令失败且应在 XFR_RDY 被允许的情况 下重新驱动所述。

16、写命令的状态。优选地, 返回信息还包括把所述信息传送给所述写命令的 发起方。优选地, 在向目标方传送 XFR_RDY 被禁止的另一个写命令之前, 发起方判定在目标 方仍然可用的缓冲器的数目是否大于发起方具有的与目标方的未决写命令的数目。优选 地, 发起方被配置成如果发起方判定在目标方仍然可用的缓冲器的数目大于发起方具有的 与目标方的未决写命令的数目, 传送 XFR_RDY 被禁止的另一个写命令。优选地, 发起方被配 置成如果发起方判定在目标方仍然可用的缓冲器的数目不大于发起方具有的与目标方的 未决写命令的数目, 传送 XFR_RDY 被允许的写命令。 0013 在第二方面, 提供一种包含保存在。

17、计算机可读介质上的计算机程序代码的计算机 程序, 当被载入计算机系统中, 并在计算机系统上执行时, 所述计算机程序代码使所述计算 机系统执行按照第一方面的方法的所有步骤。 0014 可以动态允许和禁止 XFR_RDY 的计算机程序产品的形式, 提供所述第二方面的发 明, 所述计算机程序产品包括其中包含有计算机可用程序代码的计算机可用存储介质, 所 述计算机可用程序代码包括 : 在目标方接收写命令的计算机可用程序代码 ; 判定对于所述 写命令, XFR_RDY 是否被禁止的计算机可用程序代码 ; 如果 XFR_RDY 被禁止, 判定是否至少 一个缓冲器在目标方可用的计算机可用程序代码 ; 如果至。

18、少一个缓冲器可用, 通过把与所 述写命令相关的数据写入所述至少一个缓冲器, 来处理所述写命令的计算机可用程序代 码 ; 和返回指示在完成所述写命令之后, 在目标方仍然可用的缓冲器的数目的信息的计算 机可用程序代码。 0015 在第三方面, 提供一种动态允许和禁止 XFR_RDY 的系统, 所述系统包括 : 传送写命 令的发起方 ; 接收所述写命令, 并判定对于所述写命令, XFR_RDY 是否被禁止的目标方 ; 目 标方还被配置成如果 XFR_RDY 被禁止, 判定是否至少一个缓冲器在目标方可用 ; 目标方还 被配置成如果至少一个缓冲器可用, 通过把与所述写命令相关的数据写入所述至少一个缓 说。

19、 明 书 CN 103180840 A 5 3/10 页 6 冲器, 来处理所述写命令 ; 并且目标方还被配置成向发起方返回指示在完成所述写命令之 后, 在目标方仍然可用的缓冲器的数目的信息。 0016 优选地, 目标方还被配置成如果至少一个缓冲器不可用, 放弃与所述写命令相关 的数据。 优选地, 目标方还被配置成如果数据被放弃, 返回指示所述写命令失败且应在XFR_ RDY被允许的情况下重新驱动所述写命令的状态。 优选地, 发起方还被配置成在向目标方传 送 XFR_RDY 被禁止的另一个写命令之前, 判定在目标方仍然可用的缓冲器的数目是否大于 与目标方的未决写命令的数目。优选地, 发起方还被。

20、配置成如果在目标方仍然可用的缓冲 器的数目大于与目标方的未决写命令的数目, 把 XFR_RDY 被禁止的另一个写命令传送给目 标方。优选地, 发起方还被配置成如果在目标方仍然可用的缓冲器的数目不大于与目标方 的未决写命令的数目, 传送 XFR_RDY 被允许的写命令。 0017 在一个实施例中, 动态允许和禁止 XFR_RDY 的方法可包括 : 从目标方接收指示在 目标方可用的缓冲器的数目的信息 ; 判定在目标方仍然可用的缓冲器的数目是否大于与目 标方的未决写命令的数目 ; 如果在目标方可用的缓冲器的数目大于与目标方的未决写命令 的数目, 传送 XFR_RDY 被禁止的写命令 ; 和如果在目标。

21、方可用的缓冲器的数目不大于与目 标方的未决写命令的数目, 传送XFR_RDY被允许的写命令。 所述方法还可包括如果XFR_RDY 被禁止的写命令失败, 在 XFR_RDY 被允许的情况下重新驱动写命令。 0018 本发明的实施例从而提供一种允许设备利用在 XFR_RDY 被禁止的情况下, 可能存 在的性能增益, 而不要求支持的最大数目的 FCP 写操作能够并发进行的解决方案。此外, 需 要一种能够以最小的写性能退化, 有效地允许和禁止 XFR_RDY 的解决方案。理想地, 这种解 决方案应允许设备当工作负荷变化时, 在交换对交换的基础上, 允许和禁止XFR_RDY。 因而, 提出了本发明, 以。

22、提供动态允许和禁止 XFR_RDY 的使用的设备和方法。根据以下说明和附 加的权利要求, 本发明的特征和优点将变得更明显, 或者依据下面记载的本发明的实践, 可 以获悉本发明的特征和优点。 0019 与上面所述一致, 这里公开一种动态允许和禁止 XFR_RDY 的使用的方法。在本发 明的一个实施例中, 所述方法包括 : 在目标方接收写命令, 和判定对于所述写命令, XFR_RDY 是被允许还是被禁止。如果 XFR_RDY 被禁止, 所述方法判定是否一个或多个缓冲器在目标 方可用。如果至少一个缓冲器可用, 所述方法通过把与所述写命令相关的数据写入所述一 个或多个缓冲器中, 来处理所述写命令。 所。

23、述方法随后返回指示在完成所述写命令之后, 在 目标方仍然可用的缓冲器的数目的信息。 0020 这里还公开和要求保护对应的设备和计算机程序产品。 附图说明 0021 下面参考附图, 举例说明本发明的优选实施例, 附图中 : 0022 图 1 是表示其中可实现按照本发明的实施例的设备和方法的网络环境的一个例 子的高级方框图 ; 0023 图 2 是表示允许网络设备之间的通信的组件的高级方框图 ; 0024 图 3 是表示发起方和目标方之间的通信的高级方框图 ; 0025 图4是表示由支持XFR_RDY的动态允许和禁止的发起方实现的方法的一个实施例 的流程图 ; 说 明 书 CN 103180840。

24、 A 6 4/10 页 7 0026 图5是表示由支持XFR_RDY的动态允许和禁止的目标方实现的方法的一个实施例 的流程图 ; 0027 图6是表示在支持XFR_RDY的动态允许和禁止的发起方内实现的各个模块的高级 方框图 ; 以及 0028 图7是表示在支持XFR_RDY的动态允许和禁止的目标方内实现的各个模块的高级 方框图。 具体实施方式 0029 易于理解可按照各种不同的结构, 布置和设计附图中说明和例示的本发明的实施 例的各个组件。从而, 在附图中表示的本发明的实施例的以下更详细说明并不意图限制要 求保护的本发明的范围, 仅仅代表目前构思的按照本发明的实施例的一些例子。 参考附图, 。

25、将更好地理解目前说明的实施例, 附图中, 相同的部分用相同的附图标记表示。 0030 所属技术领域的技术人员知道, 本发明可以实现为装置、 系统、 方法或计算机程序 产品。此外, 本发明可以采取硬件实施例、 配置成操作硬件的软件实施例 ( 包括固件、 驻留 软件、 微代码等)、 或者结合硬件和软件的实施例的形式, 本文一般都称为 “模块” 或 “系统” 。 此外, 本发明可采取用任何有形的表达介质体现的计算机可用存储介质的形式, 所述表达 介质保存有计算机可用程序代码。 0031 可以利用一个或多个计算机可用介质或计算机可读存储介质的任意组合保存计 算机程序产品。计算机可用或计算机可读存储介质。

26、例如可以是但不限于电、 磁、 光、 电磁、 红外线、 或半导体系统、 装置或器件。计算机可读存储介质的更具体例子 ( 非穷 举列表 ) 包括 : 具有一条或多条导线的电连接、 便携式计算机磁盘、 硬盘、 随机存取存储器 (RAM)、 只读存储器 (ROM)、 可擦式可编程只读存储器 (EPROM 或闪存 )、 光纤、 便携式光盘只 读存储器(CD-ROM)、 光存储器件或磁存储器件。 在本文的上下文中, 计算机可用或计算机可 读存储介质可以是任何能够包含、 存储或传送程序的任何介质, 该程序可以供指令执行系 统、 装置或者器件使用或者与其结合使用。 0032 可用一种或多种编程语言, 包括诸如。

27、 Java、 Smalltalk、 C+ 之类的面向对象编程 语言, 和诸如 “C” 编程语言或类似编程语言之类的常规过程编程语言的任意组合, 编写执行 本发明的操作的计算机程序代码。也可用诸如汇编语言之类的低级编程语言, 编写实现本 发明的计算机程序代码。 0033 下面参考按照本发明各个实施例的方法、 设备、 系统和计算机程序产品的流程图 和 / 或方框图, 说明本发明。应当理解, 流程图和 / 或方框图的每个方框, 以及流程图和 / 或方框图中的各个方框的组合可用计算机程序指令或代码实现。 这些计算机程序指令可被 提供给通用计算机、 专用计算机或者其它可编程数据处理设备的处理器, 从而产。

28、生机器, 以 致通过计算机或其它可编程数据处理设备的处理器执行的指令产生实现在流程图和 / 或 方框图的一个或多个方框中指定的功能 / 动作的装置。 0034 这些计算机程序指令也可被保存在计算机可读存储介质中, 所述计算机可读存储 介质可指令计算机或其它可编程数据处理设备按特定方式工作, 以致保存在计算机可读存 储介质中的指令产生制成品, 所述制成品包括实现在流程图和 / 或方框图的一个或多个方 框中指定的功能 / 动作的指令装置。 说 明 书 CN 103180840 A 7 5/10 页 8 0035 计算机程序指令也可被加载到计算机或其它可编程数据处理设备上, 使得在所述 计算机或其它。

29、可编程设备上执行一系列的操作步骤, 从而产生计算机实现的过程, 以致在 所述计算机或其它可编程设备上执行的指令提供实现在流程图和 / 或方框图的一个或多 个方框中指定的功能 / 动作的过程。 0036 参见图1, 图中图解说明网络体系结构100的一个例子。 介绍网络体系结构100是 为了表示其中可实现按照本发明的设备和方法的环境的一个例子。网络体系结构 100 只是 作为例子给出的, 并不意图限制本发明。实际上, 除了所示的网络体系结构 100 之外, 这里 公开的设备和方法还适用于各种不同的网络体系结构。 0037 如图所示, 网络体系结构 100 包括利用网络 104 互连的一个或多个计算。

30、机 102、 106。网络 104 例如可包括局域网 (LAN)104、 广域网 (WAN)104、 因特网 104、 企业内部网 104 等等。在一些实施例中, 计算机 102、 106 可包括客户端计算机 102 和服务器计算机 ( 这里 也称为 “主机系统” 106)。通常, 客户端计算机 102 发起通信会话, 而服务器计算机 106 等 待来自客户端计算机 102 的请求。在一些实施例中, 计算机 102 和 / 或服务器 106 可连接 到一个或多个内部或外部的直接连接的存储系统 112( 例如, 硬盘驱动器、 固态驱动器、 磁 带驱动器等等 )。这些计算机 102、 106 和直。

31、接连接的存储系统 112 可利用诸如 ATA、 SATA、 SCSI、 SAS、 光纤通道之类的协议, 进行通信。 0038 在一些实施例中, 网络体系结构 100 可包括在服务器 106 之后的存储网络 108, 比 如存储区域网 (SAN)108 或 LAN108( 例如, 当利用网络连接的存储器时 )。网络 108 可把服 务器106连接到一个或多个存储系统110, 比如硬盘驱动器或固态驱动器的阵列110a、 磁带 库 110b、 单个的硬盘驱动器 110c 或固态驱动器 110c、 磁带驱动器 110d、 CD-ROM 库等等。为 了访问存储系统 110, 主机系统 106 可通过从主。

32、机 106 上的一个或多个端口到存储系统 110 上的一个或多个端口的物理连接, 进行通信。连接可以经由交换机、 架构 (fabric)、 直接连 接等。在一些实施例中, 服务器 106 和存储系统 110 可以利用诸如光纤通道 (FC) 之类的连 网标准通信。 0039 参见图 2, 主机系统 106 和存储系统 110 都可包括通过存储网络 108, 与其它主机 系统 106 和存储系统 110 通信的一个或多个主机适配器 200。在一些实施例中, 主机适配 器 200 被实现成分别插入主机系统 106 和存储系统 110 的扩展插槽中的适配卡, 不过在所 有实施例中, 这不是强制性的。主。

33、机系统 106 和存储系统 110 上的主机适配器 200 可包括 便利通信的一个或多个端口 202。对于本说明来说, 发起通信 ( 例如, 通过发送命令 ) 的端 口 202 可被称为 “发起方” , 而接收并响应所述通信的端口 202 可被称为 “目标方” 。图 3 中 图解说明了表示发起方 300 和目标方 302 的一个例子的高级方框图。 0040 参见图 3, 如在上面的背景技术部分中所述, 在光纤通信协议 (FCP) 写操作中, FCP 目标方 302 可以利用 XFR_RDY 告知 FCP 发起方 300, 目标方 302 准备好接收 FCP 数据突发 串。可在进程登录 (PRL。

34、I) 时, 在两个 FCP 端口 202 之间协商对 XFR_RDY 使用第一数据突发 串。FCP 端口 202 可协商或者在写操作中, 对第一 FCP 数据突发串使用 XFR_RDY, 或者对第 一突发串禁止 XFR_RDY。如果 XFR_RDY 被允许, 在接收到 FCP 写命令之后, 目标方 302 将为 第一 FCP 数据突发串分配空间, 之后把 XFR_RDY 消息发送给发起方 300。同样地, 只有在发 起方接收到 XFR_RDY 消息后, 它才可以发送 FCP 写数据突发串。如果 XFR_RDY 被禁止, 发起 方 300 认为目标设备 302 总是具有可用于接收第一数据突发串的。

35、 x 字节的数据, 从而发起 说 明 书 CN 103180840 A 8 6/10 页 9 方 300 将发送后面紧跟 x 字节的 FCP 数据的写命令, 而不等待 XFR_RDY 消息。 0041 如在背景技术部分中所述, 无 XFR_RDY 允许的操作有益于受等待时间约束的结 构, 比如长距离数据复制(例如, 对等远程复制应用, 或者说PPRC)。 然而, 如上所述, 不是所 有的存储控制器都具有可用于保留为在 XFR_RDY 被禁止的情况下, 接收第一数据突发串而 需要的大量内存的资源。从而, 需要一种使设备能够利用对于有限数目的写操作, 使 XFR_ RDY 被禁止的性能优点的解决方。

36、案。此外需要一种以最小的写性能降低, 动态允许和禁止 XFR_RDY的使用的解决方案。 理想地, 这种设备和方法应允许设备在工作负荷变化时并在交 换对交换的基础上, 允许和禁止 XFR_RDY。 0042 图 3 表示动态允许和禁止 XFR_RDY 的使用的技术的概况。下面将结合图 4 和 5, 更 详细地说明该技术。该技术允许发起方 300 和目标方 302 利用与对于有限数目的写操作, 禁止 XFR_RDY 相关的性能增益。 0043 如图3中所示, 在选择的实施例中, 发起方300可被配置成留意它具有的与目标方 302 的 (XFR_RDY 被禁止的 ) 未决写命令 308 的数目 30。

37、4。未决写命令 308 可包括发起方 300 已发送给目标方 302, 但是还未接收到指示写命令 308 是成功还是失败的状态 310 的那 些写命令。在一些实施例中, 发起方 300 发送给目标方 302 的每个写命令 308 可包括支持 字段 312 和允许 / 禁止字段 314。 0044 支持字段 312 指示发起方 300 是否支持 XFR_RDY 的动态允许和禁止。在一些实施 例中, 支持字段 312 是单个比特。可以选择或配置该比特, 以致不支持 XFR_RDY 的动态允许 和禁止的目标方 302 将看不见该比特。当该比特被设定时, 发起方 300 可指示它支持两件 事物 : (。

38、1) 指示 XFR_RDY 被禁止的写命令 308 失败, 从而应在 XFR_RDY 被允许的情况下重新 驱动所述写命令 308 的状态消息 310 ; 和 (2) 指示写操作成功完成的状态消息 310, 其中状 态消息 310 包括指示在目标方 302 可用于服务来自发起方 300 的 XFR_RDY 被禁止的写操作 的缓冲器的数目 306 的信息。 0045 在其它实施例中, 可以使用不同于利用支持字段 312 的方法, 或者除了利用支持 字段 312 之外的方法, 确定发起方 300 和目标方 302 是否支持 XFR_RDY 的动态允许和禁止。 例如, 发起方300和目标方302可在登。

39、录阶段中, 或者作为特征交换协议或者其它适当协议 的一部分, 协商是否支持 XFR_RDY 的动态允许和禁止。在其它实施例中, 与包含在写命令 308 中相反, 支持字段 312 可被包含在帧报头或者其它适当位置中。 0046 发起方 300 可设定允许 / 禁止字段 314, 以指示对于其中包含允许 / 禁止字段 314 的特定写命令 308, XFR_RDY 是被允许还是被禁止。如果 XFR_RDY 被允许, 在发送与写命令 308 相关的数据之前, 发起方 300 将等待来自目标方 302 的 XFR_RDY 消息。另一方面, 如果 XFR_RDY 被禁止, 发起方 300 将在写命令 。

40、308 之后发送数据, 而不等待来自目标方 302 的 XFR_RDY 消息。在一些实施例中, 代替在写命令 308 中设置允许 / 禁止字段 314, 允许 / 禁 止字段 314 被包含在帧报头的控制字段或者其它适当位置中。 0047 目标方 302 可被配置成留意它可用于服务来自发起方 300 的写命令 308 的缓冲器 的数目 (Y)306。在一些实施例中, 目标方 302 为登录到目标方 302 的每个发起方 300 保持 不同的 “Y” 值。目标方 302 可根据进行中的写命令 308 的数目和登录到目标方 302 的发起 方 300 的数目, 动态改变 “Y” 的值。目标方 30。

41、2 还可由于其它原因, 比如需要把缓冲器用于 目标设备 302 上的其它操作, 来改变 “Y” 的值。 “Y” 的当前值是在任何特定时间, 在目标方 说 明 书 CN 103180840 A 9 7/10 页 10 302 可供发起方 300 利用的缓冲器的数目的快照。 0048 当目标方 302 处理写命令 308 时, 目标方 302 可答复以指示写操作 308 的成功或 失败的状态 310。状态消息 310( 或者另一个消息, 取决于期望的实现 ) 可指示在完成写命 令 308 之后, 在目标方 302 上仍然可用的缓冲器的数目 306。利用该信息 306, 发起方 300 可比较在目标。

42、方302可用的缓冲器的数目306, 和它具有的与目标302的未决写命令的数目 304。可进行所述比较, 以确定发起方 300 发送给目标方 302 的下一个写命令 308 的操作模 式 ( 即, XFR_RDY 是被允许还是被禁止 )。 0049 例如, 如果在目标方 302 可用的缓冲器的数目 306 大于发起方 300 具有的与目标 方 302 的未决写命令的数目 304, 发起方 300 可发送 XFR_RDY 被禁止的下一个写命令 308。 另一方面, 如果在目标方 302 可用的缓冲器的数目 306 小于或等于发起方 300 具有的与目 标方302的未决写命令的数目304, 发起方3。

43、00可发送XFR_RDY被允许的下一个写命令308。 允许 XFR_RDY 将使目标 302 可以在接收与写命令 308 相关的数据之前, 分配缓冲器。 0050 参见图 4, 图中图解说明由支持 XFR_RDY 的动态允许和禁止的发起方 300 实现的 方法 400 的一个实施例。如图所示, 发起方 300 首选判定它是否准备好传送写命令 ( 步骤 402)。如果发起方 300 接收到需要被写入目标设备 302 中的数据, 会发生所述判定。发起 方 300 随后在写命令 308 的控制字段 312 中, 指示它支持 XFR_RDY 的动态允许和禁止 ( 步 骤 404)。如前所述, 可以选择。

44、所述控制字段 312, 以致不支持 XFR_RDY 的动态允许和禁止的 目标方 302 看不见或者忽略所述控制字段 312。 0051 发起方 300 随后判定在目标方 302 可用的缓冲器的数目 306( 步骤 406)。这可通 过读取发起方 300 保持的 Y 的值来实现。在一些实施例中, 发起方 300 把它的 Y 的内部值 初始化为期望值, 随后当在状态消息 310 或其它适当消息中, 从目标方 302 接收到可用缓 冲器的数目 306 时更新 Y。发起方 300 还判定它具有的与目标方 302 的未决写命令的数目 304( 步骤 408)。当发起方 300 把写命令 308 发送给目。

45、标方 302, 并从目标方 302 接收到状 态消息 310 时, 发起方 300 可留意所述数目 304。 0052 在步骤 410, 如果在目标方 302 可用的缓冲器的数目 (Y)306 大于发起方 300 具有 的与目标方 302 的未决写命令的数目 (Z)304, 发起方 300 发送 XFR_RDY 被禁止的写命令 308(步骤412)。 发起方300随后把与写命令308相关的数据发送给目标方302(步骤412), 而不等待来自目标方 302 的 XFR_RDY 消息。在步骤 410, 如果在目标方 302 可用的缓冲器的 数目 306 小于或等于发起方 300 具有的与目标方 3。

46、02 的未决写命令的数目 304, 发起方 300 发送 XFR_RDY 被允许的写命令 308( 步骤 414)。发起方 300 随后等待接收来自目标方 302 的 XFR_RDY 消息 ( 步骤 416)。一旦发起方 300 接收到 XFR_RDY 消息, 发起方 300 就向目标 方 302 发送与写命令 308 相关的数据 ( 步骤 418)。 0053 一旦在步骤 412 或 418, 发起方 300 发送了数据, 发起方 300 就等待从目标方 302 接收状态310(步骤420)。 如果状态良好, 意味写操作成功完成, 发起方300从状态信息310 读取在目标方 302 可用的缓。

47、冲器的数目 ( 步骤 422)。该信息允许发起方 300 相应地为未来 的写命令 308 允许或禁止 XFR_RDY。另一方面, 如果状态不好, 意味写命令 308 没有成功完 成, 发起方300可进行错误恢复处理(步骤424)。 这可包括在较短的等待期之后, 沿着相同 的路径或者另一条路径, 重新驱动写命令 308。另外或者另一方面, 这可包括在 XFR_RDY 被 允许的情况下, 重新驱动写命令 308, 如果状态消息 310 指令发起方 300 这样做的话。当发 说 明 书 CN 103180840 A 10 8/10 页 11 起方 300 被告知写命令 308 没有成功完成时, 发起。

48、方 300 可把它的 Y 的内部值设定为 0, 以 反映在目标方 302 上目前没有任何缓冲器可用。另一方面, 目标方 302 可告知发起方 300, 没有任何缓冲器可用, 以致发起方可更新其 Y 值。发起方 300 随后对下一个写命令 308 重 复方法 400。 0054 参见图 5, 图中图解说明由支持 XFR_RDY 的动态允许和禁止的目标方 302 实现的 方法 500 的一个实施例。如图所示, 目标方 302 首选判定是否接收到了写命令 308( 步骤 502)。如果接收到了写命令 308( 步骤 502), 通过检查写命令 308, 目标方 302 判定 XFR_RDY 是否被禁。

49、止 ( 步骤 504)。如果 XFR_RDY 未被禁止, 目标方 302 分配缓冲器 ( 步骤 526), 并 向发起方 300 发送 XFR_RDY( 步骤 526)。当数据从发起方 300 到达时, 目标方 302 把数据写 入所述缓冲器中, 并向发起方 300 返回状态 310( 步骤 528), 状态 310 指示写操作的成功或 失败, 以及在完成写操作之后, 在目标方仍然可用的缓冲器的数目 306。 0055 在步骤 504, 如果 XFR_RDY 被禁止, 目标方 302 等待与写命令 308 相关的数据到达 ( 步骤 506), 而不发送 XFR_RDY。当数据到达时, 目标方 302 判定在目标方 302, 一个或多个 缓冲器是否可用(步骤508)。 如果一个或多个缓冲器可用, 目标方302通过把数据写入所述 缓冲器, 来处理写命令 308( 步骤 510)。目标方 302 随后判定发起方 300 是否支持 XFR_RDY 的动态允许和禁止 ( 步骤 512)。这可通过读取写命令 308 中的支持字段 312 来实现。如。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1