专利名称:使用优先级确定是否对指向存储器的输入/输出(i/o)请求进行排队的制作方法
技术领域:
本发明涉及一种方法、系统和产品,用于使用优先级确定是否对指向存储器的输 入/输出(I/O)请求进行排队。
背景技术:
存储协议可以指定这样的条件,在此条件下应用程序分配优先级给应用程序为存 储装置生成的输入/输出(I/O)请求,以便当确定如何管理I/O请求时,处理I/O请求的控 制器或者服务器可以利用该优先级。近期对小型计算机系统接口(SCSI)的增强允许主机 应用通过优先级值指定I/O传送中任务的相对的调度重要性。对具有不同任务优先级的一 组任务的处理将使得具有较高优先级的任务的子集总计(in aggregate)比在相同的条件 (但是其中所有的任务优先级相等)下递交(submit)同一组任务的情况下的相同子集更快 地返回状态。在本技术领域中,需要用于利用分配给I/O请求的优先级来改进对指向公共存储 器的I/O请求的处理的改进的技术。
发明内容
提供了一种方法、系统、产品以及计算机程序,用于使用优先级确定是否对指向存 储器的输入/输出(I/O)请求进行排队。在本发明的优选实施例中,对指向存储器的并发 请求的最大数目进行测定(measure)。所测定的并发请求的最大数目被用于确定针对所指 定的优先级的阈值。响应于确定针对所指定的优先级的并发请求的当前数目没有超过所确 定的针对所指定的优先级的阈值,随后的指向存储器的具有所指定的优先级的请求被允许 继续进行(proceed)。随后的指向存储器的具有比指定的优先级高的优先级的请求被允许 继续进行。响应于确定针对所指定的优先级的并发请求的当前数目超过总的阈值,随后的 指向存储器的具有所指定的优先级的请求被排入队列中。在另一实施例中,做出用以对具有指定的优先级的请求进行排队的指示,并且做 出用以不对具有比指定的优先级高至少一个优先级的请求进行排队的指示。接收指向存储 器的具有优先级的请求。响应于确定没有用以对具有接收到的请求的优先级的请求进行排 队的指示,此请求被传送到存储器。响应于确定用以对具有接收到的请求的优先级的请求 进行排队的指示,以及响应于确定具有接收到的请求优先级的并发请求的当前数目超过接 收到的请求的优先级的阈值,将接收到的请求排入队列中。在另一实施例中,响应于确定对具有接收到的优先级的请求进行排队的指示,以 及响应于确定具有接收到的请求的优先级的并发请求的当前数目没有超过接收到的请求 的优先级的阈值,接收到的请求被传送到存储器。在另一实施例中,确定在先前测定周期(period)期间接收的请求的最高优先级。 做出对针对每个比所确定的最高优先级低的优先级的请求进行排队的指示,并且做出不对针对每个比所确定的最高优先级高的优先级的请求进行排队指示。所测定的并发请求的最 大数目被用于确定每个比所确定的最高优先级低的优先级的阈值。在另一实施例中,测定并发请求的最大数目包括测定针对每个优先级的并发请求 的最大数目。在另一实施例中,在测定周期期间,对并发请求的最大数目进行测定。测定针对每 个优先级的并发请求的最大数目包括响应于在测定周期期间接收到针对一个优先级中的 请求,递增(increment)针对该一个优先级的并发请求的数目;以及响应于在测定周期期 间接收到针对一个优先级中的请求,递减(decrement)针对该一个优先级的并发请求的数 目。针对每个优先级的并发请求的最大数目包括在测定周期期间测定的针对每个优先级的 并发请求的最大数目。在另一实施例中,使用所测定的并发请求的最大数目确定所指定的优先级的阈值 包括使用所述优先级的并发请求的最大数目确定所述优先级的阈值,所述优先级的请求 将被排队。在另一实施例中,基于针对每个指定的优先级而允许的请求的最小数目,进一步 确定优先级阈值。在另一实施例中,在完成的测定周期期间,测定针对每个优先级的并发请求的最 大数目。在每个完成的测定周期之后,调整用于排队的优先级的阈值。在另一实施例中,使用所测定的并发请求的最大数目确定指定的优先级的阈值包 括基于针对至少两个优先级而观测到的并发请求的最大数目、以及针对所述至少两个优 先级而允许的请求的最小数目之中的最小值,确定每个优先级的阈值。在另一实施例中,接收到具有指定的优先级的请求完成的确认 (acknowledgment)。响应于接收到确认,关于具有指定的优先级的并发请求的当前数目是 否低于指定的优先级的阈值而进行确定。响应于确定具有指定的优先级的并发请求的当前 数目低于指定的优先级的阈值,至少一个具有指定的优先级的排队的请求被处理。
现在将参考如以下图中图示的优选实施例,仅仅通过举例来描述本发明图1图示了计算环境的实施例。图2图示了用于管理I/O请求的管理信息的实施例。图3图示了用于确定是否指示对指定的优先级的I/O请求进行排队的操作的实施 例。图4图示了用于确定是否对接收到的I/O请求进行排队的操作的实施例。图5图示了用于处理I/O请求完成的确认的操作的实施例。
具体实施例方式图1图示了实施本发明优选实施例的各方面的计算环境。一个或多个主机2每个 包括一个或者多个应用4,所述应用4生成通过服务器8到存储器6的输入/输出(I/O)请 求。应用4(诸如数据库应用、商业应用等)可以为发送给服务器8的I/O请求分配优先级 等级。所述优先级可以指定数字或者其他优先级值,其是优先级方案的一部分。这样,不同主机2上的不同应用4可以使用相同的优先级指派(designation)协议,此协议可以被指 定作为工业标准的一部分。主机2可以经由网络10 (诸如局域网(LAN)、存储区域网络(SAN)、广域网(WAN)、 无线网络等)与服务器8进行通信。或者,主机2可以通过诸如外设组件互连接口(PCI) 总线的总线接口与服务器8进行通信。主机2、存储器6以及服务器8可以被容纳在分开 的机器中,或者包含在同一个机器中,经由一个或者多个总线接口连接。服务器8可以包括 本领域中已知的适合的存储管理系统,诸如存储控制器、服务器、企业存储服务器等。存储 器6可以包括本领域中已知的适合的存储系统,诸如直接存取存储装置(DASD)、简单磁盘 捆绑(JBOD)、独立冗余磁盘阵列(RAID)、虚拟装置、磁带存储器、光盘存储器或者本领域中 已知的任何其他存储系统。主机2可以包括本领域中已知的任何合适的计算装置,诸如工 作站、桌面型计算机、服务器、大型机、手持计算机、电话装置等。主机2包含生成I/O请求 的应用程序。服务器8包括处理器12 (或者多个处理器)以及由一个或者多个易失性存储装置 和/或非易失性存储装置构成的存储器14。该存储器包含高速缓存16,用于缓冲指向存 储器6的I/O请求以及数据更新;I/O管理器18,其管理来自主机2的指向存储器6的I/O 请求;中优先级队列20 ;低优先级队列22 ;以及I/O管理信息24,其被I/O管理器18用于 确定是将I/O请求排入队列20和22,还是允许请求继续进行。I/O管理器18可以在加载到存储器14中的软件中实施,所述软件由处理器12执 行。或者,I/O管理器18可以在服务器8中设置的硬件芯片中实施。图2图示了管理信息24的实施例,其可以包含对于当前管理周期时间间隔而测定 的、针对每个优先级等级的并发未决(outstanding) I/O请求的最大数目。因此,在管理周 期期间,记录针对每个优先级等级(例如高、中、低)的在不同时间的未决的并发请求的数 目,以便在此管理周期的结尾,能够为每个优先级等级确定在管理周期期间的并发请求的 最大数目。并发请求的数目包括接收到的没有完成的(即,对于磁盘而未决的或者被排队 的)I/O请求的数目。当在管理时间间隔期间接收到的未决并发低优先级请求56的当前数 目超过作为并发低优先级I/O请求的最大数目的低优先级阈值54时,低优先级队列指示符 52指示I/O管理器18是否对在管理时间间隔期间接收到的低优先级请求进行排队。当在 管理时间间隔期间接收到的未决并发中优先级请求62的当前数目超过I/O请求的中优先 级阈值60时,中优先级队列指示符58指示I/O管理器18是否对在管理时间间隔期间接收 到的中优先级请求进行排队。在可替代的实施例中,不同的信息可以被维持(maintain)在 管理信息24中。在一个实施例中,低、中和高优先级的指派可以对应于由主机应用4设置的单个 优先级值或者优先级值的范围,如所述I/O管理器18所说明的。例如,I/O管理器18可以 将数字的优先级值映射到一个低、中或者高优先级类别。在另外的实施例中,可以有一个或 者多于两个的优先级队列来对另外的优先级等级的请求进行排队。在一个实施例中,可以在每个磁盘的基础上维持对于图2维持的信息和阈值。因 此,如果存储器6包括多个互连的硬盘驱动器,则图2的阈值将被乘以磁盘数目,以确定应 用于多磁盘存储器的阈值。图3图示了由I/O管理器18执行的如下操作的实施例每个管理时间间隔更新I/0管理信息24,以基于在最近完成的管理时间间隔期间测定的并发I/O请求(即,低、中和 高)的最大数目,确定需要的对I/O请求进行排队的范围。当启动了(在方框100)1/0处 理时,I/O管理器18启动(在方框102)被设置为在诸如几秒钟的时间周期后期满的管理 时间间隔,并且清除所有队列指示符52和58。当时间间隔期满(在方框104)时,I/O管理 器18记录(在方框106)区间数据,其包含在先前完成的管理时间间隔期间的最高优先级 (P)请求以及每个优先级(例如,低、中和高)的高水位标记(water mark) ( S卩,并发请求 的最大数目)。在管理时间周期期间,当接收到具有任何优先级的新请求时,I/O管理器18 递增并发I/O请求的总数,并且当I/O请求已经完成时,递减并发I/O请求的总数。在管理 时间间隔期间的并发I/O请求的数目是作为在该时间周期期间未决的I/O请求的最大数目 的高水位标记。I/O管理器为在上个管理间隔期间接收到的具有高于或者等于最大优先级请求 (P)的任何队列清除(在方框108)队列指示符52和58。设置(在方框110)具有低于最 大优先级请求(P)的优先级的队列指示符52和58以指示排队。对于被设置了指示符的 每个队列,I/O管理器18基于在上个管理间隔期间接收到的针对不同优先级的最大并发请 求,调整(在方框112)允许的并发请求的阈值54和60。以下讨论的方程(1)和(2)提供 了用于调整低优先级阈值54和中优先级阈值60的实施例。在对要被排队的优先级的阈值 进行调整后,I/O管理器18通过返回至方框104以等待下个管理间隔的完成,启动(在方 框114)对操作的附加重复(iteration)。通过图3的操作,I/O管理器18在时间间隔完结时,确定是否对不同优先级等级 的I/O请求进行排队,或者是否终止排队并且完成处理任何先前排队的I/O请求。此外,I/ 0管理器基于在先前的时间间隔期间接收到的针对每个优先级等级的请求的最大数目,调 整将在下个测定周期期间排队的每个优先级等级的排队阈值。为了调整排队阈值,I/O管 理器18可以进一步考虑如下讨论的针对每个优先级等级的允许的请求的最小数目。虽然 图3示出了确定是否允许两个优先级等级(低和中)的排队,但是确定和队列指示符可以 被提供给多于两个优先级等级。图4图示了由I/O管理器18执行的用于在管理时间间隔期间处理I/O请求的操 作的实施例。在接收到(在方框150)具有指定的优先级(例如,低、中、高)的I/O请求 时,I/O管理器18递增(在方框152)针对指定的优先级56、62或者64的请求的数目。如 果(在方框154)所指定的优先级为高,那么I/O请求被允许继续进行(在方框156)。如 果(在方框154)请求不是高优先级,例如,低或者中,并且如果(在方框158)没有为所指 定的优先级(低或者中)设置(指示不排队)优先级队列指示符52或者58,那么控制继续 进行到方框156以允许I/O请求继续进行。如果(在方框158)优先级队列指示符52或者 58被设置(指示对接收到的I/O请求而排队),并且如果(在方框160)具有指定的优先级 56或62的并发未决请求的数目超过所指定的优先级的阈值54或者60,那么将所接收的I/ 0请求排入(在方框162)所指定的优先级队列20或22中。否则,如果(在方框160)具有 指定的优先级56或62的并发未决请求的数目没有超过所指定的优先级的阈值54或者60, 那么I/O请求被允许继续进行。针对优先级等级的并发I/O请求包括接收到的未完成的 或者排在优先级等级队列20和22中的I/O请求的数目。图5图示了由I/O管理器18执行的用于处理相对于存储器6已完成具有优先级的I/O请求的确认的操作的实施例。在接收到(在方框200)该确认时,I/O管理器18递 减(在方框202)针对已完成的请求的指定的优先级的并发请求的数目。I/O管理器18可 以响应于确定具有指定的优先级的并发请求的当前数目低于指定的优先级的阈值,进一步 处理(在方框204)排队的请求。排队的请求可以被处理,直到再次到达针对所述优先级等 级的并发请求的指定的优先级的阈值为止。在一个实施例中,具有最高优先级等级的请求总是被允许继续进行,并且关于是 否对低或者中优先级请求以及这些请求的排队阈值进行排队而做出确定。在可替代的实施 例中,高优先级请求也可以接收磁盘服务。此外,可存在用于多于两个优先级的附加优先级 等级队列。在一个实施例中,为了确定低优先级阈值54和中优先级阈值60,可以使用以下的 数学方程U_hm = min((T_h+T_m), (HWM_h+HWM_m))(1)U_lh = min ((T_h+T_l),(HWM_h+min (T_l,HWM_1))) (2)在方程(1)和(2)中,T_h、T_m和T_1分别包括针对高、中以及低优先级而允许的 并发请求的最小数目以避免匮乏(starvation),即,具有低优先级的请求不被处理的情况。 在这些操作目标之上的并发的中和低优先级请求可以在现在给出的条件下经受排队。然 而,至少允许每个类型的最小数目的并发请求。在这个实施例的示例中,当在每个磁盘的基 础上表示时,数量T_h、T_m和T_1可以分别具有值2. 5、1. 0和0. 5。HWM_h包括在先前管理 周期期间测定的高优先级请求的高水位标记,其包括在先前管理周期期间观测到的高优先 级并发请求的最大数目。类似地,HWM_m和HWM_1分别包括在先前管理周期期间测定的中 和低优先级请求的高水位标记,其包括在先前管理周期期间观测到的中和低并发请求的最 大数目。方程(1)计算出的数量U_hm包括高和中优先级I/O的并发请求的分配。在方程 ⑴和⑵的实施例中,所述方法是对低优先级请求进行排队,以便允许(accommodate)高 和中优先级请求,直至(up to)被分配的等级。因此,在这个实施例中,低优先级队列的阈 值54被设置为T_sum-U_hm,此处T_sum被定义为T_h+T_m+T_l。更直观地,此阈值设置的 实际结果(net effect)可以被描述如下经受排队的并发请求的总数被限制为T_sum的最 大值,如果这能够通过设置关于接收磁盘服务的并发低优先级请求的数目的不少于T_1的 阈值来实现。方程(2)计算出的数量U_lh包括高和低优先级I/O的并发请求的分配。在方程 ⑴和⑵的实施例中,对中优先级请求进行排队,以便允许高和低优先级请求,直至被分 配的等级。因此,在这个实施例中,中优先级队列的阈值60被设置*T_Sum-U_lm。这样,此 阈值设置的实际结果能够被描述如下接收磁盘服务的并发请求的总数被限制为T_sum的 最大值,如果这能够通过设置关于接收磁盘服务的并发低优先级请求的数目的为T_1的阈 值、以及关于接收磁盘服务的并发中优先级请求的数目的不少于T_m的阈值来实现。使用以上确定的数量U_lh和U_mh,并且如果P是在先前管理周期中观测到的最高 优先级请求,则关于对于每个优先级等级如何继续进行的确定能够被计算(对于Q = “高”、 “中”和“低”)如下如果Q >= P,那么不对并发磁盘请求进行限制;
否则如果Q= “中”,那么限制并发磁盘请求的数目(在每个磁盘的基础上)为乙 sum-U—hi ;否则如果Q= “低”,那么限制并发磁盘请求的数目(在每个磁盘的基础上)为乙 sum-U—hmο通过以上方程,针对不同优先级的并发请求的最大数目被用于确定每个优先级的 排队阈值。此外,针对每个优先级而允许的请求的最小数目也可以在设置排队阈值时被考 虑,以确保最小数目的针对每个优先级的请求被处理。在以上实施例之一中,基于(1)针对 至少两个优先级而观测到的并发请求的最大数目、以及(2)针对所述至少两个优先级而允 许的请求的最小数目的最小值,对每个优先级阈值进行调整。考虑到不同的因素,其他方程 也可以用于基于将针对不同优先级的并发请求的最大数目维持在期望的范围内,调整排队 阈值。通过所描述的实施例,基于在先前管理时间间隔期间发生的诸如并发I/O请求的 总数的I/O活动(activity),关于是否对I/O请求进行排队而做出确定。在另外的实施例 中,对具有指定的优先级的I/O请求进行排队的优先级特定阈值可以被调整,以增加针对 指定的优先级的排队的数量,以减小低于阈值的I/O请求的总数。附加实施例细节所描述的操作可以被实施为使用标准编程和/或工程技术来制造软件、固件、硬 件或者它们的任何组合的方法、设备或者产品。所描述的操作可以被实施为“计算机可读存 储介质”中维持的代码,其中处理器可以从计算机可读存储介质读取并且执行所述代码。计 算机可读存储介质可以包括诸如磁存储介质(例如,硬盘驱动器、软盘、磁带等)、光存储器 (CD_R0M、DVD、光盘等)、易失性和非易失性存储装置(例如,EEPROM、ROM、PROM、RAM、DRAM、 SRAM、闪存、固件、可编程逻辑等)等的存储介质。实施所描述的操作的代码还可以在硬件 装置(例如,集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等)中实施的硬件 逻辑中实施。另外,实施所描述的操作的代码可以在“传送信号”中实施,其中传送信号可 以通过空间或者通过传送介质(例如,光纤、铜线等)传播。代码或者逻辑被编码在其中的 传送信号还可以包括无线信号、卫星传送、无线电波、红外信号、蓝牙等。“产品”可以包括传 送站和/或接收站,用于传送和接收代码或者逻辑被编码在其中的传送信号,其中在接收 和传送站或装置中,传送信号中编码的代码或者逻辑可以被编码并存储在硬件或者计算机 可读存储介质中。“产品”包括其中可以实施代码或逻辑的装置,诸如计算机可读存储介质、 硬件装置、和/或传送器或接收器。本领域的技术人员将意识到可以在不背离本发明的范 畴的情况下对此配置进行很多修改,以及所述产品可以包括本领域中已知的适当的信息承 载介质。在所描述的实施例中,为存取共享存储器中的存储地址的处理而改变存取参数。 在可替代的实施例中,可以为除了存储地址(诸如存储装置中的地址)外的计算机资源以 及其它计算机资源监控存取模式。术语“一实施例”、“实施例”、“多个实施例”、“该实施例”、“所述实施例”、“ 一个或 者多个实施例”、“一些实施例”以及“一个实施例”意味着“本发明的一个或多个(而不是 全部)实施例”,除非另外明确地指定。术语“包含”、“包括”、“具有”和其变型意味着“包含但不限于”,除非另外明确地指定。对项的列举的列表不意味着所述项中的任何或全部互相排斥,除非另外明确地指定。术语“所述”表示“一个或者多个”,除非另外明确地指定。互相通信的装置不需要处于持续的互相通信中,除非另外明确地指定。另外,互相 通信的装置可以通过一个或者多个媒介物(intermediary)直接或者间接地通信。具有多个互相通信的组件的实施例的描述不意味着要求所有这样的组件。相反 地,多种可选组件被描述以说明本发明的各种可能的实施例。此外,虽然处理步骤、方法步骤、算法等可以按顺序的次序进行描述,但是这些处 理、方法和算法可以被配置为以交替的次序工作。换句话说,可以进行描述的步骤的任何序 列或者次序不一定指示以该次序执行步骤的要求。这里描述的处理步骤可以以任何实际的 次序执行。此外,某些步骤可以被同时执行。当这里描述单个装置或者产品时,将易显然的是可以使用多于一个的装置/产 品(无论它们是否协作)来替代单个装置/产品。类似地,在这里描述多于一个装置或者 产品的情况下(无论它们是否协作),将易显然的是可以使用单个装置/产品来替代多于 一个的装置或者产品,或者可以使用不同数目的装置/产品来替代所示数目的装置或者程 序。装置的功能性和/或特征可以被不被明确地描述为具有这些功能性/特征的一个或者 多个其它装置而可替代地包含。因此,本发明的其他实施例不需要包含所述设备本身。图3、4和5所图示的操作示出了以特定次序发生的特定事件。在可替代的实施例 中,特定操作可以不同的次序执行、修改或者移除。此外,步骤可以被添加到以上描述的逻 辑中,并且仍然符合所描述的实施例。此外,这里描述的操作可以顺序地发生,或者可以并 行地处理特定操作。此外,可以通过单个处理单元或者通过分布的处理单元,来执行操作。为了说明和描述的目的,已经给出了前面对本发明的多个实施例的描述。其并非 意在穷尽的或将本发明限于公开的精确形式。依据以上教导,很多修改和变型是可能的。其 意在并非通过此详细的描述、而是通过此处所附权利要求来限制本发明的范围。以上详述、 示例和数据提供了对本发明的组成的制造和使用的完整描述。因为可以在不背离本发明的 精神和范围的情况下进行本发明的多个实施例,所以本发明存在于所附的权利要求中。
权利要求
一种方法,包括测定指向存储器的并发请求的最大数目;使用所测定的并发请求的最大数目来确定针对所指定的优先级的阈值;响应于确定针对所指定的优先级的并发请求的当前数目不超过所确定的针对所指定的优先级的阈值,允许随后的指向所述存储器的具有所指定的优先级的请求继续进行;允许随后的指向所述存储器的具有比所指定的优先级高的优先级的请求继续进行;并且响应于确定针对所指定的优先级的并发请求的当前数目超过总的阈值,将随后的指向所述存储器的具有所指定的优先级的请求排入队列中。
2.如权利要求1所述的方法,还包括指示对具有所指定的优先级的请求进行排队;指示不对具有比所指定的优先级高至少一个优先级的请求进行排队;接收指向所述存储器的具有优先级的请求;响应于确定没有用以对具有所接收到的请求的优先级的请求进行排队的指示,将所述 请求传送到所述存储器;并且响应于确定用以对具有所接收到的请求的优先级的请求进行排队的指示,以及响应于 确定具有所接收到的请求的优先级的并发请求的当前数目超过针对所接收到的请求的优 先级的阈值,将所接收到的请求排入所述队列中。
3.如权利要求2所述的方法,还包括响应于确定用以对具有所接收到的优先级的请求进行排队的指示,以及响应于确定具 有所接收到的请求的优先级的并发请求的当前数目没有超过所接收到的请求的优先级的 阈值,将所接收到的请求传送到所述存储器。
4.如任何上述权利要求所述的方法,还包括 确定在先前测定周期期间接收到的请求的最高优先级;指示对针对每个比所确定的最高优先级低的优先级的请求进行排队;并且 指示不对针对每个比所确定的最高优先级高的优先级的请求进行排队,其中所测定的 并发请求的最大数目被用于确定针对每个比所确定的最高优先级低的优先级的阈值。
5.如任何上述权利要求所述的方法,其中测定所述并发请求的最大数目包括测定针 对每个优先级的并发请求的最大数目。
6.如权利要求5所述的方法,其中在测定周期期间测定所述并发请求的最大数目,并 且其中,测定针对每个优先级的并发请求的最大数目包括响应于在所述测定周期期间接收到针对一个优先级的请求,递增针对所述一个优先级 的并发请求的数目;并且响应于在所述测定周期期间接收到针对一个优先级的请求,递减针对所述一个优先级 的并发请求的数目,其中针对每个优先级的并发请求的最大数目包括在所述测定周期期间 测定的针对每个优先级的并发请求的最大数目。
7.如权利要求5所述的方法,其中使用所测定的并发请求的最大数目来确定针对所指 定的优先级的阈值包括使用针对所述优先级的并发请求的最大数目来确定针对其请求将 被排队的优先级的阈值。
8.如权利要求7所述的方法,其中基于针对每个所指定的优先级而允许的请求的最小 数目,进一步确定所述优先级的阈值。
9.如权利要求7所述的方法,其中在完成的测定周期期间测定针对每个优先级的并发 请求的最大数目,并且其中在每个完成的测定周期后调整针对用以排队的优先级的阈值。
10.如权利要求5所述的方法,其中使用所测定的并发请求的最大数目来确定所指定 的优先级的阈值包括基于针对至少两个优先级而观测到的并发请求的最大数目以及针对 所述至少两个优先级而允许的请求的最小数目之中的最小值,确定每个优先级的阈值。
11.如任何上述权利要求所述的方法,还包括 接收具有所指定的优先级的请求完成的确认;响应于接收到所述确认,确定具有所指定的优先级的并发请求的当前数目是否低于所 指定的优先级的阈值;并且响应于确定具有所指定的优先级的并发请求的当前数目低于所指定的优先级的阈值, 处理至少一个具有所指定的优先级的排队的请求。
12.—种与存储器通信的系统,包括输入/输出(I/O)管理器,被执行以进行操作,所述操作包括 测定指向所述存储器的并发请求的最大数目;使用所测定的并发请求的最大数目来确定针对所指定的优先级的阈值; 响应于确定针对所指定的优先级的并发请求的当前数目不超过所确定的针对所指定 的优先级的阈值,允许随后的指向所述存储器的具有所指定的优先级的请求继续进行; 允许随后的指向所述存储器的具有比所指定的优先级高的优先级的请求继续进行;并且响应于确定针对所指定的优先级的并发请求的当前数目超过总的阈值,将随后的指向 所述存储器的具有所指定的优先级的请求排入队列中。
13.如权利要求12所述的系统,其中所述操作还包括 指示对具有所指定的优先级的请求进行排队;指示不对具有比所指定的优先级高至少一个优先级的请求进行排队; 接收指向所述存储器的具有优先级的请求;响应于确定没有用以对具有所接收到的请求的优先级的请求进行排队的指示,将所述 请求传送到所述存储器;并且响应于确定用以对具有所接收到的请求的优先级的请求进行排队的指示,以及响应于 确定具有所接收到的请求的优先级的并发请求的当前数目超过针对所接收到的请求的优 先级的阈值,将所接收到的请求排入所述队列中。
14.如权利要求13所述的系统,其中所述操作还包括响应于确定用以对具有所接收到的优先级的请求进行排队的指示,以及响应于确定具 有所接收到的请求的优先级的并发请求的当前数目没有超过所接收到的请求的优先级的 阈值,将所接收到的请求传送到所述存储器。
15.如权利要求12到14中的任何一项所述的系统,其中所述操作还包括 确定在先前测定周期期间接收到的请求的最高优先级;指示对针对每个比所确定的最高优先级低的优先级的请求进行排队;并且指示不对针对每个比所确定的最高优先级高的优先级的请求进行排队,其中所测定的 并发请求的最大数目被用于确定针对每个比所确定的最高优先级低的优先级的阈值。
16.如权利要求12到15中的任何一项所述的系统,其中测定所述并发请求的最大数目 包括测定针对每个优先级的并发请求的最大数目。
17.如权利要求16所述的系统,其中在测定周期期间测定所述并发请求的最大数目, 并且其中,测定针对每个优先级的并发请求的最大数目包括响应于在所述测定周期期间接收到针对一个优先级的请求,递增针对所述一个优先级 的并发请求的数目;并且响应于在所述测定周期期间接收到针对一个优先级的请求,递减针对所述一个优先级 的并发请求的数目,其中针对每个优先级的并发请求的最大数目包括在所述测定周期期间 测定的针对每个优先级的并发请求的最大数目。
18.如权利要求16所述的系统,其中使用所测定的并发请求的最大数目来确定针对所 指定的优先级的阈值包括使用针对所述优先级的并发请求的最大数目来确定针对其请求 将被排队的优先级的阈值。
19.如权利要求18所述的系统,其中基于针对每个所指定的优先级而允许的请求的最 小数目,进一步确定所述优先级阈值。
20.如权利要求18所述的系统,其中在完成的测定周期期间测定针对每个优先级的 并发请求的最大数目,并且其中在每个完成的测定周期后调整针对用以排队的优先级的阈 值。
21.如权利要求16所述的系统,其中使用所测定的并发请求的最大数目来确定所指定 的优先级的阈值包括基于针对至少两个优先级而观测到的并发请求的最大数目以及针对 所述至少两个优先级而允许的请求的最小数目之中的最小值,确定每个优先级的阈值。
22.如权利要求12到21中的任何一项所述的系统,其中所述操作还包括 接收具有所指定的优先级的请求完成的确认;响应于接收到所述确认,确定具有所指定的优先级的并发请求的当前数目是否低于所 指定的优先级阈值;并且响应于确定具有所指定的优先级的并发请求的当前数目低于所指定的优先级阈值,处 理至少一个具有所指定的优先级的排队的请求。
23.一种实施代码以与存储器通信并进行操作的产品,所述操作包括 测定指向所述存储器的并发请求的最大数目;使用所测定的并发请求的最大数目来确定针对所指定的优先级的阈值; 响应于确定针对所指定的优先级的并发请求的当前数目不超过所确定的针对所指定 的优先级的阈值,允许随后的指向所述存储器的具有所指定的优先级的请求继续进行; 允许随后的指向所述存储器的具有比所指定的优先级高的优先级的请求继续进行;并且响应于确定针对所指定的优先级的并发请求的当前数目超过总的阈值,将随后的指向 所述存储器的具有所指定的优先级的请求排入队列中。
24.如权利要求23所述的产品,其中所述操作还包括 指示对具有所指定的优先级的请求进行排队;指示不对具有比所指定的优先级高至少一个优先级的请求进行排队;接收指向所述存储器的具有优先级的请求;响应于确定没有用以对具有所接收到的请求的优先级的请求进行排队的指示,将所述 请求传送到所述存储器;并且响应于确定用以对具有所接收到的请求的优先级的请求进行排队的指示,以及响应于 确定具有所接收到的请求的优先级的并发请求的当前数目超过针对所接收到的请求的优 先级的阈值,将所接收到的请求排入所述队列中。
25.如权利要求24所述的产品,其中所述操作还包括响应于确定用以对具有所接收到的优先级的请求进行排队的指示,以及响应于确定具 有所接收到的请求的优先级的并发请求的当前数目没有超过所接收到的请求的优先级的 阈值,将所接收到的请求传送到所述存储器。
26.如权利要求23到25中的任何一项所述的产品,其中所述操作还包括确定在先前测定周期期间接收到的请求的最高优先级;指示对针对每个比所确定的最高优先级低的优先级的请求进行排队;并且指示不对针对每个比所确定的最高优先级高的优先级的请求进行排队,其中所测定的 并发请求的最大数目被用于确定针对每个比所确定的最高优先级低的优先级的阈值。
27.如权利要求23到26中的任何一项所述的产品,其中测定所述并发请求的最大数目 包括测定针对每个优先级的并发请求的最大数目。
28.如权利要求27所述的产品,其中在测定周期期间测定所述并发请求的最大数目, 并且其中,测定针对每个优先级的并发请求的最大数目包括响应于在所述测定周期期间接收到针对一个优先级的请求,递增针对所述一个优先级 的并发请求的数目;并且响应于在所述测定周期期间接收到针对一个优先级的请求,递减针对所述一个优先级 的并发请求的数目,其中针对每个优先级的并发请求的最大数目包括在所述测定周期期间 测定的针对每个优先级的并发请求的最大数目。
29.如权利要求27所述的产品,其中使用所测定的并发请求的最大数目来确定针对所 指定的优先级的阈值包括使用针对所述优先级的并发请求的最大数目来确定针对其请求 将被排队的优先级的阈值。
30.如权利要求29所述的产品,其中基于针对每个所指定的优先级而允许的请求的最 小数目,进一步确定所述优先级阈值。
31.如权利要求29所述的产品,其中在完成的测定周期期间测定针对每个优先级的 并发请求的最大数目,并且其中在每个完成的测定周期后调整针对用以排队的优先级的阈 值。
32.如权利要求27所述的产品,其中使用所测定的并发请求的最大数目来确定所指定 的优先级的阈值包括基于针对至少两个优先级而观测到的并发请求的最大数目以及针对 所述至少两个优先级而允许的请求的最小数目之中的最小值,确定每个优先级的阈值。
33.如任何权利要求23到32中的任何一项所述的产品,其中所述操作还包括接收具有所指定的优先级的请求完成的确认;响应于接收到所述确认,确定具有所指定的优先级的并发请求的当前数目是否低于所指定的优先级的阈值;并且响应于确定具有所指定的优先级的并发请求的当前数目低于所指定的优先级的阈值, 处理至少一个具有所指定的优先级的排队的请求。
34. 一种计算机程序,包括计算机可实施现的指令,所述指令用于实现根据权利要求1 到11中的任何一项所述的方法的步骤。
全文摘要
提供了一种方法、系统、产品以及计算机程序,用于使用优先级确定是否对指向存储器的输入/输出(I/O)请求进行排队。测定指向存储器的并发请求的最大数目。所测定的并发请求的最大数目被用于确定针对指定的优先级的阈值。响应于确定针对所指定的优先级的并发请求的当前数目不超过所确定的指定的优先级的阈值,允许随后的指向存储器的具有指定的优先级的请求继续进行。允许随后的指向所述存储器的具有比所指定的优先级高的优先级的请求继续进行。响应于确定针对所指定的优先级的并发请求的当前数目超过总的阈值,将随后的指向所述存储器的具有所指定的优先级的请求排入队列中。
文档编号G06F13/16GK101981539SQ200980110957
公开日2011年2月23日 申请日期2009年3月26日 优先权日2008年3月31日
发明者布鲁斯·麦克纳特, 马修·J·卡洛斯 申请人:国际商业机器公司