CN105573935B - 调平io - Google Patents

调平io Download PDF

Info

Publication number
CN105573935B
CN105573935B CN201510564036.7A CN201510564036A CN105573935B CN 105573935 B CN105573935 B CN 105573935B CN 201510564036 A CN201510564036 A CN 201510564036A CN 105573935 B CN105573935 B CN 105573935B
Authority
CN
China
Prior art keywords
priority
refusal
equipment
handling
delay
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510564036.7A
Other languages
English (en)
Other versions
CN105573935A (zh
Inventor
A·唐
A·纳坦宗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
EMC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by EMC Corp filed Critical EMC Corp
Publication of CN105573935A publication Critical patent/CN105573935A/zh
Application granted granted Critical
Publication of CN105573935B publication Critical patent/CN105573935B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

本公开的实施例涉及调平IO。一种用于IO调平的方法、系统和计算机程序产品,包括:接收IO;确定是否由于未决IO而存在用于处理IO的延迟;基于存在用于处理IO的延迟的肯定确定,确定用于IO的优先级;以及基于IO的优先级来确定是否处理IO。

Description

调平IO
本专利文档的公开内容的一部分可以包含命令格式和其他计算机语言列表,所有这些受到版权保护。版权所有者不反对任何人对专利文档或者专利公开内容的复制再现,因为其出现在专利和商标局的专利文件或者记录中,然而在别的方面无论如何保留所有版权。
技术领域
本发明涉及数据存储。
背景技术
计算机系统可以包括由一个或多个主机处理器使用的不同的资源。计算机系统中的资源和主机处理器可以由一个或多个通信连接来互连。这些资源可以包括例如数据存储系统,诸如由EMC公司制造的数据存储系统的SymmetrixTM和Clariion系列。这些数据存储系统可以耦合到一个或多个主机处理器并且向每个主机处理器提供存储服务。示例数据存储系统可以包括连接在一起并且可以用于向计算机系统中的一个或多个主机处理器提供公共数据存储的一个或多个数据存储设备,诸如Clariion系列的那些数据存储设备。
主机处理器可以使用数据存储系统来执行各种数据处理任务和操作。例如,主机处理器可以结合数据请求(诸如数据读取和写入操作)来执行基本的系统I/O操作。主机处理器系统可以使用包含多个主机接口单元、磁盘驱动器和磁盘接口单元的存储设备来存储和检索数据。这样的存储设备例如由马萨诸塞州霍普金顿(Hopkinton,Mass)的EMC公司提供的并且在Yanai等人的美国专利第5,206,939号、Galtzur等人的5,778,394、Vishlitzky等人的美国专利第5,845,147号以及Ofek的美国专利第5,857,208号、Gruttadauria的美国专利第8,086,760中被公开,这些专利的全部内容通过引用被并入与此。主机系统通过向其提供的多个通道来访问存储设备。主机系统通过通道向存储设备提供数据并且访问控制信息,并且存储设备还通过通道向主机系统提供数据。主机系统不直接寻址存储设备的磁盘驱动器,而是访问作为多个逻辑磁盘单元而向主机呈现的内容。逻辑盘单元可以对应于或可以不对应于实际磁盘驱动器。允许多个主机系统访问单个存储设备单元使得主机系统能够共享其中存储的数据。
理想的是出于不同的原因来管理和监视数据存储系统,诸如例如以获得配置数据和/或性能数据。可以结合系统配置修改(诸如例如逻辑或者物理设备重新配置)来获得系统配置信息。
要被管理和被监视的数据存储系统可以使用因特网小型计算机系统接口(iSCSI)协议,其基于小型计算机系统接口(SCSI)和传输控制协议(TCP)协议,这些协议在计算机科学领域公知。简言之,SCSI是一种指定计算机系统中的原始控制器和外围设备的设备之间的接口的标准。SCSI架构是一种客户端服务器架构,其中客户端和服务器分别被称为“发起者”和“目标”。发起者向目标发送服务请求并且从目标接收响应。
目标是逻辑单元的集合。每个逻辑单元包含设备服务器、一个或多个任务集合(队列)和任务管理器。
SCSI识别两种类型的请求:设备服务器请求和任务管理请求。设备服务器处理设备服务器命令,而任务管理器负责任务管理。
设备服务器请求是用于在逻辑单元上执行的SCSI命令,诸如块读/写命令。每个设备服务器请求定义用于逻辑单元的工作单元。在逻辑单元内,任务表示工作单元。
SCSI任务是目标针对SCSI命令或者一系列链接的SCSI命令创建的执行情境。针对每个单个命令创建新的任务,而相同的任务用于一系列链接的命令(也被称为“命令链”)中的所有命令。任务持续,直到命令(或者一系列链接的命令)完成响应被发送或者直到任务由任务管理功能或者异常条件结束。发起者仅在当前命令完成之后发送一系列链接的命令中的下一链接的命令。也就是说,每个任务仅存在一个未决命令。从发起者的观点来看,设备服务器不是多任务;任务执行直到其完成。这一属性使得发起者能够使用链接的命令来实现例如读取-修改-写入命令。
任务管理请求控制任务的执行。任务管理请求的示例包括终止任务、清除异常条件以及重置逻辑单元。任务管理器管理任务队列并且服务任务管理请求。
发起者和目标二者具有用于与其他对应的发起者和目标通信的端口。通过这些端口发送并且从这些端口接收请求和响应。发起者或者目标具有一个或多个端口。每个端口具有唯一的标识符。每个请求包括其发起者和目标端口标识符。这些标识符在请求中的“关系对象(nexus object)”中。另外,关系对象可选地包含用于逻辑单元和任务的标识符。如果请求去往特定的逻辑单元,则包括逻辑单元标识符。类似地,如果请求用于特定任务,则包括任务标识符。
SCSI在作为ANSI X3.270-1996的www.ansi.org处可获得的SCSI-3架构模型(SAM)中、在ftp://ftp.t10.org/t10/drafts/sam2/sam2r22.pdf处可获得的SCSI架构模型-2(SAM-2)中、并且在其中所提及的参考中被更全面地描述。
iSCSI协议在TCP协议上映射SCSI远程程序调用模型。iSCSI请求携带SCSI命令,并且iSCSI响应携带SCSI响应和状态。iSCSI还使用用于iSCSI协议机制的请求响应机制。
在http://search.ietf.org/internet-drafts/draft-ietf-ips-iscsi-11.txt处可获得的iSCSI并且在其中所提及的参考中被更全面地描述。
随着iSCSI的出现,可以链接数据存储系统以促进具有增加的能力和改进的性能的存储区域网(SAN)的形成。可以在远距离(例如通过IP网络(诸如因特网))上互连包括服务器和数据存储设备的SAN。例如,可以在作为传输的支持TCP/IP的物理介质上支持iSCSI,并且iSCSI实现可以在千兆以太网上,以支持至少10G字节/秒的速度。
更特别地,iSCSI包括在TCP/IP网络上发送和接收块存储应用的规则和过程,并且特别地,iSCSI协议使能将SCSI命令封装在TCP/IP分组中并且在IP网络上递送。因此,可以使用在IP网络上实现SCSI命令来促进在内联网、局域网(LAN)、广域网(WAN)、因特网等上的块级数据传送,并且可以实现例如在远程工作站或者设备处的位置独立的数据存储和检索。
每个iSCSI设备(目标或者发起者)被分配唯一的名称和地址。存在可以应用于iSCSI设备命名的两个标准;ECI(企业唯一标识符)或者IQN(iSCSI量化名称)。完全量化IQN包括iSCSI目标的名称和用于共享的iSCSI节点或者逻辑卷(“LUN”)的标识符。
可以在iSCSI环境中实现几种发现方法。管理员可以向发起者和目标设备手动指定IP地址和IQN名称。替选地,发起者可以使用SendTargets操作来发现目标,使得目标设备的地址被手动指定并且发起者建立用于执行SendTargets操作的发现会话。目标设备通过发送可用于发起者的附加目标的完整列表进行响应。这一方法是半自动的,使得管理员仍然可能需要输入一些目标地址。因特网存储名称服务(iSNS)提供用于基于IP的SAN上的设备的命名和资源发现二者的发现方法。iSNS协议使用iSNS服务器作为用于跟踪关于目标和发起者的信息的中心位置。iSNS服务器可以运行在SAN上的任何主机、发起者或者目标上。iSNS客户端在每个发起者或者目标上被要求以实现与iSNS服务器的通信。在发起者中,iSNS客户端注册发起者并且查询目标的列表。在目标中,iSNS客户端向服务器注册目标。
为了发起者能够向目标发送信息,发起者必须首先通过iSCSI登录过程来建立与目标的会话。这一过程开始TCP/IP连接,验证发起者已经访问目标(认证),并且允许协调各种参数,包括要使用的类型的安全协议以及最大数据分组大小。如果成功登录,则向发起者(发起者会话ID或者ISID)和目标(目标会话ID或者TSID)分配ID。之后,可以开始全部特征阶段——其允许读取并且写入数据。可以在每个发起者目标对之间建立多个TCP连接,以在一个会话期间实现不相关的转变。发起者及其存储设备之间的会话通常保持打开,但是退出作为一个选项可用。
由于iSCSI在因特网环境中操作,所以安全性很重要。iSCSI协议指定使用IP安全(IPsec)来帮助确保通信端点(发起者和目标)真实,所传送的数据通过加密被确保安全并且因此保持可信,数据完整性被维持而没有第三方的修改,并且数据没有被处理多于一次,即使其已经多次被接收。iSCSI协议还指定实现挑战握手认证协议(CHAP)以进一步认证端节点身份。
对于用户而言,诸如基于iSCSI的数据存储系统等数据存储系统的安装特别可能是复杂的过程。例如,初始化新的基于iSCSI的数据存储系统并且将服务器连接到iSCSI存储系统可以包括要求用户执行并且导航通常在存储系统和要连接的服务器二者上的多个单独的软件应用的复杂的任务。
例如,微软(Microsoft)iSCSI发起者软件包运行在各种Microsoft Windows操作系统上。软件包包括若干软件组件,包括Microsoft发起者和Microsoft发起者服务。Microsoft发起者是负责从存储栈向标准网络栈移动数据的iSCSI设备驱动器组件。仅在iSCSI流量超过标准网络适配器(也被称为网络接口卡或者NIC)时而不在使用特定iSCSI适配器时,使用Microsoft发起者。Microsoft发起者服务是代表操作系统管理所有iSCSI发起者(包括网络适配器和主机总线适配器(HBA))的服务。其功能包括聚合发现信息和管理安全。其包括iSNS客户端,包括用于设备发现的功能。
Microsoft发起者与网络栈一起工作(在TCP/IP上的iSCSI)并且支持标准以太网网络适配器和TCP/IP卸载的网络适配器二者。Microsoft发起者服务提供存储管理功能,包括多个发现机制(iSNS、SendTarget和管理员的手动配置)的发现和聚合、用于安全证书的安全和iSNS服务器和客户端支持、用于iSCSI会话的会话开始和终止和参数设置、以及设备管理(包括向HBA或者基于网络适配器的发起者提供必需的参数)。
Microsoft发起者服务使得主机计算机系统能够在存储区域网上发现目标存储设备并且确定其是否访问这些设备。Microsoft发起者服务的iSNS客户端代码允许服务在做出变化时维护经由iSNS服务器报告的目标的列表。
Microsoft发起者根据iSCSI标准使用IPsec以用于加密和使用CHAP以用于认证。
Microsoft发起者服务具有可以用于配置Microsoft发起者和iSCSI HBA二者的公共应用编程接口(API)。
发明内容
一种用于IO调平的方法、系统和计算机程序产品,包括:接收IO;确定是否由于未决IO而存在用于处理IO的延迟;基于存在用于处理IO的延迟的肯定确定,确定用于IO的优先级;以及基于IO的优先级来确定是否处理IO。
附图说明
通过结合附图参考以下描述可以更好地理解本文所公开的实施例的目的、特征和优点。附图并非意在限制其中所包括的权利要求的范围。为了简洁,每个附图中可以不标记所有的元素。附图并不一定按比例绘制,重点在于说明实施例、原理和概念。因此,本公开内容的特征和优点根据结合附图给出的其示例想实施例的以下详细描述将变得更清楚,在附图中:
图1是根据本公开内容的实施例的随着时间的IO处理的简化的图示;
图2是根据本公开内容的实施例的用于随着时间处理IO的方法的简化的示例;
图3是根据本公开内容的实施例的IO超时的简化的图示;
图4是根据本公开内容的实施例的在IO超时时出现的情况的方法的简化的示例;
图5是根据本公开内容的实施例的引起IO超时的IO突发的简化的图示;
图6是根据本公开内容的实施例的可能经历IO浪涌的数据存储环境的简化的图示;
图7是根据本公开内容的实施例的可能经历IO浪涌的具有数据复制的数据存储环境的简化的图示;
图8是根据本公开内容的实施例的可能经历IO浪涌的、在其中主机具有大量板上闪存的数据存储环境的简化的图示;
图9是根据本公开内容的实施例的可能经历IO浪涌的复制存储环境的简化的图示;
图10是根据本公开内容的实施例的可能经历IO浪涌的复制存储环境的简化的替选图示;
图11是根据本公开内容的实施例的可能经历IO浪涌的数据存储环境的简化的图示;
图12是根据本公开内容的实施例的响应于命令拒绝OB/44状态的简化的图示;
图13是根据本公开内容的实施例的用于响应于命令拒绝OB/44状态的方法的简化的图示;
图14是根据本公开内容的实施例的用于记录IO已经被拒绝多少次的表格项的简化的图示;
图15是根据本公开内容的实施例的用于拒绝和处理IO的时间线的简化的图示;
图16是根据本公开内容的实施例的用于处理IO的方法的简化的示例;
图17是根据本公开内容的实施例的可以利用本文中所描述的技术的装置的实施例的示例;以及
图18是根据本公开内容的实施例的可以实施在利用本文中所描述的技术的计算机可读存储介质上的方法的示例。
具体实施方式
通常,TCPIP是一种网络连接协议。典型地,TCPIP协议可以具有错误校正协议和方法。通常,TCPIP能够适应在向目标发送IO之后的很长的等待时间。替选地,光纤通道是另一网络连接协议。通常,光纤通道可能不具有相同类型的错误校正协议。传统上,当在指定的时间段内没有接收到响应之后,光纤通道可能使IO故障。通常,上述时间段可以是30秒。在某些实施例中,主机可以在光纤通道上驱动IO。
当今,由于某些存储系统具有有限的随机IO性能,诸如具有公开的文件作为使用vDisk的SCSI设备,所以I/O突发可以使得命令在很长的时间段内被排队,从而使得命令超时,并且使得应用崩溃。传统上,如果主机应用在指定的时间段内没有接收到对在光纤通道上发送的IO的响应,则主机应用将崩溃。典型地,如果主机应用接收到响应,诸如不能够对IO进行处理,则主机应用可以尝试重新发送IO。通常,从主机向存储阵列发送IO。SCSI和ISCSI以及FCOE和光纤通道可能在处理IO崩溃方面存在问题。如本文中所使用的,应用通常将光纤通道作为实施例中的示例协议,但是当前公开内容在其他类型的协议中也用于缓和IO崩溃。
在多数实施例中,可以设计具有光纤通道的系统,使得可以针对平均数据传送量来设置光纤通道链路的速度。在很多实施例中,当在光纤通道链路上发送的IO的量超过针对链路设置的平均速度时,可能导致延迟的IO。在一些实施例中,如果IO被延迟大于指定的时间段而没有响应,则可能使得发送IO的应用崩溃。在至少一些实施例中,如果光纤通道上存在IO传送并且跨光纤通道存在超过待处理的IO的能力的恒定的浪涌(surge),则依赖于IO处理的应用可能故障。
在一些实施例中,当前公开内容使得光纤通道和其他协议能够处理IO通信的浪涌。在某些实施例中,如果存储阵列或者目标不能够处理主机发送的所有IO,则存储阵列可以在IO超时之前向主机发送IO终止或者重新尝试命令。在很多实施例中,这可能引起主机向存储阵列重新发送IO或者重新驱动IO。在多数实施例中,存储阵列可以保持其已经拒绝的IO的列表。在一些实施例中,在选择处理还是拒绝IO时,存储阵列可以确定IO先前是否已经被拒绝。在其他实施例中,存储阵列可以确定IO已经被拒绝了多少次并且响应于处理优先级向先前已经被拒绝的这些IO给予更高的优先级。在很多实施例中,在IO超时之前发送IO终止命令可以使得处理IO的存储阵列或者设备能够平滑IO尖峰。
在某些实施例中,当前公开内容可以提供用于延迟向缓慢存储系统托管IO以避免IO故障的方法。在一些实施例中,机器学习算法可以用于防止命令故障。在很多实施例中,机器学习或者其他类型的算法可以用于缓和崩溃/小配额(quota)并且避免应用崩溃。在某些实施例中,可以对到达vdisk或者存储设备的每个写入进行排队。在很多实施例中,排队的I/O可以具有对已经排队的次数进行计数的计时器。在某些实施例中,存在很短的I/O突发,因此排队的I/O可以在稍后在设备去激活时得到服务并且具有未使用的配额。在其他实施例中,如果IO被排队太长时间,则可能出现超时。
在多数实施例中,在产生很多排队的命令的长时间的突发的情况下,可以使用机器学习模式(MLM)或者其他算法来缓和超时。在一些实施例中,算法可以包括查找每个命令排队定时器并且选择已经被排队N(N的值可以作为学习过程的一部分而波动)秒的命令的存储设备或者vdisk。在某些实施例中,Vdisk或者存储设备可以在存储器中的表格中记录LBA/计数+重试计数器=1—并且使用OB/44chk-cond(重试故障的命令)来拒绝命令。在多数实施例中,OB/44chk-cond状态可以随着主机总线适配器(HBA)重新驱动或者重新发送命令而产生。
在一些实施例中,拒绝和重新驱动cmd之间的时间还可以向目标给予用于处理其他排队的命令的一些时间。在多数实施例中,当目标得到命令时(在MLM被激活之后):如果未使用的配额/信用是可用的,则vdisk或者存储设备可以处理cmd。在一些实施例中,如果拒绝之后没有配额,则目标可以检查存储器中的LBA/CNT表格,并且如果(重试计数器<MAX_RETRY)目标可以对命令进行排队,则增加“重试计数器”。在多数实施例中,目标可以继续对命令进行排队直到达到最大重试计数,其可以根据MLM而是动态的。在几乎所有实施例中,当达到最大重试时,目标可以处理命令而不管未决的份额。在很多实施例中,强制处理IO可以防止可能产生崩溃的应用超时。
现在参考图1和图2的实施例,其图示IO处理。图1的图表将1秒处的IO示出为每秒10个IO(10IO/s),将2秒处的IO示出为20个IO(可以处理的最大IO为105),并且将3秒处的IO示出为每秒10个IO。接收IO(步骤200)。处理IO(步骤205)。
现在参考图3和图4的示例实施例。接收IO 305(步骤400)。IO 305等待30秒(步骤405)。不处理IO 305,超时,并且主机考虑到IO故障并且发送重置(步骤410)。在很多实施例中,IO超时时间可以是任何值。在另外的实施例中,IO超时时间可以由用户来设置。
现在参考图5的示例实施例,其图示IO浪涌。IO的量510在Y轴上,时间515在X轴上。最大IO处理速率505是每秒20个IO。在第一30秒期间,存在10个IO,小于最大处理速率并且所有IO被处理。在第二30秒期间,存在每秒40个IO,大于可以被处理的每秒20个IO,并且20个IO故障因为它们超过30秒的超时。在最后30秒期间,速率再次为10个IO并且所有IO被处理。
现在参考图6的示例实施例,其图示可能经历周期性IO浪涌的样本存储环境。主机600向存储阵列645发送要基于IO来向设备620、622和624中的一个或多个设备写入的IO。在该实施例中,期望进行来自应用605的主机600的备份。介质服务器610连接到主机备份。介质服务器610激活应用605的备份模式。介质服务器610从应用605到介质服务器610在TCPIP到FTP数据上使用文件传输协议。在该实施例中,介质服务器进行文件级备份并且被使能以进行文件级重新存储。因此,在该实施例中,如果应用605的单个文件被损坏,则可以重新存储单个文件。在该实施例中,如果应用605向存储阵列发送比能够在IO超时窗口内处理的多太多的IO(这可能引起应用605崩溃),则可能出现IO突发以引起IO超时。在该实施例中,如果介质服务器610向存储阵列655上的设备660发送比能够在指定的窗口内被处理的多太多的IO(这可能引起介质服务器610上的软件应用崩溃),则IO突发还可能引起IO超时。
现在参考图7的示例实施例。主机700向存储阵列715上的一个或多个设备720、733和724写入。在存储阵列上在如设备730、732和734中创建设备720、722和724的克隆复制,其表示增加的克隆或者崩溃拷贝。在到具有存储装置的去重复服务器(deduplicationserver)755的光纤通道连接上推送由设备730、732和734组成的增加的克隆。去重复服务器755得到数据、克隆,去重复克隆并且然后在增加的克隆拷贝中存储。在该实施例中,如果在增加的克隆中复制数据,则去重复将不再存储数据,但是取而代之增加到数据的指向以节省去重复设备上的空间。在一些实施例中,存储阵列715与去重复设备755之间可以有IO浪涌。在很多实施例中,如果没有用于处理这一IO浪涌的机制,则可能出现拷贝会话故障。
现在参考图8的示例实施例,其图示具有应用的主机800。主机800可以在闪存存储器中具有若干百万兆。主机800在光纤通道连接上连接到存储阵列845。如果应用821执行闪存存储器中的数据的IO清洗,则IO的量可以超过阵列的带宽,以引起IO超时和主机重置,这可能与应用故障相关联。
现在参考图9的示例实施例。在图9的示例实施例中,主机900向存储阵列915发送要在设备920上被写入的IO。主机900还对要向恢复设备945被写入的IO进行划分。主机900与复制设备945之间的连接通过光纤通道。在该实施例中,如果存在来自主机900的IO浪涌,则IO处理时间可能超过用于IO超时的时间。另外,在该实施例中,主机900可以从复制设备来访问vDisk 915,其中vDisk被滚动到与前一时间点对应的图像。虽然在由VDISK提供的前一时间点的访问,但是IO处理时间超过IO超时时间,引起IO超时并且引起应用崩溃。
现在参考图10的示例实施例。在图10的示例实施例中,主机1000向存储阵列1015发送要在设备1020上被写入的IO。存储阵列1015对要向恢复设备1045被写入的IO进行划分。存储阵列1015与复制设备1045之间的连接通过光纤通道。在该实施例中,如果存在从存储阵列1015到复制设备1045的IO浪涌,则IO处理时间可能超过用于IO超时的时间。另外,在该实施例中,主机900或者存储阵列1015可以从复制设备来访问vDisk 1045,其中vDisk已经被滚动到与前一时间点对应的图像。虽然在由VDISK提供的前一时间点的访问,但是IO处理等待时间可以再次超过IO超时时间,引起IO超时并且引起应用崩溃。
现在参考图11的示例实施例,其图示从主机到存储阵列的样本IO路径。主机1100具有向IO队列1122写入IO的应用1121。驱动器1123从IO队列得到IO并且向主机总线适配器(HBA)1124中发送IO 1105。HBA 1124在通信链路1125上向存储阵列1155发送IO,并且IO在队列1150中被接收以向设备1120被写入。队列1150是先进先出(FIFO)IO队列1170。
在实施例6-11中,如果IO的处理时间超过IO超时,则IO将发生故障并且IO故障将引起应用故障。因此,在多数实施例中,有益的是提供使得IO突发不压倒系统的机制。
现在参考图12和图13的示例实施例,其图示使用命令拒绝OB/44状态来避免IO故障。在光纤协议中,存在被称为命令拒绝OB/44状态的拒绝IO状态。在很多实施例中,可以响应于IO来将这一命令发送回主机,并且主机将重新驱动或者重新发送这一命令。在图12的示例实施例中,接收IO 1205(步骤1300)。在小于30秒的等待时间之后(步骤1305),向主机发送命令拒绝OB/441210(步骤1310)。当HBA接收到拒绝状态OB/44时,其将使用另一超时时间段来重新驱动或者重新发送IO。
在很多实施例中,命令拒绝OB/44状态可以用于避免IO超时。在某些实施例中,可以接近于IO超时时间来发送命令,以给出用以处理其他未决IO的额外时间。在多数实施例中,主机重新驱动或者重新发送命令的时间可以提供用于IO处理的另外时间。在一些实施例中,对于可以在IO故障之前发送命令拒绝的次数可能有所限制。在另外的实施例中,可以使用算法来计算在发送状态之前的等待时间以及可以多少次发送拒绝状态。在又一另外的实施例中,算法可以根据优先级来评估每个IO,其中首先处理较高优先级的IO。在很多实施例中,算法可以通过考虑等待时间和IO已经被拒绝的次数二者来计算IO优先级。在多数实施例中,处理IO的设备(诸如vdisk或者存储阵列)可以保持用于每个被拒绝的IO的计数器。
现在参考图14的示例实施例,其图示用于保持跟踪IO已经被拒绝了多少次的样本表格。对于给定命令,存在命令的名称,诸如写入。存在用于这一命令的位置,其被给出作为逻辑块地址(LBA)。还存在大小(计数—多少个块)。通过组合命令、位置和大小,能够唯一地标识IO并且包括IO已经被拒绝的次数。这样的表格被图示为表格1405。
现在参考图15的示例实施例,其图示如何可以在高IO负荷的周期期间拒绝IO。接收IO 1510。每个拒绝计数表1515,IO 1510具有2A的WT(写入)、20的LBA、为2的计数或者大小,并且还没有被拒绝。在小于30秒的等待时间之后,由于IO负载而未处理IO,并且关于IO1510向主机发送命令拒绝OB/44状态1517。一段时间之后,主机重新驱动或者重新发送IO作为具有相同的信息(2A、20、2)的IO 1520。向拒绝计数表1525中输入这一信息,拒绝计数为1。在一段时间之后,IO再次还没有被处理并且关于IO 1520发送命令拒绝1527OB 44状态1527。一段时间之后,主机重新驱动IO作为具有相同的信息(2A、20、2)的IO 1540,并且向拒绝计数表1535中输入这一信息,这次拒绝计数为2。给予拒绝计数2,向该IO给予更高优先级并且处理IO。
现在参考图16的示例实施例,其处理IO。接收IO(步骤1600)。确定用于IO的处理队列是否存在延迟(步骤1605)。如果不存在延迟,则处理IO(步骤1610)。如果存在延迟,则IO等待不到用于IO的超时的时间量(步骤1615)。确定用于IO的优先级(步骤1620)。如果优先级是高优先级(步骤1625),则处理IO(步骤1635)。如果IO不具有高优先级,则向主机发送命令故障(步骤1630)。
在很多实施例中,可以采用算法来确定IO的优先级。在某些实施例中,算法可以考虑IO已经被拒绝的次数。在一些实施例中,算法可以考虑IO的等待时间。在至少一些实施例中,算法可以能够确定作为算法的一部分的主机将要等待IO响应的时间量。在其他实施例中,算法可以能够指出可以在IO故障之前被拒绝IO的次数。在另外的实施例中,算法可以在确定IO优先级时使用这些因素中的一些或者全部。在另外的实施例中,算法可以学习如何更好地对IO排列优先级。在一些实施例中,算法可以是机器学习模式。在其他实施例中,算法可以演进并且可以使用遗传编程或者遗传算法。
本发明的方法和装置可以至少部分地采用在有形介质中实施的程序代码(即指令)的形式,诸如软盘、CD-ROM、硬盘驱动器、随机访问存储器或者只读存储器、或者任何其他机器可读存储介质。当程序代码被装置到机器(诸如图17的计算机)中并且由机器而被执行时,机器变为用于实践本发明的装置。当在一个或多个通用处理器上被实施时,程序代码与这样的处理器1703组合以提供类似于特定逻辑电路来操作的唯一的装置。如此,可以将这样的通用数字机器变换成专用数字机器。图18示出在如所示的计算机可读介质1830上实施的程序逻辑1834,并且其中逻辑在被配置用于执行本发明的保留服务过程并且从而形成计算机程序产品1800的计算机可执行代码中被编码。逻辑1834可以是与在处理器1703上被加载的存储器1704上的逻辑1740相同的逻辑。在一些实施例中,处理器可以是虚拟或者物理处理器。程序逻辑还可以在软件模块中被实施,作为模块或者硬件模块。
用于执行上述方法的逻辑可以被实施作为下面描述的系统的一部分,其用于执行参考例如图2、4、13、14和16中所示的实施例所描述的方法。出于说明本发明的目的,本发明被描述为在特定配置中被实施并且使用特定的逻辑布置,但是本领域技术人员应当理解,设备不限于特定配置,而是仅受本申请文件中所包括的权利要求的限制。
虽然出于清楚理解的目的详细地描述了以上发明,然而应当理解,可以在所附的权利要求的范围内实践某些变化和修改。因此,应当将本实现认为是说明性而非描述性的,并且本发明不限于本文所给出的细节,而是可以在所附的权利要求的范围和等同方案内进行修改。

Claims (18)

1.一种用于IO调平的系统,包括:
具有IO队列的存储设备,其中所述IO队列被使能以存储从设备接收的未决IO;以及
在存储器中操作的计算机可执行逻辑,其中所述计算机可执行程序逻辑被配置用于执行:
从所述设备接收IO;
确定是否由于所述IO队列中的未决IO而存在用于处理IO的延迟;
基于存在用于处理IO的延迟的肯定确定:
确定用于所述IO的优先级;以及
基于IO的所述优先级来确定是否处理所述IO。
2.根据权利要求1所述的系统,所述逻辑被进一步配置用于执行:
基于处理所述IO的否定确定,向所述设备发送拒绝IO状态以防止所述IO超时;其中所述拒绝IO状态使得发送所述IO的所述设备重新发送所述IO。
3.根据权利要求2所述的系统,所述逻辑被进一步配置用于执行:
保持针对拒绝表中已经被拒绝的每个IO的拒绝计数器;以及
基于每次所述IO已经被拒绝来增加用于所述IO的所述优先级。
4.根据权利要求3所述的系统,所述逻辑被进一步配置用于执行:
基于确定不存在用于所述IO的延迟,处理所述IO;以及
基于所述IO的所述优先级相对高于其他未决IO,处理所述IO。
5.根据权利要求4所述的系统,其中机器学习模型确定所述IO的所述优先级。
6.根据权利要求5所述的系统,其中所述机器学习模型考虑在确定所述优先级时所述IO已经等待多久。
7.一种用于IO调平的方法,包括:
接收IO;
确定是否由于未决IO而存在用于处理IO的延迟;
基于存在用于处理IO的延迟的肯定确定:
确定用于所述IO的优先级;以及
基于IO的所述优先级来确定是否处理所述IO。
8.根据权利要求7所述的方法,进一步包括:
基于处理所述IO的否定确定,发送拒绝IO状态以防止所述IO超时;其中所述拒绝IO状态使得发送所述IO的设备重新发送所述IO。
9.根据权利要求8所述的方法,进一步包括:
保持针对拒绝表中已经被拒绝的每个IO的拒绝计数器;以及
基于每次所述IO已经被拒绝来增加用于所述IO的所述优先级。
10.根据权利要求9所述的方法,进一步包括:
基于确定不存在用于所述IO的延迟,处理所述IO;以及
基于所述IO的所述优先级相对高于其他未决IO,处理所述IO。
11.根据权利要求10所述的方法,其中机器学习模型确定所述IO的所述优先级。
12.根据权利要求11所述的方法,其中所述机器学习模型考虑在确定所述优先级时所述IO已经等待多久。
13.一种非瞬态计算机可读介质,其被编码有计算机可执行程序代码,所述代码被配置为使能执行:
接收IO;
确定是否由于未决IO而存在用于处理IO的延迟;
基于存在用于处理IO的延迟的肯定确定:
确定用于所述IO的优先级;以及
基于IO的所述优先级来确定是否处理所述IO。
14.根据权利要求13所述的非瞬态计算机可读介质,所述代码被进一步配置为使能执行:
基于处理所述IO的否定确定,发送拒绝IO状态以防止所述IO超时;其中所述拒绝IO状态使得发送所述IO的设备重新发送所述IO。
15.根据权利要求14所述的非瞬态计算机可读介质,所述代码被进一步配置为使能执行:
保持针对拒绝表中已经被拒绝的每个IO的拒绝计数器;以及
基于每次所述IO已经被拒绝来增加用于所述IO的所述优先级。
16.根据权利要求15所述的非瞬态计算机可读介质,所述代码被进一步配置为使能执行:
基于确定不存在用于所述IO的延迟,处理所述IO;以及
基于所述IO的所述优先级相对高于其他未决IO,处理所述IO。
17.根据权利要求16所述的非瞬态计算机可读介质,其中机器学习模型确定所述IO的所述优先级。
18.根据权利要求17所述的非瞬态计算机可读介质,其中所述机器学习模型考虑在确定所述优先级时所述IO已经等待多久。
CN201510564036.7A 2014-09-30 2015-09-07 调平io Active CN105573935B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/501,808 US10585823B2 (en) 2014-09-30 2014-09-30 Leveling IO
US14/501,808 2014-09-30

Publications (2)

Publication Number Publication Date
CN105573935A CN105573935A (zh) 2016-05-11
CN105573935B true CN105573935B (zh) 2019-01-18

Family

ID=55584583

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510564036.7A Active CN105573935B (zh) 2014-09-30 2015-09-07 调平io

Country Status (2)

Country Link
US (1) US10585823B2 (zh)
CN (1) CN105573935B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114489471B (zh) * 2021-08-10 2023-04-14 荣耀终端有限公司 一种输入输出处理方法和电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030065835A1 (en) * 1999-09-28 2003-04-03 Juergen Maergner Processing channel subsystem pending i/o work queues based on priorities
CN1503943A (zh) * 2000-06-28 2004-06-09 英特尔公司 用于在个人计算机系统中提供实时操作的方法和设备
US20060064697A1 (en) * 2004-09-23 2006-03-23 Alain Kagi Method and apparatus for scheduling virtual machine access to shared resources
US20070079040A1 (en) * 2003-07-22 2007-04-05 Park Hee-Chul Interrupt signal processing circuit for sending interrupt requests to a computer system
US20070156974A1 (en) * 2006-01-03 2007-07-05 Haynes John E Jr Managing internet small computer systems interface communications
US20100115154A1 (en) * 2008-10-30 2010-05-06 Hitachi, Ltd. Information processing system and method of allocating i/o to paths in same
US8190948B1 (en) * 2008-07-31 2012-05-29 Emc Corporation Handling out of order I/O using temporal relationships of transmitted data

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5894583A (en) * 1996-04-09 1999-04-13 International Business Machines Corporation Variable timeout method for improving missing-interrupt-handler operations in an environment having I/O devices shared by one or more systems
US7124249B1 (en) * 2003-06-26 2006-10-17 Emc Corporation Method and apparatus for implementing a software cache
US7653828B2 (en) * 2004-05-28 2010-01-26 Sap Ag Timeout manager
US7827435B2 (en) * 2005-02-15 2010-11-02 International Business Machines Corporation Method for using a priority queue to perform job scheduling on a cluster based on node rank and performance
US9032127B2 (en) * 2006-09-14 2015-05-12 Hewlett-Packard Development Company, L.P. Method of balancing I/O device interrupt service loading in a computer system
KR100868766B1 (ko) * 2007-01-31 2008-11-17 삼성전자주식회사 복수의 dma 요청 블록들을 가지는 직접 메모리 액세스장치의 우선 순위를 결정하는 방법 및 장치
US8245229B2 (en) * 2008-09-30 2012-08-14 Microsoft Corporation Temporal batching of I/O jobs
US8151050B2 (en) * 2009-03-02 2012-04-03 Netapp, Inc. System for handling input/output requests between storage arrays with different performance capabilities
US8341314B2 (en) * 2009-06-30 2012-12-25 Hewlett-Packard Development Company, L.P. Managing I/O request in storage system
US8291135B2 (en) * 2010-01-15 2012-10-16 Vmware, Inc. Guest/hypervisor interrupt coalescing for storage adapter virtual function in guest passthrough mode
US20130007755A1 (en) * 2011-06-29 2013-01-03 International Business Machines Corporation Methods, computer systems, and physical computer storage media for managing resources of a storage server
US9262192B2 (en) * 2013-12-16 2016-02-16 Vmware, Inc. Virtual machine data store queue allocation

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030065835A1 (en) * 1999-09-28 2003-04-03 Juergen Maergner Processing channel subsystem pending i/o work queues based on priorities
CN1503943A (zh) * 2000-06-28 2004-06-09 英特尔公司 用于在个人计算机系统中提供实时操作的方法和设备
US20070079040A1 (en) * 2003-07-22 2007-04-05 Park Hee-Chul Interrupt signal processing circuit for sending interrupt requests to a computer system
US20060064697A1 (en) * 2004-09-23 2006-03-23 Alain Kagi Method and apparatus for scheduling virtual machine access to shared resources
US20070156974A1 (en) * 2006-01-03 2007-07-05 Haynes John E Jr Managing internet small computer systems interface communications
US8190948B1 (en) * 2008-07-31 2012-05-29 Emc Corporation Handling out of order I/O using temporal relationships of transmitted data
US20100115154A1 (en) * 2008-10-30 2010-05-06 Hitachi, Ltd. Information processing system and method of allocating i/o to paths in same

Also Published As

Publication number Publication date
US20160092380A1 (en) 2016-03-31
CN105573935A (zh) 2016-05-11
US10585823B2 (en) 2020-03-10

Similar Documents

Publication Publication Date Title
US11340672B2 (en) Persistent reservations for virtual disk using multiple targets
US10169948B2 (en) Prioritizing storage operation requests utilizing data attributes
US7484058B2 (en) Reactive deadlock management in storage area networks
US8171170B2 (en) Storage switch task processing synchronization
US7529781B2 (en) Online initial mirror synchronization and mirror synchronization verification in storage area networks
JP4430710B2 (ja) フェイルオーバおよび負荷分散
US7467259B2 (en) System and method to protect data stored in a storage system
US7617365B2 (en) Systems and methods to avoid deadlock and guarantee mirror consistency during online mirror synchronization and verification
US9992118B2 (en) System and method for optimizing transportation over networks
US9933946B2 (en) Fibre channel storage array methods for port management
US8261282B1 (en) System and method for virtual machine host load protection
JP2007094803A (ja) ディスクレス計算機の運用管理システム
JP2018518736A (ja) 制御ユニットにデータを伝送するために1つ又は複数のホスト計算デバイスの複数のチャネルによりバッファ・クレジットを受信する
US11032123B1 (en) Hierarchical storage system management
US20070192553A1 (en) Backup apparatus and backup method
US20170316222A1 (en) Method and System for Temporarily Implementing Storage Access Policies on Behalf of External Client Agents
US20050262309A1 (en) Proactive transfer ready resource management in storage area networks
US20230362250A1 (en) Performance-Driven Storage Provisioning
CN105573935B (zh) 调平io
US10798159B2 (en) Methods for managing workload throughput in a storage system and devices thereof
KR100974159B1 (ko) 서버 애플리케이션의 선택적 활성화 방법, 컴퓨터 네트워크 시스템 및 컴퓨터 판독 가능한 저장 매체
US10552081B1 (en) Managing recall delays within hierarchical storage
US11290546B1 (en) Common model for pairing physical and/or cloud-based storage systems for data mobility
WO2005104731A2 (en) Reactive deadlock management in storage area networks
JP2018085634A (ja) 情報処理装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200416

Address after: Massachusetts, USA

Patentee after: EMC IP Holding Company LLC

Address before: Massachusetts, USA

Patentee before: EMC Corp.