通过一个或多个主机计算设备的多个通道接收用于将数据传输到控制单元的缓冲区信用的制作方法

文档序号:13518235阅读:295来源:国知局
通过一个或多个主机计算设备的多个通道接收用于将数据传输到控制单元的缓冲区信用的制作方法

实施例涉及通过一个或多个主机计算设备的多个通道接收用于将数据传输到控制单元的缓冲区信用(buffercredit)。



背景技术:

输入/输出(i/o)操作可以用于在存储器与i/o处理系统的i/o设备之间传输数据。例如,通过执行i/o操作,可以将数据从存储器写入一个或多个i/o设备,以及可以将数据从一个或多个i/o设备读取到存储器。为了促进i/o操作的处理,可以采用i/o处理系统的i/o子系统。i/o子系统耦合到主存储器和i/o处理系统的i/o设备,并且在存储器与i/o设备之间引导信息流。i/o子系统的一个示例是通道子系统。通道子系统使用通道路径作为通信介质。每个通道路径包括耦合到控制单元的通道,该控制单元进一步耦合到一个或多个i/o设备。

在某些机制中,通道子系统和i/o设备可以以传输模式操作,该模式支持一个或多个命令控制块的传输以便在i/o设备与存储器之间传输数据。传输控制字(tcw)可以指定要执行的一个或多个i/o命令。对于启动某些i/o操作的命令,tcw指定与操作关联的存储区域、每当到达或来自该区域的传输完成时要采取的动作、以及其它选项。

在某些情况下,控制单元可以被包括在存储设备中。在其它情况下,控制单元可以被包括在存储控制器中,其中在存储控制器中执行的存储管理应用可以管理耦合到存储控制器的多个存储设备,例如磁盘驱动器、磁带驱动器、闪存驱动器等。用于与控制单元通信的通道可以由多个主机使用,这些主机可以访问存储在存储设备中的数据。

光纤通道指由美国国家标准协会开发的用于数据传输的一整套架构标准。光纤连接(ficon)是光纤通道架构的协议,并且正式名称还可以被称为fc-sb5。可以在由美国国家标准协会于2013年3月26日发布的出版物“fibrechannelsingle-bytecommandcodesetsmappingprotocol-5(fc-sb-5)(光纤通道单字节命令代码集映射协议5(fc-sb-5))”2.0版中找到fc-sb5的进一步细节。

通道是进行通信的设备之间的直接或交换式点到点连接。在光纤通道架构中,ficon通道可以借助控制单元或仿真控制单元执行由fc-sb5指定的功能以便提供对输入/输出(i/o)设备的访问。ficon通道可以依赖分组交换以便在进行通信的设备之间传输数据。

在某些情况下,如果以超过控制单元处理数据的能力的速率传输数据,则发送到i/o设备的数据传输可能导致i/o设备的相应控制单元处的数据溢出。

某些机制提供数据传输控制特性,数据传输控制特性允许控制单元指定可用于通道的第一传输缓冲区的数量和/或大小。在某些情况下,数据传输控制特性定义由控制单元指定的第一传输缓冲区大小(ftbs)值、以及第一传输缓冲区信用(ftbc)值。ftbc还可以被称为缓冲区信用。ftbs和ftbc存储在通道中,并且用于限制在第一数据传输消息中能够传输到控制单元的数据量。在其它情况下,响应于接收一个或多个i/o命令和/或执行i/o操作,控制单元能够经由发送到通道的响应消息来指定或动态地修改ftbc。可以在通道与控制单元之间的链路初始化(例如,在过程登录请求和响应消息中指示)期间建立对数据传输控制特性的支持。

高性能ficon(zhpf)扩展距离ii是一种增强的缓冲区管理功能,该功能用于改善长距离上大于第一突发大小(例如64kb)的ficon传输模式写入的性能,并且防止存储控制器端口中的低缓冲区条件导致存储区域网络(san)拥塞。这是对zhpf扩展距离的改进,该改进提供对禁用的第一传输就绪(firsttransferready)的支持。

美国专利公开2014/0359,168描述了用于在被配置为与控制单元通信的主机系统处执行i/o操作的机制。传输模式命令消息被从通道子系统发送到控制单元,所述命令消息包括用于要传输到由控制单元控制的i/o设备的数据的命令。数据传输消息被发送到控制单元,所述数据传输消息具有:要传输的数据量,该数据量小于或等于最大数据量;对应于与控制单元关联的缓冲区数的最大数据量;以及多个缓冲区中的每一者的大小,由主机系统中维护的值来指示该数量和大小。在某些机制中,通道在本地通道存储器中包括关于与通道所连接的控制单元关联的可用缓冲区的大小的信息。通道还可以包括关于控制单元的可用缓冲区信用的信息。例如,在启动i/o操作之前(例如,在登录或初始化过程期间),控制单元将缓冲区大小和/或缓冲区信用信息发送到通道。

美国专利8918542描述了用于在被配置为与控制单元通信的主机系统处执行由i/o操作指令启动的输入/输出(i/o)操作的机制。控制单元从主机系统的通道子系统接收传输模式命令消息,其中命令消息包括用于要在主机系统与由控制单元控制的i/o设备之间传输的数据的命令。命令重试(commandretry)消息被发送到通道子系统,所述命令重试消息包括命令消息被重新发送到控制单元的请求和指示请求原因的原因代码。

因此,美国专利8918542和美国公开2014/0359,168提供了可以在某些版本的ficon中实现的命令重试和传输缓冲区信用的细节。



技术实现要素:

提供一种方法、系统、以及计算机程序产品,其中主机计算设备的通道发送用于将数据传输到包括在存储控制器中的控制单元的命令。所述主机计算设备的所述通道从所述控制单元接收用于与所述控制单元通信的缓冲区信用数(numberofbuffercredits),其中所接收的所述缓冲区信用数基于所述控制单元在与包括所述通道的多个通道通信期间的监视时段内监视传输就绪操作数和重试操作数。

当所述通道将所接收的缓冲区信用数用于到所述控制单元的数据传输时,优选地保持高速率的数据传输。

在某些实施例中,所述多个通道中的每一者从所述控制单元接收相同的缓冲区信用数。因此,所有通道从所述控制单元接收关于缓冲区信用分配的相同优先级。

在进一步的实施例中,响应于所述控制单元确定在所述监视时段内使用传输就绪操作但未使用重试操作,并且响应于所述控制单元确定所述传输就绪操作数大于传输就绪阈值,所述通道接收增大的缓冲区信用数。由于增大的缓冲区信用数,所述通道可以在传输期间发送更多的数据。

在再进一步的实施例中,响应于所述控制单元确定在所述监视时段内使用重试操作但未使用传输就绪操作,并且响应于所述控制单元确定所述重试操作数大于重试低阈值,所述通道接收减小的缓冲区信用数。因此,所述通道不过度使用所述控制单元中的缓冲区空间。

在其他实施例中,响应于所述控制单元确定在所述监视时段内使用传输就绪操作和重试操作两者,并且响应于所述控制单元确定所述重试操作数大于重试高阈值,所述通道接收减小的缓冲区信用数。因此,所述通道不过度使用所述控制单元中的缓冲区空间。

在某些实施例中,所述多个通道中的每一者在所述多个通道与所述控制单元之间的通信的启动阶段的开始时接收所述缓冲区信用数,其中所接收的缓冲区信用数在被用于传输数据时导致传输就绪操作但不导致重试操作。所述多个通道中的每一者重复地接收高到足以消除任何传输就绪操作或者导致重试操作在从所述启动阶段的开始起的预定时间量内发生的增大的缓冲区信用数。因此,所述通道快速达到与所述控制单元的数据通信的稳定操作状态,其中在所述稳定操作状态下,以最佳传输就绪和重试数有效地执行数据传输。

在进一步的实施例中,当所述多个通道登录到所述控制单元时,发生所述启动阶段的开始。

还提供一种与存储控制器通信的主机计算设备,所述主机计算设备包括:存储器;以及耦合到所述存储器的处理器,其中所述处理器执行操作,所述操作包括:由所述主机计算设备的通道发送用于将数据传输到包括在存储控制器中的控制单元的命令;以及由所述主机计算设备的所述通道从所述控制单元接收用于与所述控制单元通信的缓冲区信用数,其中所接收的所述缓冲区信用数基于所述控制单元在与包括所述通道的多个通道通信期间的监视时段内监视传输就绪操作数和重试操作数。

附图说明

现在仅通过示例的方式并参考以下附图描述本发明的优选实施例,在附图中相同的参考标号表示对应部分:

图1示出根据某些实施例的计算环境的框图,该计算环境包括可以是控制单元的目标和可以是多个通道的多个启动器;

图2示出根据某些实施例的缓冲区信用利用的框图;

图3是示出根据某些实施例的命令重试的框图;

图4是示出根据某些实施例的缓冲区信用调整过程的操作的框图;

图5是示出根据某些实施例的用于优化传输就绪和重试的控制单元操作的第一流程图;

图6是示出根据某些实施例的如何平衡重试和传输就绪的框图;

图7是示出根据某些实施例的如何调整缓冲区信用以便优化重试和传输就绪数的第二流程图;

图8是示出根据某些实施例的如何调整缓冲区信用以便优化重试和传输就绪数的第三流程图;

图9是示出根据某些实施例的如何调整缓冲区信用以便优化重试和传输就绪数的第四流程图;

图10是示出根据某些实施例的在启动阶段中调整缓冲区信用的框图;

图11是示出根据某些实施例的在启动阶段和启动后阶段内执行的操作的第五流程图;

图12是示出根据某些实施例的在启动后阶段内调整的某些其它参数的框图;

图13是示出根据某些实施例的用于在启动后阶段中监视和在监视轮次之间等待的操作的第六流程图;

图14是示出根据某些实施例的基于作为写入百分比的重试和传输就绪数调整缓冲区信用的第七流程图;

图15是示出根据某些实施例的在启动后阶段中监视时段和相继监视轮次之间的等待时间的影响的框图;

图16是示出根据某些实施例的用于在启动阶段中增大缓冲区信用的操作的第八流程图;

图17是示出根据某些实施例的用于在启动阶段中增大缓冲区信用和用于在启动和启动后阶段中调整其它参数的操作的第九流程图;

图18示出根据某些实施例的多个主机的框图,这些主机包括经由一个或多个交换机与存储控制器的控制单元通信的多个通道;

图19示出根据某些实施例的发送用于将数据传输到控制单元的命令的通道和从控制单元接收缓冲区信用数的通道的框图;

图20示出根据某些实施例的当与控制单元通信时执行传输就绪操作和重试操作并且基于控制单元对传输就绪操作数和重试操作数的分析来从控制单元接收缓冲区信用数的通道的框图;

图21是示出根据某些实施例的由包括在一个或多个主机中的多个通道中的一个或多个通道执行的操作的第十流程图;

图22是示出根据某些实施例的由包括在一个或多个主机中的多个通道中的一个或多个通道执行的操作的第十一流程图;

图23示出根据某些实施例的云计算环境的框图;

图24示出根据某些实施例的图23的云计算环境的进一步细节的框图;以及

图25是示出根据某些实施例的可以包括在图1、18、19、20中所示的存储控制器或主机中的某些元件的计算系统的框图。

具体实施方式

在以下说明书中,参考形成说明书的一部分并示出若干实施例的附图。应当理解,可以使用其它实施例并且可以做出结构和操作更改。

提供某些实施例,其中控制单元(也被称为目标)基于某一时段内的传输就绪和重试数来调整缓冲区信用数,以便提高从多个通道到控制单元的数据传输的性能。调整缓冲区信用数,以使得可用缓冲区的数量不被用尽并且保持高速率的数据传输。

在某些情况下,根据fcp(光纤通道协议)或ficon标准,当传输就绪被禁用时,针对数据传输使用传输就绪被固定到一个第一突发缓冲区。当存储端口用完接收缓冲区时,它们可能抢占存储区域网络(san)的缓冲区信用并且导致光纤通道网络拥塞。

某些实施例提供用于通过使用第一传输缓冲区信用和传输模式命令重试特性来管理主机适配器中的接收缓冲区的机制。它用于缓解由缓慢的排出端口导致的光纤通道网络拥塞,并且当接收缓冲区供应不足时利用使用传输就绪来重试操作的能力。

某些实施例提供用于管理存储设备中的第一传输缓冲区的机制。在某些实施例中,当控制单元(目标)缺少缓冲区或缓冲区低时,传输命令重试请求被发送到通道,并且重试请求要求通道进行传输命令重试(经由传输就绪握手),该传输命令重试确定地将数据传输到控制单元。在某些实施例中,控制单元提供将可用的可能信用的指示,以使得不需要提前握手。还提供用于基于发生多少次重试或发生多少次传输就绪握手来调整通道的缓冲区信用的机制。

在某些实施例中,为了防止由于缺少缓冲区导致的拥塞,并且为了提供一种用于以最小重传使用传输就绪来重试的机制,提供一种控制系统以便利用在美国专利8918542和美国公开2014/0359,168中描述的ficon架构的改进,以使得实施例在缺少数据缓冲区时提供重试并向通道提供缓冲区信用,并且在该过程期间尝试优化缓冲区信用数。

某些实施例允许具有最少周转数的大型传输。在理想情况下,可以使用一次或两次周转来执行每个命令,具体取决于并发工作负载和缓冲区可用性。某些实施例大大减小当写入工作负载超过最大并发性时需要的重传数,并且还有效地利用可用的数据缓冲区资源。

某些实施例引入链路架构以便允许动态使用第一传输就绪已禁用/被需要和动态长度的第一突发数据。ficon通道可以基于操作(开始)判定是否针对第一突发数据禁用或需要传输就绪,并且当禁用传输就绪时,基于来自控制单元的信用提示来发送任意数量的数据。此外,控制单元端口提供将大型(例如,大于64k)第一突发数据信息单元(iu)序列接收到多个“第一突发”接收数据缓冲区中的能力。

示例性实施例

图1示出根据某些实施例的计算环境100的框图,计算环境100包括可以是控制单元的目标102和可以是多个通道的多个启动器104、106、…、108。控制单元102可以包括在存储控制器或存储设备101中,存储控制器或存储设备101管理来自多个通道104、106、…、108的数据传输。多个通道104、106、…、108可以包括在一个或多个主机110中。

存储控制器101包括控制单元102并且控制存储设备,并且主机110可以包括任何合适的计算设备,包括所属技术领域中当前已知的那些计算设备,例如个人计算机、工作站、服务器、大型机、手持式计算机、掌上型计算机、电话设备、网络设备、刀片计算机、处理设备等。存储控制器101和主机110可以是诸如存储区域网络、广域网、因特网、内联网之类的任何合适网络中的元件。在某些实施例中,存储控制器101和主机110可以是云计算环境中的元件。

多个通道104、106、…、108和控制单元102通过光纤通道协议(fcp)、ficon或任何其它合适的协议经由图1中所示的交换机112通信。

控制单元102包括控制单元应用114,控制单元应用11用于优化传输就绪和重试操作数以便提高控制单元102与通道104、106、…、108之间的数据传输的性能。控制单元应用114可以以软件、硬件、固件或它们的任何组合来实现。

控制单元102控制多个缓冲区116、118、...、120,这些缓冲区被共享以便存储由控制单元102从通道104、106、…、108接收的数据。在某些实施例中,缓冲区116、118、...、120被称为接收缓冲区。在某些实施例中,每个缓冲区的大小可以是64千字节并且可以存在2000个缓冲区。

控制单元应用114使用与缓冲区信用122、传输就绪计数器123、重试计数器124、传输就绪阈值126、重试低阈值128、以及重试高阈值130对应的数据结构,以便优化用于将数据从通道104、106、…、108传输到控制单元102的缓冲区116、118、...、120的传输就绪操作和重试操作数。传输就绪计数器123存储传输就绪操作数,并且重试计数器124存储重试操作数。在某些实施例中,因为作为用于重试过度运行(overrun)操作的请求的结果,多个操作可以使用传输就绪,所以在某些实施例中,通过从传输就绪操作总数中减去重试操作数来近似由于没有足够的缓冲区信用而使用传输就绪的操作数,并且在此类实施例中,传输就绪计数器123可以对应于此近似值。

因此,图1示出某些实施例,其中控制单元应用114通过根据fcp和ficon以及其它通信或传输协议来调整为通道104...108分配的缓冲区信用122,优化传输就绪操作和重试操作数。

图2示出根据某些实施例的缓冲区信用利用的框图。

在初始化期间,控制单元102可以向通道104提供缓冲区信用(如经由参考标号202所示)。在某些实施例中,缓冲区信用可以对应于ficon标准中的第一传输缓冲区信用(ftbc)值。

当向通道104提供缓冲区信用时,在发送数据期间,通道104以这样的方式将第一突发数据发送到控制单元102:使得第一突发数据包括多达缓冲区信用数量的数据(如经由参考标号204所示)。例如,如果缓冲区信用允许通道发送可以存储在多个缓冲区116、118、...、120中的多达八个缓冲区中的数据(例如,缓冲区信用是8),则在从通道104到控制单元102的第一数据突发期间,至少可以发送可以存储在多达8个缓冲区中的数据。因为通道104知道缓冲区信用数,所以除了无需任何缓冲区信用而可以另外在第一突发中发送的任何数据之外,它还知道其可以在第一突发中传输到控制单元102的数据量。

图3是示出根据某些实施例的命令重试的框图300。当已向通道104提供缓冲区信用时,通道104执行用于将第一突发数据发送到控制单元102的操作(参考标号302)。

因为多个通道104、106、…、108可能正在将数据传输到控制单元102,所以控制单元102可能发现在多个缓冲区116、118、...、120中没有空闲空间来存储由通道104传输的数据。如果控制单元102确定没有可用缓冲区来存储由通道104发送的数据,则控制单元102请求通道104使用传输就绪操作来重试该操作(参考标号304)。

控制单元102不必等待缓冲区可用。当发生使用传输就绪的重试(缓慢操作)时,由控制单元102接收重试的命令,并且然后当存在可用于接收数据的缓冲区时,控制单元102将传输就绪发送到通道以便请求数据。

在某些备选实施例中,控制单元102等待缓冲区可用,并且然后请求在不使用传输就绪的情况下重试(使用第一突发数据),但不能保证当数据最终到达时缓冲区仍然可用,并且系统可能无法保证操作将在第一次重试时成功(除非针对特定操作保留数据缓冲区)。控制单元102具有如下能力:基于它用于重试的原因代码,向通道104、106、…、108指示是否使用传输就绪来重试。

传输就绪操作是用于将数据从通道104传输到控制单元102的相对较慢的机制,因为传输就绪操作需要至少一次额外往返。光速决定了针对每个单向行程,i/o操作延迟5微秒/千米。高性能ficon上的读取操作通常需要单次往返或10微秒/千米。当传输就绪被禁用时,写入操作通常需要单次往返,并且当需要传输就绪时,写入操作通常需要至少两次往返。每个额外传输就绪可能需要额外往返。对于写入以及读取,确认增加5微秒/千米的额外单向行程。当客户使用高可用性(ha)配置(两个处理中心通常相距10-20千米)时,流水线操作尤为重要。在处理器故障的情况下,或者在主动-主动配置中,从远程主机处理器接收i/o。通常支持长达100千米的距离。使用通道扩展技术可以实现更长的距离。因为传输就绪操作需要至少两次往返,所以它可能比使用传输就绪已禁用的机制慢得多。

响应于向通道通知使用传输就绪操作来执行重试,通道104使用传输就绪操作将数据发送到控制单元102(参考标号306)。

因此,当多个缓冲区116、118、...、120中的可用空间不能容纳由处于传输就绪已禁用模式并且具有指示的缓冲区信用的通道104、106、…、108发送的数据时,则控制单元102可以向其数据不被容纳的通道指示应该经由相对缓慢的传输就绪操作来重试该操作。

图4是示出根据某些实施例的缓冲区信用调整过程的操作的框图400。在图4中,在方框402,通道之一(例如通道104)导致使控制单元102改变被授权的缓冲区信用122的条件。例如,如果授权太多的缓冲区信用,则缓冲区116、118、...、120太快地变满,并且必须使用依赖相对缓慢的传输就绪的重试。在这种情况下,可能期望减小缓冲区信用数122。

当控制单元102做出减小(例如,当存在太多重试时)或增大(例如,当存在许多使用传输就绪的操作时)缓冲区信用数的决策时,控制单元102将相同的缓冲区信用数扩展到多个通道104、106、…、108中的每个通道(如方框404中所示)。通过同样地处理通道,控制单元102防止任何单个通道以损害其它通道为代价来获得缓冲区116、118、...、120中的大多数空间。在备选实施例中,可能基于通道的历史数据传输需求或其它要求,向不同通道提供不同信用数。

图5是示出根据某些实施例的用于优化传输就绪和重试的控制单元操作的流程图500。图5中所示的操作可以在控制单元102中实现,并且可以由控制单元应用114执行。

控制在方框502开始,其中控制单元102确定在某一时段内针对来自多个通道104、106、…、108的通信已发生的重试和传输就绪(即,传输就绪操作)数。从方框502,控制并行继续到方框504、506。

在方框504,控制单元102判定是否已发生太多重试(即,重试操作)。如果已发生太多重试(“是”分支508),则已为每个通道分配太多缓冲区信用,并且在方框510,控制单元102针对每个通道减小缓冲区信用数。如果未发生太多重试(“否”分支505),则控制返回到方框502。

在方框506,控制单元102判定是否已发生太多传输就绪。如果已发生太多传输就绪(“是”分支512),则在缓冲区信用增大的情况下,系统性能可能提高,并且控制单元增大缓冲区信用数(在方框514)。如果未发生太多传输就绪(“否”分支507),则控制返回到方框502。

因此,图5示出其中基于重试和/或传输就绪数来调整缓冲区信用数的一个实施例。

图6是示出根据某些实施例的如何平衡重试和传输就绪的框图600。参考标号602示出沿着朝向页面右侧的箭头的方向增大的缓冲区信用数。如果缓冲区信用数大,则缓冲区116、118、...、120可能无法容纳来自通道的所有数据,并且可能需要重试(经由参考标号604所示)。如果缓冲区信用数小,则可能需要缓慢的传输就绪过程来传输数据(经由参考标号606所示)。控制单元应用114尝试调整缓冲区信用数(参考标号608),以使得系统处于期望的工作范围,其中期望的工作范围可以是预定工作范围。例如,预定的期望工作范围可以是在最近30秒内具有不多于0.5%的重试操作,并且在最近30秒内具有不多于0.5%的传输就绪操作(如经由参考标号610所示)。最佳工作条件可以是在最近30秒内重试操作少于0.1%并且不需要传输就绪。参考标号612和614示出不期望的工作范围,其中存在太多传输就绪(例如,在最近30秒内多于0.5%的操作)或太多重试(例如,在最近30秒内多于0.5%的操作)。

图7是示出根据某些实施例的如何调整缓冲区信用以便优化重试和传输就绪数的流程图700。图7中所示的操作可以在控制单元102中实现,并且可以由控制单元应用114执行。

控制在方框702开始,其中控制单元102在监视时段内持续监视传输就绪操作和重试操作。在某些实施例中,监视时段可以是30秒。

控制继续到方框704,其中控制单元102判定在监视时段内是否存在对传输就绪或重试的任何使用。如果仅使用传输就绪(即,没有重试)[分支706],则控制继续到方框712。如果仅使用重试(即,未使用传输就绪)[分支708],则控制继续到方框714。如果使用了传输就绪和重试两者[分支710],则控制继续到方框716。如果在监视时段内未使用传输就绪或重试(在方框704),则控制经由“否”分支718继续到方框702。

在方框712,判定对传输就绪的使用是否高于传输就绪阈值126。传输就绪阈值是低阈值(例如,0.2%的操作)并且被预先确定。如果是(“是”分支720),则控制继续到方框722,其中增大缓冲区信用。如果否(“否”分支724),则控制返回到方框702。

在方框714,判定对重试的使用是否高于“重试低阈值”128。例如,重试低阈值可以是0.1%的操作。如果对重试的使用高于“重试低阈值”(“是”分支726),则减小缓冲区信用(在方框728)。如果对重试的使用不高于“重试低阈值”726(“否”分支730),则控制返回到方框702。

当使用传输就绪和重试两者时,控制到达方框716。当使用传输就绪和重试两者时,要考虑4种情况。四种情况如下:

情况1:如果传输就绪数低于传输就绪阈值并且重试数低于重试高阈值,则控制单元102继续监视传输就绪和重试。

情况2:如果传输就绪数低于传输就绪阈值并且重试数高于重试高阈值,则控制单元2减小缓冲区信用数。

情况3:如果传输就绪数高于传输就绪阈值并且重试数低于重试高阈值,则在某些实施例中,控制单元102可以选择增大缓冲区信用,并且在其它实施例中,控制单元102可以选择继续监视传输就绪和重试。在其中控制单元102选择增大缓冲区信用的实施例中,系统可能达到下面情况4中所示的情形,其中可能必须减小缓冲区信用。为了避免由于反复增大和减小缓冲区信用而产生的来回摆动,在某些实施例中,为了简单起见,继续监视传输就绪和重试而不是增大缓冲区信用可能便以足够。在其中增大缓冲区信用的那些实施例中,控制单元102可以跟踪缓冲区信用的增大已经被执行一次,并且在摆动(即,在缓冲区信用增大之后减小缓冲区信用)的情况下,缓冲区信用不被再次增大。

情况4:如果传输就绪数高于传输就绪阈值并且重试数高于重试高阈值(例如0.5%的重试操作可以是重试高阈值),则控制单元102减小缓冲区信用。

鉴于上面所示的情况1-4,在某些实施例中,每当重试计数高于重试高阈值时,控制单元102就减小缓冲区信用而不管传输就绪数为何,并且另外继续监视传输就绪和重试。在图7中示出此类实施例,其中在方框716,判定对重试的使用是否高于“重试高阈值”130。如果是(“是”分支732),则控制继续到方框734,其中减小缓冲区信用。如果否(“否”分支736),则控制继续到方框702。

从其中调整缓冲区信用的方框722、728、734,控制单元102等待某一时段以便系统改变(例如,等待2秒,如经由参考标号735所示),然后再次在监视时段内监视传输就绪操作和重试操作(在方框702)。

因此,图7示出某些实施例,其中基于在监视时段内的传输就绪和重试的使用量,调整缓冲区信用以便提高数据传输的性能。

图8是示出根据某些实施例的如何调整缓冲区信用以便优化重试和传输就绪数的流程图800。图8中所示的操作可以在控制单元102中实现,并且可以由控制单元应用114执行。

控制在方框802开始,其中控制单元102在与多个通道104、106、…、108通信期间的监视时段内监视传输就绪操作数和重试操作数。基于所述监视,调整用于与多个通道104、106、…、108通信的缓冲区信用数122(在方框804)。

图9是示出根据某些实施例的如何调整缓冲区信用以便优化重试和传输就绪数的流程图900。图9中所示的操作可以在控制单元102中实现,并且可以由控制单元应用114执行。

控制在方框902开始,其中控制单元102在与多个通道104、106、…、108通信期间的监视时段内监视传输就绪操作数和重试操作数。

控制从方框902继续到方框904,其中响应于确定在监视时段内使用传输就绪操作但未使用重试操作,并且响应于确定传输就绪操作数大于传输就绪阈值,增大缓冲区信用数。

从方框904,控制继续到方框906,其中响应于确定在监视时段内使用重试操作但未使用传输就绪操作,并且响应于确定重试操作数大于重试低阈值,减小缓冲区信用数。

控制从方框906继续到方框908,其中响应于确定在监视时段内使用传输就绪操作和重试操作两者,并且响应于确定重试操作数大于重试高阈值,减小缓冲区信用数。

因此,图1-9示出某些实施例,其中控制单元102(也被称为目标)基于某一时段内的传输就绪和重试数来调整缓冲区信用数,以便提高从多个通道104、106、…、108到控制单元的数据传输的性能。调整缓冲区信用数,以使得可用缓冲区数不被用尽并且保持高速率的数据传输。

在启动阶段中调整缓冲区信用和其它参数

在某些实施例中,首先,可以向通道104、106、…、108提供比在控制单元102中可用的缓冲区数(例如,2000)少得多的缓冲区信用(例如,16)。通道104...108可以针对最初的i/o使用缓冲区信用,并且然后针对剩余i/o开始需要传输就绪操作。不应需要重试操作。应该注意,重试操作比传输就绪操作花费多得多的时间。理想的情况是,到达不需要传输就绪操作的点(如果可能)而不导致任何重试操作,并且相对快速地到达该时间点。

因为当在没有看到任何重试操作的情况下使用传输就绪操作时存在机会丢失,并且当重试操作开始使用传输就绪时数据速率自动变慢,所以更好的是宁可具有使用传输就绪的操作(因为重试),并且然后返回到未发生重试的位置。因此,在某些实施例中,以快于减小缓冲区信用的步调(pace)增大缓冲区信用。换言之,快速增大缓冲区信用,直到导致发生重试或不再使用传输就绪的情形,并且缓冲区信用减小的步调慢于启动阶段内的增大缓冲区信用的步调。

在某些实施例中,可能期望将系统设置为在工作负载启动的5分钟内到达重试点(或不再具有传输就绪)。从需要重试的观点看,可以在额外3-5分钟内到达稳定点。

图10是示出根据某些实施例的在启动阶段调整缓冲区信用的框图1000。

除了图1和其它图中所示的元件之外,控制单元102还可以包括以下各项的指示:启动阶段开始时的默认缓冲区信用数(参考标号1002)、启动阶段内的缓冲区信用的增量或乘数值(参考标号1004)、启动阶段中的监视时段(参考标号1006)、以及相继监视轮次之间的等待时间(参考标号1008)。

由控制单元102向通道104至108中的每一者提供的默认缓冲区信用数可以是16,其远远小于控制单元102中的可用缓冲区116...120的数量(该数量可以是2000)。当通道104...108执行登录操作(经由参考标号1010所示)以便经由交换机112连接到控制单元102时,可以提供默认值16。登录操作可以被视为启动阶段的开始。

启动阶段内的缓冲区信用的增量值1004可以被设置为16。在此类实施例中,在启动阶段内,在等候等待时间1008之后的每个监视时段1006之后,缓冲区信用增大了增量16。例如,如果监视时段为3秒并且等待时间为2秒,则最初缓冲区信用数被设置为16(默认值),并且在为3秒的第一个监视时段和为2秒的等待时间之后,如果需要,则使缓冲区信用数增大16以便变成32。随后,在为3秒的第二个监视时段和为2秒的等待时间之后,缓冲区信用数增大16以便变成48。代替增量值,可以使用缓冲区信用的乘数以便增大缓冲区信用。例如,使用乘数2,缓冲区信用可以从16增大到32,然后增大到64,然后再增大到128。

图11是示出根据某些实施例的在启动阶段和启动后阶段内执行的操作的第五流程图1100。图11中所示的操作可以在控制单元102中实现,并且可以由控制单元应用114执行。

控制在方框1102开始,其中启动阶段开始。例如,在某些实施例中,如果交换机112停机并且然后再次恢复启用,则启动阶段可以开始。当一个或多个端口联机并且多个通道(例如10个通道,诸如通道104...108)登录到控制单元102时,控制继续到方框1104。

控制继续到方框1106,其中控制单元102向每个通道提供默认缓冲区信用数(例如,16)。默认缓冲区信用数相对较低,因为传输就绪比重试的破坏性小。如果缓冲区信用在开始被设置为非常高的值,则在开始可能存在很多重试,并且这可能减慢系统的速度。

控制继续到方框1108,其中执行i/o并且控制单元102在小的时段(例如3秒)内监视传输就绪操作和重试操作。监视时段(即,采样时段)相对较小,以便通过相对快速地改变缓冲区信用来迅速调整系统。例如,每5秒(其中监视时段为3秒,并且相继监视之间的等待时间为2秒)经由增量值或乘数来增大缓冲区信用。

从方框1108,控制继续到方框1110,其中判定在监视期间,所有传输就绪是否被消除或是否发生重试操作。如果所有传输就绪被消除或发生任何重试操作,则启动阶段结束(参考标号1118示出启动阶段)并且控制经由分支1111继续到方框1112。

在方框1112,继续执行i/o,并且在与启动阶段相比更大的时段(例如,30秒)内(相继监视轮次之间具有等待时段(例如,2秒))监视传输就绪操作和重试操作。在启动阶段结束并且已分配合理的缓冲区信用值之后,在启动后阶段(经由参考标号1120所示)中不需要太频繁地改变缓冲区信用。

从方框1112,控制继续到方框1114,其中根据需要少量地调整缓冲区信用。例如,缓冲区信用可以被增大或减小的值最多为2,并且控制返回到方框1112。针对图7中的实施例的其它方面以一定的细节描述了由方框1112和1114形成的循环。

如果在方框1110判定在监视时段内未发生重试操作并且传输就绪未被消除(分支1115),则控制继续到方框1116,其中经由固定值或经由乘数或经由某种其它机制,大量(例如16或32)增大缓冲区信用。缓冲区信用快速增大,否则将需要太长时间来优化系统。随后控制返回到方框1108。

在某些实施例中,启动阶段118可能在不到5分钟的时间内结束,并且这可能是系统所期望的。为了实现这一点,缓冲区信用相对快速地增大。

图12是示出根据某些实施例的在启动后阶段内调整的某些其它参数的框图1200。

在启动后阶段中,控制单元102可以包括其它指标,所述指标指示启动后阶段中的监视时段(参考标号1202)和相继监视轮次之间的等待时间(参考标号1204)。例如,在某些实施例中,监视时段1202可以是30秒,并且等待时间1204可以是2秒。与启动阶段中的监视时段相比,启动后阶段中的监视时段可能大得多,因为不需要像在启动阶段(其中缓冲区信用从默认值起快速增大)中那样快速地改变缓冲区信用。

图13是示出根据某些实施例的用于在启动后阶段中监视和在监视轮次之间等待的操作的第六流程图1300。图13中所示的操作可以在控制单元102中实现,并且可以由控制单元应用114执行。

控制在方框1302开始,其中控制单元102在某一时段内(例如在30秒内)监视传输就绪操作和重试操作。控制继续到方框1304,其中判定是否需要调整缓冲区信用以便提高系统的性能(如经由至少图7中示出的操作所示)。如果是(“是”分支,参考标号1306),则控制继续到方框1308,其中调整缓冲区信用。如果否(“否”分支:参考标号1312),则控制返回到方框1302以便继续监视。

从方框1308,控制继续到方框1310,其中在下一轮监视之前执行等待,因为正在进行中的i/o操作必须完成。例如,在某些实施例中,在2秒等待之后,控制返回到方框1302以便进行下一轮监视。

在某些实施例中,在启动后阶段中,缓冲区信用可以被增大或减小固定数量(例如16)。但是,在备选实施例中,在启动后阶段中,可以通过可变数量调整缓冲区信用,并且在图14中提供一个此类实施例。

图14是示出根据某些实施例的基于作为写入百分比的重试和传输就绪数调整缓冲区信用的第七流程图1400。

控制在方框1402开始,其中控制单元1402确定监视时段内的写入数,并且还确定(在方框1404)监视时段内的重试和传输就绪数。在监视时段内,基于作为写入百分比的重试和传输就绪的函数,进行缓冲区信用的调整(即,增大或减小)。应该注意,信用的调整不仅仅基于重试或传输就绪数,而且还考虑在监视时段内发生的写入总数。所述调整基于重试或传输就绪的百分比而不是绝对计数。这样,信用的调整不受样本大小的影响。

图15是示出根据某些实施例的在启动后阶段中监视时段(参考标号1502)和相继监视轮次之间的等待时间(参考标号1512)的影响的框图1500。

如果用于监视的时间量高(参考标号1504),则它提供较大的采样时间,较大的采样时间可以提供对工作负载的更好读取,但可能需要较长的时间对缓冲区信用进行调整(经由参考标号1506所示)。在某些实施例中,对缓冲区信用的调整是当前缓冲区信用的固定增量或减量(例如16)。在其它实施例(如先前的图14中所示)中,缓冲区信用的增大或减小的大小取决于作为写入百分比的传输就绪和重试数。可以注意,较长的监视时间不需要更多的监视资源,因为无论监视时间为何,在每个i/o上都发生对传输就绪或重试的计数。

太小的监视时段(即,监视时段低1508)可导致不代表系统稳定状态的样本,并且可导致缓冲区信用的上下摆动。太频繁的更新还导致将缓冲区信用传送到通道的更多系统影响(如经由参考标号1510所示)。

等待时间的影响如下:等待太长(参考标号1514)可能延迟对当前工作负载的调整,并且可能导致系统错过样本(参考标号1516)。太短的等待时间(参考标号1518)可能无法提供足够的时间以便活动i/o完成并且使系统调整到更新后的缓冲区信用(参考标号1520)。

图16是示出根据某些实施例的用于在启动阶段中增大缓冲区信用的操作的第八流程图1600。图16中所示的操作可以在控制单元102中实现,并且可以由控制单元应用114执行。

控制在方框1602开始,其中响应于开始一个或多个通道104、106、…、108与控制单元102之间的通信的启动阶段,控制单元102向一个或多个通道104、106、…、108提供缓冲区信用数(例如,16),其中当被用于传输数据时,所提供的缓冲区信用数导致传输就绪操作但不导致重试操作。控制单元102使缓冲区信用数重复地增大(在方框1604)某一数量(例如,增大16或32或经由乘数增大),该数量高到足以消除任何传输就绪操作,或者导致重试操作在从启动阶段开始起的预定时间量(例如5分钟)内发生。因此,在预定时间量内达到最佳缓冲区信用数,例如,可以在从通信的启动阶段开始起的5分钟内达到最佳缓冲区信用数。

图17是示出根据某些实施例的用于在启动阶段中增大缓冲区信用和用于在启动和启动后阶段中调整其它参数的操作的第九流程图1700。图17中所示的操作可以在控制单元102中实现,并且可以由控制单元应用114执行。

控制在方框1702开始,其中当一个或多个通道104…108登录到控制单元102时,发生启动阶段的开始。控制继续到方框1704,其中响应于开始一个或多个通道与控制单元102之间的通信的启动阶段,控制单元102向一个或多个通道104…108提供缓冲区信用数,其中当被用于传输数据时,所提供的缓冲区信用数导致传输就绪操作但不导致重试操作。

在提供缓冲区信用数之后,控制单元102在某一时段内监视通信(在方框1706)以便确定重试操作数和传输就绪操作数。因此,控制单元102可以确定系统执行i/o操作的有效程度。

从方框1706,控制并行继续到方框1708和1710。

在方框1708,在监视之后,控制单元102响应于确定已发生传输就绪操作并且未发生重试操作,使缓冲区信用数增大某一数量(经由固定增量或经由乘数或经由某种其它机制),其中每个监视时段之间的等待时间足以允许正在进行中的i/o操作完成。

在方框1710,在监视之后,响应于确定传输就绪操作已被消除或已发生重试操作,退出启动阶段。因此,在预定时间量内,退出启动阶段,并且针对操作的启动后阶段,缓冲区信用被设置为足够高的值。

在方框1712,响应于退出启动阶段,增大用于确定重试操作数和传输就绪操作数的监视时段,以便在启动后阶段中增大、减小缓冲区信用数或使缓冲区信用数保持不变。因此,在启动后阶段中,增大监视时段,并且缓冲区信用的变化没有启动阶段中频繁。

因此,图10-17示出某些实施例,其中在启动阶段内,缓冲区信用以预定值开始,并且以相对大的增量快速地增大,以使得在大约5分钟或更短时间内快速退出启动阶段。随后,在启动后阶段中,相对缓慢地改变缓冲区信用,并且增量或减量的变化比启动阶段小。

由通道接收用于传输数据的缓冲区信用

尽管控制单元102在启动阶段内和启动后阶段内均确定缓冲区信用的调整,但与控制单元102通信的通道至少基于从控制单元102接收的缓冲区信用来执行用于与控制单元102通信的操作。图18-22描述至少由包括在与控制单元102通信的主机计算设备中的通道执行的某些操作。

图18示出根据某些实施例的多个主机100…1802的框图1800,这些主机包括经由一个或多个交换机112与存储控制器101的控制单元102通信的多个通道104、106、…、108、1804。多个主机中的每个主机还可以被称为主机计算设备。

先前已在图1-18中和图1-18的说明中描述包括在控制单元102内的元件。

多个主机110…1802可以包括任何合适的计算设备,包括所属技术领域中当前已知的那些计算设备,例如个人计算机、工作站、服务器、大型机、手持式计算机、掌上型计算机、电话设备、网络设备、刀片计算机、处理设备等。

多个主机110…1802中的每个主机可以通过一个或多个交换机112,经由一个或多个通道与存储控制器101(其中存储控制器101可以是存储设备或计算设备或任何其它设备)的控制单元102通信。例如,在某些实施例中,主机110可以包括多个通道(经由参考标号104、106、…、108所示),并且主机1802可以包括多个通道(经由参考编号1804所示)。

多个主机110…1802中的每个主机还包括主机计算设备应用(例如,1806、1808),该应用以软件、硬件、固件或它们的任何组合来实现。主机计算设备应用1806、1808控制通道104、106、...108、1804到控制单元102的通信。

图19是示出根据某些实施例的发送用于将数据传输到控制单元102的命令的通道104、106、…、108和从控制单元102接收缓冲区信用数的通道104、106、…1808的框图1900。

主机110的主机计算设备应用1806控制通道104、106、…、108到存储控制器101的控制单元102的通信。通道104、106、…108中的一者或多者发送用于将数据传输到控制单元102的命令(如经由参考标号1902所示)。作为响应,通道104、106、108定期从控制102接收缓冲区信用数以便在到控制单元102的后续数据传输(如经由参考标号1904所示)中使用。

图20示出根据某些实施例的当与控制单元102通信时执行传输就绪操作2002和重试操作2004的通道104…108的框图2000,其中通道104…108基于控制单元102对某一时段内的传输就绪操作数和重试操作数的分析而从控制单元102接收缓冲区信用数2006…2008。先前已在图1-17中描述由控制单元102执行以便确定要提供的缓冲区信用数的分析。

控制单元102包括监视时段2010,监视时段2010可能在启动阶段中和启动后阶段中不同,如先前经由图10中的参考标号1006和图12中的参考标号1202所示。在监视时段2010内,控制单元102监视传输就绪操作和重试操作以便确定要向通道104…108中的每一者指示的缓冲区信用数。

图21是示出根据某些实施例的由包括在一个或多个主机110…1802中的多个通道104…108、1804中的一者或多者执行的操作的第十流程图2100。可以在一个或多个主机110…1802中,经由主机计算设备应用1806…1808和/或通道104…108、1804执行图21中所示的操作。

控制在方框2102开始,其中主机计算设备110的通道(例如,通道104)发送用于将数据传输到包括在存储控制器101中的控制单元102的命令。

控制继续到方框2104,其中主机计算设备110的通道104从控制单元102接收用于与控制单元102通信的缓冲区信用数2006,其中所接收的缓冲区信用数2006基于控制单元102在与包括通道104的多个通道104…108、1804通信时的监视时段2010内监视传输就绪操作数2002和重试操作数2004。在某些实施例中,多个通道104…108、1804中的每一者从控制单元102接收相同的缓冲区信用数。

从方框2104,控制可以并行继续到方框2106、2108和2110。在方框2106,响应于控制单元102确定在监视时段内使用传输就绪操作但未使用重试操作,并且响应于控制单元102确定传输就绪操作数大于传输就绪阈值126,通道104接收增大的缓冲区信用数。

在方框2108,响应于控制单元102确定在监视时段内使用重试操作但未使用传输就绪操作,并且响应于控制单元确定重试操作数大于重试低阈值128,通道104接收减小的缓冲区信用数。

在方框2110,响应于控制单元102确定在监视时段内使用传输就绪操作和重试操作两者,并且响应于控制单元102确定重试操作数大于重试高阈值130,通道104接收减小的缓冲区信用数。

从方框2106、2108、2110,在通道104(或多个通道104…108、1804中的每一者)接收增大或减小的缓冲区信用数之后,通道存储所接收的缓冲区信用数(如经由参考标号2112所示),并且控制继续到方框2102以便进一步将命令从一个或多个通道104…108、1804发送到控制单元102。

因此,图21示出某些实施例,其中基于通道104…108、1804从控制单元102接收的已接收缓冲区信用数,通道104…108、1804将数据传送到控制单元102。

图22是示出根据某些实施例的在与控制单元102通信的启动阶段内,由包括在一个或多个主机110…1802中的多个通道104…108、1804中的一个或多个通道执行的操作的第十一流程图。可以在一个或多个主机110…1802中,经由主机计算设备应用1806…1808和/或通道104…108、1804执行图22中所示的操作。

控制在方框2202开始,其中多个通道104…108、1804登录到控制单元102以便开始启动阶段。

控制继续到方框2204,其中多个通道104…108、1804中的每一者在多个通道104…108、1804与控制单元102之间的通信的启动阶段开始时接收缓冲区信用数,其中当被用于传输数据时,所接收的缓冲区信用数导致传输就绪操作但不导致重试操作。

控制继续到方框2206,其中多个通道104…108、1804中的每一者重复接收高到足以消除任何传输就绪操作或者导致重试操作在从启动阶段开始起的预定时间量(例如,5分钟)内发生的增大的缓冲区信用数。

因此,图18-22示出至少在包括在主机计算设备中的一个或多个通道中执行的操作。所述操作包括基于从控制单元接收的对缓冲区信用的指示,将数据传输到控制单元。

示例

在第一组实施例的第一实施例中,控制单元在与多个通道通信期间的监视时段内监视传输就绪操作数和重试操作数。基于所述监视,调整用于与所述多个通道通信的缓冲区信用数。

在所述第一组实施例的第二实施例中,所述第一实施例的主题可以包括执行所述缓冲区信用数的调整,以便使相对于写入操作数的传输就绪操作和重试操作数处于预定工作范围内。因此,系统避免执行太多的重试或传输就绪。

在所述第一组实施例的第三实施例中,所述第一实施例或所述第二实施例的主题可以包括通过从传输就绪操作总数中减去被请求重试的操作数,确定调整后的传输就绪操作数以便调整所述缓冲区信用数。因此,由于重试导致的传输就绪操作被考虑在内。

在所述第一组实施例的第四实施例中,所述第一实施例的主题可以包括响应于确定在所述监视时段内使用传输就绪操作但未使用重试操作,并且响应于确定所述传输就绪操作数大于传输就绪阈值,增大所述缓冲区信用数。响应于确定所述传输就绪操作数不大于所述传输就绪阈值,所述控制单元在与所述多个通道通信期间的额外监视时段内继续监视所述传输就绪操作数和所述重试操作数。

在所述第一组实施例的第五实施例中,所述第一实施例的主题可以包括响应于确定在所述监视时段内使用重试操作但未使用传输就绪操作,并且响应于确定所述重试操作数大于重试低阈值,减小所述缓冲区信用数。响应于确定所述重试操作数不大于所述重试低阈值,所述控制单元在与所述多个通道通信期间的额外监视时段内继续监视所述传输就绪操作数和所述重试操作数。

在所述第一组实施例的第六实施例中,所述第一实施例的主题可以包括响应于确定在所述监视时段内使用传输就绪操作和重试操作两者,并且响应于确定所述重试操作数大于重试高阈值,减小所述缓冲区信用数。

在所述第一组实施例的第七实施例中,所述第六实施例的主题可以包括响应于确定所述重试操作数不大于重试高阈值,所述控制单元在与所述多个通道通信期间的额外监视时段内继续监视所述传输就绪操作数和所述重试操作数。

在所述第一组实施例的第八实施例中,所述第一实施例的主题可以包括响应于确定在所述监视时段内使用传输就绪操作但未使用重试操作,并且响应于确定所述传输就绪操作数大于传输就绪阈值,增大所述缓冲区信用数。此外,响应于确定在所述监视时段内使用重试操作但未使用传输就绪操作,并且响应于确定所述重试操作数大于重试低阈值,减小所述缓冲区信用数。此外,响应于确定在所述监视时段内使用传输就绪操作和重试操作两者,并且响应于确定所述重试操作数大于重试高阈值,减小所述缓冲区信用数。

在所述第一组实施例的第九实施例中,存储控制器与一个或多个主机通信,所述存储控制器包括存储器以及耦合到所述存储器的处理器,其中所述处理器执行操作,所述操作包括:由所述存储控制器的控制单元在与所述一个或多个主机的多个通道通信期间的监视时段内监视传输就绪操作数和重试操作数;以及基于所述监视,调整用于与所述一个或多个主机的所述多个通道通信的缓冲区信用数。

在第二组实施例的第一实施例中,响应于一个或多个通道与控制单元之间的通信的启动阶段的开始,所述控制单元向所述一个或多个通道提供缓冲区信用数,其中当被用于传输数据时,所提供的缓冲区信用数导致传输就绪操作但不导致重试操作。所述控制单元使所述缓冲区信用数重复增大某一数量,该数量高到足以消除任何传输就绪操作或者导致重试操作在从启动阶段开始起的预定时间量内发生。因此,在预定时间量内达到最佳缓冲区信用数,例如,可以在从通信的启动阶段开始起的5分钟内达到最佳缓冲区信用数。

在所述第二组实施例的第二实施例中,所述第一实施例的主题可以包括当所述一个或多个通道登录到所述控制单元时,发生启动阶段的开始。

在所述第二组实施例的第三实施例中,所述第一实施例的主题可以包括在提供所述缓冲区信用数之后,所述控制单元在某一时段内监视通信以便确定重试操作数和传输就绪操作数。因此,所述控制单元能够确定系统执行输入/输出(i/o)操作的有效程度。

在所述第二组实施例的第四实施例中,所述第三实施例的主题可以包括在所述监视之后,所述控制单元响应于确定已发生传输就绪操作并且未发生重试操作,使所述缓冲区信用数增大预定数量。

在所述第二组实施例的第五实施例中,所述第四实施例的主题可以包括在所述监视之后,响应于确定传输就绪操作已被消除或已发生重试操作,退出启动阶段。因此,在所述预定时间量内退出启动阶段,且所述缓冲区信用被设置为用于操作的启动后阶段的足够高的值。

在所述第二组实施例的第六实施例中,所述第五实施例的主题可以包括响应于退出启动阶段,增大监视时段以确定所述重试操作数和所述传输就绪操作数,以便在启动后阶段中增大、减小所述缓冲区信用数或使所述缓冲区信用数保持不变。因此,在启动后阶段中,增大所述监视时段,并且所述缓冲区信用的变化没有启动阶段中频繁。

在所述第二组实施例的第七实施例中,所述第六实施例的主题可以包括如果所述监视时段相对高,则确定对工作负载的更好读取,但对缓冲区信用进行调整的时间增大,并且其中如果监视时间低于相对低的预定时间,则发生所述缓冲区信用的频繁上下摆动,并且必须将所述缓冲区信用的更频繁更新发送到所述一个或多个通道。

在所述第二组实施例的第八实施例中,所述第三实施例的主题可以包括每个监视之间的等待时间足以允许正在进行中的输入/输出(i/o)操作完成。

在所述第二组实施例的第九实施例中,存储控制器与一个或多个主机通信,所述存储控制器包括:存储器;以及耦合到所述存储器的处理器,其中所述处理器执行操作,所述操作包括:响应于一个或多个通道与所述存储控制器的控制单元之间的通信的启动阶段的开始,由所述控制单元向所述一个或多个通道提供缓冲区信用数,其中当被用于传输数据时,所提供的缓冲区信用数导致传输就绪操作但不导致重试操作;以及由所述存储控制器的所述控制单元使所述缓冲区信用数重复增大某一数量,该数量高到足以消除任何传输就绪操作,或者导致重试操作在从启动阶段开始起的预定时间量内发生。

在第三组实施例的第一实施例中,主机计算设备的通道发送用于将数据传输到包括在存储控制器中的控制单元的命令。所述主机计算设备的所述通道从所述控制单元接收用于与所述控制单元通信的缓冲区信用数,其中所接收的缓冲区信用数基于所述控制单元在与包括所述通道的多个通道通信时的监视时段内监视传输就绪操作数和重试操作数。

在所述第三组实施例的第二实施例中,所述第一实施例的主题可以包括所述多个通道中的每一者从所述控制单元接收相同的缓冲区信用数。

在所述第三组实施例的第三实施例中,所述第一或第二实施例的主题可以包括响应于所述控制单元确定在所述监视时段内使用传输就绪操作但未使用重试操作,并且响应于所述控制单元确定所述传输就绪操作数大于传输就绪阈值,所述通道接收增大的缓冲区信用数。

在所述第三组实施例的第四实施例中,所述第一、第二或第三实施例的主题可以包括响应于所述控制单元确定在所述监视时段内使用重试操作但未使用传输就绪操作,并且响应于所述控制单元确定所述重试操作数大于重试低阈值,所述通道接收减小的缓冲区信用数。

在所述第三组实施例的第五实施例中,所述第一、第二、第三或第四实施例的主题可以包括响应于所述控制单元确定在所述监视时段内使用传输就绪操作和重试操作两者,并且响应于所述控制单元确定所述重试操作数大于重试高阈值,所述通道接收减小的缓冲区信用数。

在所述第三组实施例的第六实施例中,所述第一、第二、第三、第四或第五实施例的主题可以包括所述多个通道中的每一者在所述多个通道与所述控制单元之间的通信的启动阶段开始时接收所述缓冲区信用数,其中当被用于传输数据时,所接收的缓冲区信用数导致传输就绪操作但不导致重试操作。所述多个通道中的每一者重复接收增大的缓冲区信用数,该数量高到足以消除任何传输就绪操作,或者导致重试操作在从启动阶段开始起的预定时间量内发生。

在所述第三组实施例的第七实施例中,所述第一、第二、第三、第四、第五或第六实施例的主题可以包括当所述多个通道登录到所述控制单元时,发生启动阶段的开始。

在所述第三组实施例的第八实施例中,主机计算设备与存储控制器通信,所述主机计算设备包括:存储器;以及耦合到所述存储器的处理器,其中所述处理器执行操作,所述操作包括:由所述主机计算设备的通道发送用于将数据传输到包括在所述存储控制器中的控制单元的命令;以及由所述主机计算设备的所述通道从所述控制单元接收用于与所述控制单元通信的缓冲区信用数,其中所接收的缓冲区信用数基于所述控制单元在与包括所述通道的多个通道通信时的监视时段内监视传输就绪操作数和重试操作数。

某些其它实施例

在某些其它实施例中,控制单元确定通道传输多少数据、以及当该通道在光纤通道通信中接收到序列发起(sequenceinitiative)时是否需要额外的传输就绪。在调整期间,需要注意避免在需要多个操作以使用传输就绪的太少信用(即,缓冲区信用)与必须重试多个操作的太多信用之间移动。

所述实施例可以使用以下机制:

(a)如果控制单元由于没有可用缓冲区而必须重试操作,则控制单元可以确定它已给出太多信用。

(b)当控制单元未请求重试时,如果控制单元接收需要传输就绪的操作,则控制单元可以确定通道具有不足的信用。

(c)如果控制单元没有看到任何需要重试的操作或者需要传输就绪的操作,则控制单元可以确定通道具有理想的信用。

(d)当针对端口存在缓冲区不足时,可能丢弃数据并且可能发生重试。可以使用传输就绪执行所重试的操作,这可能内在地减慢链路数据速率,这是因为在远处引起数据速率下降、以及在缓冲区可用并接收传输就绪之前将数据保存在通道中。这又可能减小重试数并导致稳定操作。

(e)在控制单元处丢弃数据并且执行重试不会损害控制单元端口,因为它不消耗控制单元资源。它确实影响链路速率,这是由于重传造成的(30%的重试将导致多使用30%的可用带宽,因为最多可发生一次重传。如果额外带宽可用,则这不是问题,但在昂贵的长距离复制链路上,该带宽是昂贵的)。重试还影响发送者,因为它消耗存储带宽以便重传数据。

(f)当存在缓冲区不足时,所重试的操作是在0个缓冲区可用时接收数据的操作。在统计上,这可能导致在发生重试的所有通道处的重试的均匀分布。因此,当发生重试时,在某些实施例中希望同时针对所有通道减小信用,而不是当在单个通道上发生重试时针对该通道减小信用。

(g)消耗多个缓冲区的较大传输比单个缓冲区操作更容易被重试,但由于数据传输时间与处理时间的比率,较小操作对响应时间的影响更大。

(h)向不需要或不使用信用的通道提供太多信用不会针对系统导致太多问题。

(i)向通道提供太少的信用可能导致对传输就绪的使用。当在控制单元处具有足够的可用缓冲区时,使用传输就绪导致机会损失。

(j)当在控制单元处存在缓冲区不足时,由于通道处的信用太少而需要使用传输就绪,因为控制单元无论如何也无法跟上链路速率。然后在缓冲区可用之前将数据保存在通道中,从而减小存储区域网络中的拥塞,并且提供在主机处选择路径的机会以便使用可能未被充分利用的其它链路。

因此,在某些实施例中,基于每个端口在控制单元中维护信用。控制单元信用机制的基本方案是如果登录到端口的通道可能需要额外信用,则增大信用,并且如果开始重试命令,则减小信用。如上所述,需要注意不要过度增大和减小计数。所述实施例考虑i/o的突发。信用的任何变化可能需要一段时间生效,因为控制单元必须具有传输模式操作以便发送每个通道的状态并且当前操作正在运行。控制单元可能不希望超出其将数据从适配器移动到高速缓存的能力来扩展信用。

在开始时,通道可能具有比可用缓冲区少的信用(16)。通道可能针对最初i/o使用该信用,并且然后针对剩余i/o开始需要传输就绪。不应产生重试。理想的情况是,到达不需要传输就绪的点(如果可能)而不导致重试,并且相对快速地到达该点。因为当在没有看到任何重试时使用传输就绪存在机会丢失,并且当重试开始使用传输就绪时数据速率自动变慢,所以更好的是宁可具有使用传输就绪的操作(因为重试),并且然后返回到未发生重试的位置。因此,增大缓冲区信用的步调能够快于减小缓冲区信用的步调。

设置目标以便在工作负载启动的5分钟内爬升到重试点(或者没有更多传输就绪)。从需要重试的观点看,应在从重试点起的额外3-5分钟内到达稳定点。基于每个端口维护信用,并且登录到端口的所有远程端口都被提供相同的信用数量。每个远程端口随着该通道的i/o完成而被更新,并且最后传送的信用不同于所需信用。

在某些其它实施例中,任何端口的信用不会增大到超过最大值,也不会减小到低于最小值(例如,16)。基于可用于控制单元端口的缓冲区空间、登录的预期通道数以及预期的工作负载类型来选择该最大值。

在某些实施例中,可以针对软件提供特征位,以便检测在控制单元中启用了在这些实施例中描述的特征。当在这些实施例中描述的特征可用时,软件使用该位来从针对较大写入使用ficon切换到使用zhpf。

云计算环境

云计算是一种模型,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源,例如可以是网络、服务器、存储、应用和服务。

现在参考图23,其中显示了示例性的云计算环境50。如图所示,云计算环境50包括云计算消费者使用的本地计算设备可以与其相通信的一个或者多个云计算节点10,本地计算设备例如可以是个人数字助理(pda)或移动电话54a,台式电脑54b、笔记本电脑54c和/或汽车计算机系统54n。云计算节点10之间可以相互通信。可以在包括但不限于如上所述的私有云、共同体云、公共云或混合云或者它们的组合的一个或者多个网络中将云计算节点10进行物理或虚拟分组(图中未显示)。这样,云的消费者无需在本地计算设备上维护资源就能请求云计算环境50提供的基础架构即服务(iaas)、平台即服务(paas)和/或软件即服务(saas)。应当理解,图23显示的各类计算设备54a-n仅仅是示意性的,云计算节点10以及云计算环境50可以与任意类型网络上和/或网络可寻址连接的任意类型的计算设备(例如使用网络浏览器)通信。

现在参考图24,其中显示了云计算环境50(图23)提供的一组功能抽象层。首先应当理解,图24所示的组件、层以及功能都仅仅是示意性的,本发明的实施例不限于此。

硬件和软件层60包括硬件和软件组件。硬件组件的例子包括:主机,例如系统;基于risc(精简指令集计算机)体系结构的服务器,例如ibm系统;ibm系统;ibm系统;存储设备;网络和网络组件。软件组件的例子包括:网络应用服务器软件,例如ibm应用服务器软件;数据库软件,例如ibm数据库软件。

虚拟层62提供一个抽象层,该层可以提供下列虚拟实体的例子:虚拟服务器、虚拟存储、虚拟网络(包括虚拟私有网络)、虚拟应用和操作系统,以及虚拟客户端。

在一个示例中,管理层64可以提供下述功能:资源供应功能:提供用于在云计算环境中执行任务的计算资源和其它资源的动态获取;计量和定价功能:在云计算环境内对资源的使用进行成本跟踪,并为此提供帐单和发票。在一个例子中,该资源可以包括应用软件许可。安全功能:为云的消费者和任务提供身份认证,为数据和其它资源提供保护。用户门户功能:为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能:提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(sla)计划和履行功能:为根据sla预测的对云计算资源未来需求提供预先安排和供应。

工作负载层66提供云计算环境可能实现的功能的示例。在该层中,可提供的工作负载或功能的示例包括:地图绘制与导航;软件开发及生命周期管理;虚拟教室的教学提供;数据分析处理;交易处理;以及对缓冲区信用阈值68的调整(例如在控制单元应用114中)或者如图1-23所示的对缓冲区信用阈值68的接收。

其它实施例细节

所述操作可以使用标准编程和/或工程技术被实现为一种方法、装置或计算机程序产品,以便产生软件、固件、硬件或其任何组合。因此,实施例的各个方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组合了软件和硬件方面的实施例的形式,所有这些实施例在此通常可以被称为“电路”、“模块”或“系统”。此外,实施例的各个方面可以采取计算机程序产品的形式。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本实施例的各个方面的计算机可读程序指令。

计算机可读存储介质可以是能够保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是—但不限于—电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。本文所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

本文所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本实施例操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

本文参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本实施例的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其它设备以特定方式工作,从而,存储有指令的计算机可读存储介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

图25是示出根据某些实施例的可以包括在主机110、1802、存储控制器或存储设备101、控制单元102、通道104、106、…、108、1804设备或其它计算设备中的某些元件的框图。系统2500可以包括电路2502,其在某些实施例中可以包括至少一个处理器2504。系统2500还可以包括存储器2506(例如,易失性存储设备)、以及存储装置2508。存储装置2508可以包括非易失性存储设备(例如,eeprom、rom、prom、ram、dram、sram、闪存、固件、可编程逻辑等)、磁盘驱动器、光盘驱动器、磁带驱动器等。存储装置2508可以包括内部存储设备、附接存储设备和/或网络可访问的存储设备。系统2500可以包括程序逻辑2510,其包括可以加载到存储器2506中并由处理器2504或电路2502执行的代码2512。在某些实施例中,包括代码2512的程序逻辑2510可以存储在存储装置2508中。在某些其它实施例中,程序逻辑2510可以在电路2502中实现。因此,尽管图25独立于其它元件而示出程序逻辑2510,但程序逻辑2510可以在存储器2506和/或电路2502中实现。

某些实施例可以涉及一种方法,其用于通过人员或将计算机可读代码集成到计算系统中的自动处理来部署计算指令,其中启用与计算系统组合的代码以便执行所述实施例的操作。

术语“一个实施例”、“实施例”、“多个实施例”、“所述实施例”、“所述多个实施例”、“一个或多个实施例”、“某些实施例”和“某一实施例”指“本发明的一个或多个(但不是所有)实施例”,除非另外明确指出。

术语“包含”、“包括”、“具有”及其变型指“包括但不限于”,除非另外明确指出。

列举的项目的列表并非暗示任何或所有的项目互相排斥,除非另外明确指出。

术语“一”、“一个”和“所述”指“一个或多个”,除非另外明确指出。

相互通信的设备不必持续地相互通信,除非另外明确指出。此外,相互通信的设备可以直接或通过一个或多个媒介间接地通信。

具有若干相互通信的组件的实施例的描述并非暗示所有此类组件都是必需的。相反,描述了多种可选的组件以例示本发明的多种可能的实施例。

此外,尽管可以以连续顺序描述过程步骤、方法步骤、算法等,但这些过程、方法和算法可以被配置为以交替顺序工作。换言之,可被描述的任何步骤序列或顺序不一定指示以该顺序执行步骤的要求。可以以任何实际顺序执行在此描述的过程步骤。此外,可以同时执行某些步骤。

当在此描述单个设备或物品时,将显而易见的是,可以使用多个设备/物品(无论它们是否协作)来代替单个设备/物品。同样,当在此描述多个设备或物品(无论它们是否协作)时,将显而易见的是,可以使用单个设备/物品来代替多个设备或物品,或者可以使用不同数量的设备/物品而不是所示数量的设备或程序。设备的功能和/或特性可以备选地由一个或多个其它未明确描述为具有此类功能/特性的设备来体现。因此,本发明的其它实施例不必包括设备本身。

可能已在附图中示出的至少某些操作显示以某一顺序发生的某些事件。在备选实施例中,可以以不同的顺序执行、修改或删除某些操作。此外,可以将步骤添加到上述逻辑,并且仍然符合所述实施例。此外,在此描述的操作可以顺序发生,或者可以并行处理某些操作。更进一步,可以由单个处理单元或分布式处理单元执行操作。

出于示例和说明目的提供了本发明的不同实施例的上述说明。其并非旨在是穷举的或将本发明限于所公开的精确形式。根据上述教导,许多修改和变化都是可能的。其旨在本发明的范围并非由此详细说明来限制,而是由所附的权利要求来限制。以上说明、示例和数据提供了对本发明的组成部分的制造和使用的完整说明。因为可以在不偏离本发明的精神和范围的情况下做出本发明的许多实施例,所以本发明存在于此后所附的权利要求之内。

ibm、websphere和db2是国际商业机器公司在全世界各个国家的注册商标。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1