CN115437794A - I/o请求调度方法、装置、电子设备及存储介质 - Google Patents
I/o请求调度方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115437794A CN115437794A CN202211223430.0A CN202211223430A CN115437794A CN 115437794 A CN115437794 A CN 115437794A CN 202211223430 A CN202211223430 A CN 202211223430A CN 115437794 A CN115437794 A CN 115437794A
- Authority
- CN
- China
- Prior art keywords
- scheduling
- scheduled
- requests
- cache
- request
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开提供了一种I/O请求调度方法、装置、电子设备及存储介质,涉及计算机技术领域。该方法包括:获取多个待调度I/O请求及对应的数据量;获取多个参考缓存节点的可用缓存容量;基于最小化调度成本的动态规划,生成数据量和可用缓存容量对应的目标调度策略;根据目标调度策略,向多个参考缓存节点中调度多个待调度I/O请求。此种方式,考虑了代表参考缓存节点的状态的可用缓存容量,以及代表待调度I/O请求的状态的数据量,使得生成的目标调度策略可以适应参考缓存节点所在缓冲区的动态变化。基于最小化调度成本的动态规划生成的目标调度策略,可以提高缓冲区***的运行效率及缓冲资源的利用率。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种I/O请求调度方法、装置、电子设备及存储介质。
背景技术
在计算机技术领域中,计算***通常采用突发缓冲区来应对外部存储的峰值I/O请求(Input/Output,输入/输出),并发运行的多个应用程序共享突发缓冲区的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请求;根据所述第二I/O请求和所述作业信息,确定多个待调度I/O请求及对应的数据量。
在本公开的一个实施例中,所述获取模块,用于获取多个待选取缓存节点对应的可用缓存容量,所述多个待选取缓存节点是用于接收I/O请求的缓冲区设备中包括的缓存节点;确定所述多个待选取缓存节点中可用缓存容量大于容量阈值的缓存节点为参考缓存节点。
在本公开的一个实施例中,所述获取模块,用于接收缓冲区设备发送的指示消息,所述指示消息包括所述多个参考缓存节点对应的可用缓存容量,所述多个参考缓存节点对应的可用缓存容量均大于容量阈值;根据所述指示消息,确定所述参考缓存节点的可用缓存容量。
在本公开的一个实施例中,所述生成模块,用于确定所述数据量和所述可用缓存容量,在一种或多种最小化调度成本的动态规划方式下对应的一个或多个中间调度成本;确定所述一个或多个中间调度成本中的最小调度成本;确定所述最小调度成本对应的调度策略为所述目标调度策略。
在本公开的一个实施例中,所述多个待调度I/O请求的数量为n,所述多个参考缓存节点的数量为m,n和m均为大于或等于2的整数;所述一种或多种最小化调度成本的动态规划方式包括以下动态规划方式中的一种或多种:
Cij+OPT(n-i,m-j)
OPT(n-i,m)
OPT(n,m-j)
OPT(n-i,m-j)
其中,Cij是向第j个参考缓存节点中调度第i个待调度I/O请求的调度成本;OPT(n-i,m-j)是基于动态规划,向m个参考缓存节点中除第j个参考缓存节点外的其他缓存节点,调度n个待调度I/O请求中除第i个待调度I/O请求外的其他待调度I/O请求的最小调度成本;OPT(n-i,m)是基于动态规划,向m个参考缓存节点,调度n个待调度I/O请求中除第i个待调度I/O请求外的其他待调度I/O请求的最小调度成本;OPT(n,m-j)是基于动态规划,向m个参考缓存节点中除第j个参考缓存节点外的其他参考缓存节点,调度n个待调度I/O请求的最小调度成本。
在本公开的一个实施例中,所述目标调度策略对应的目的为最大化应用程序在缓冲区设备中获得的带宽的情况下,所述Cij根据所述多个待调度I/O请求的数量及对应的数据量和完成时长确定;所述完成时长是所述多个参考缓存节点完成对应的待调度I/O请求使用的时长。
在本公开的一个实施例中,所述目标调度策略对应的目的为最大缓冲***效率的情况下,所述Cij根据和中的至少一个确定;所述是多个服务时长中每一服务时长与前一服务时长比值之和的平均值,所述多个服务时长是所述多个参考缓存节点为多个第三应用程序提供服务的时长;所述多个第三应用程序为所述多个待调度I/O请求对应的应用程序;所述是所述多个参考缓存节点的平均剩余缓存容量。
在本公开的一个实施例中,所述目标调度策略对应的目的为最大化应用程序公平性的情况下,所述Cij根据第一完成时间与第二完成时间确定;所述第一完成时间是所述多个参考缓存节点为第一个第三应用程序完成服务的时间;所述第二完成时间是所述多个参考缓存节点为最后一个第三应用程序完成服务的时间;其中,第一个第三应用程序为多个第三应用程序中,第一个向调度设备注册的第三应用程序;最后一个第三应用程序为所述多个第三应用程序中,最后一个向调度设备注册的第三应用程序。
在本公开的一个实施例中,所述目标调度策略对应的目的为最小化应用程序延迟时长的情况下,所述Cij根据所述多个待调度I/O请求中,每一待调度I/O请求对应的等待调度时长和额外花费时长确定;所述等待调度时长是所述多个参考缓存节点为相应的待调度I/O请求服务的时间点,与为所述多个待调度I/O请求中的第一个待调度I/O请求服务的时间点之间的差值;所述额外花费时长是所述多个参考缓存节点为相应的待调度I/O请求服务的时长,与无干扰情况下所述多个参考缓存节点为相应的待调度I/O请求服务的时长之间的差值。
在本公开的一个实施例中,所述获取模块,还用于获取待检测缓存节点的并发容忍度,所述并发容忍度表示所述待检测缓存节点的并发能力;获取所述待检测缓存节点中并发访问的应用程序的并发数量;获取所述待检测缓存节点的可实现最大带宽及实际带宽;所述装置还包括:第一确定模块,用于根据所述并发容忍度、所述并发数量、所述可实现最大带宽及实际带宽,确定所述待检测缓存节点对并发访问的敏感度。
在本公开的一个实施例中,所述并发容忍度包括所述待检测缓存节点对应的总线通道、控制器通道、存储体数量中的一个或多个。
在本公开的一个实施例中,所述第一确定模块,用于根据如下公式计算所述敏感度:
δ=λτ×λω
其中,τa为所述并发数量;τdc为所述并发容忍度;ωmax为所述可实现最大带宽;ωr为所述实际带宽;δ为所述敏感度。
在本公开的一个实施例中,所述获取模块,还用于获取待检测应用程序对应的作业在有干扰情况下的第一执行时长,所述有干扰表示缓冲区设备中存在并行执行的其他应用程序;获取所述作业在无干扰情况下的第二执行时长,所述无干扰表示缓冲区设备中不存在并行执行的其他应用程序;所述装置还包括:第二确定模块,用于根据所述第一执行时长和所述第二执行时长,确定干扰值。
在本公开的一个实施例中,所述第二确定模块,用于根据如下公式计算所述干扰值:
其中,ETwith_interference为所述第一执行时长;ETwithout_interference为所述第二执行时长;所述ε为干扰值。
根据本公开的再一个方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任一所述的输入/输出I/O请求调度方法。
根据本公开的又一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一所述的输入/输出I/O请求调度方法。
根据本公开的又一个方面,提供一种计算机程序产品,所述计算机程序产品包括计算机程序或计算机指令,所述计算机程序或所述计算机指令由处理器加载并执行,以使计算机实现上述任一所述的输入/输出I/O请求调度方法。
本公开的实施例所提供的技术方案至少包括以下有益效果:
本公开的实施例所提供的技术方案,获取多个待调度I/O请求的数据量及多个参考缓存节点的可用缓存容量,并利用该数据量和可用缓存容量,进行最小化调度成本的动态规划,生成调度多个待调度I/O请求的目标调度策略。利用待调度I/O请求的数据量及参考缓存节点的可用缓存容量生成的目标调度策略,考虑了代表参考缓存节点的状态的可用缓存容量,以及代表待调度I/O请求的状态的数据量,使得生成的目标调度策略可以更好地适应参考缓存节点所在缓冲区的动态变化。另外,执行基于最小化调度成本的动态规划生成的目标调度策略,可以提高缓冲区***的运行效率及缓冲资源的利用率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本公开实施例中一种I/O请求调度***的结构示意图;
图2示出本公开一个实施例中的I/O请求调度方法流程图;
图3示出本公开一个实施例中确定待检测缓存节点对并发访问的敏感度的流程图;
图4示出本公开一个实施例中确定应用程序的干扰值的方法流程图;
图5示出本公开另一个实施例中的I/O请求调度方法流程图;
图6示出本公开实施例中一种I/O请求调度装置示意图;
图7示出本公开实施例中一种电子设备的结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
图1示出本公开实施例中一种I/O请求调度***结构的示意图,该***可以应用本公开各种实施例中的I/O请求调度方法或I/O请求调度装置。
如图1所示,该I/O请求调度***架构可以包括:I/O调度设备11、缓冲区设备12、多个访问设备13。
其中,缓冲区设备12包括多个缓存节点,每一个缓存节点均具有一定的缓存资源,该缓存资源可用于缓存I/O请求等。缓冲区设备12中配置有监测模块,该监测模块能够监测多个缓存节点的状态信息,例如,监测该多个缓存节点的可用缓存容量、带宽、缓存节点的忙/闲等信息。缓冲区设备12可以向I/O调度设备11发送数据,缓冲区设备12还可以接收I/O调度设备11发送的数据。
多个访问设备13包括的各个设备中安装有应用程序,多个访问设备13中安装的应用该程序在启动及运行过程中会产生相应的作业,该作业中包括I/O请求,多个访问设备13包括的访问设备能够将应用程序产生的I/O请求发往I/O调度设备11。在一些实施例中,应用程序对应的访问设备能够向I/O调度设备11注册应用程序产生的作业的信息,例如,该信息包括作业的名称、大小、内容等。
在一些实施例中,应用程序对应的访问设备中配置有代理模块,该代理模块能够监测应用程序当前所处的阶段,应用程序所处的阶段为应用程序正在进行的作业所处的阶段,例如,一个作业通常包括I/O请求、计算任务,当应用程序需要读取/写入数据时,则当前的作业阶段为I/O阶段,相应地,应用程序所处的阶段为I/O阶段。在一些实施例中,代理模块可以将对监测到的应用程序所处的阶段信息向对应的访问设备报告,该访问设备能够将该阶段信息发往I/O调度设备11。
I/O调度设备11维护I/O调度队列,在一个实施例中,该I/O队列中包括已调度但未执行的I/O请求,还包括未调度的I/O请求。在另一个实施例中,该I/O队列中未调度的I/O请求。其中,I/O调度设备11能够接收代理模块发送的应用程序所处的阶段信息,根据该阶段信息及应用程序的作业信息确定需要调度的I/O请求,进而根据该需要调度的I/O请求维护I/O调度队列。I/O调度设备11能够接收缓冲区设备12发送的节点的状态信息,并根据该状态信息维护缓冲区设备11中缓存节点的状态。I/O调度设备11能够根据调度队列中需要调度的I/O请求和缓冲区设备12包括的缓存节点的状态生成相应的调度策略,并根据该调度策略将I/O请求向相应的缓存节点调度。
I/O调度设备11、缓冲区设备12、多个访问设备13之间通过网络实现通信连接,该网络可以是有线网络,也可以是无线网络。
可选地,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也可以是任何网络,包括但不限于局域网(Local Area Network,LAN)、城域网(Metropolitan Area Network,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合)。在一些实施例中,使用包括超文本标记语言(Hyper Text Mark-up Language,HTML)、可扩展标记语言(ExtensibleMarkupLanguage,XML)等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(Secure Socket Layer,SSL)、传输层安全(Transport Layer Security,TLS)、虚拟专用网络(Virtual Private Network,VPN)、网际协议安全(InternetProtocolSecurity,IPsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
多个访问设备13包括的访问设备可以是各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机、台式计算机、可穿戴设备、增强现实设备、虚拟现实设备等。多个访问设备13包括的不同访问设备中安装的应用程序可以具有相同的应用程序,也可以具有不同的应用程序,本公开实施例对此不做限制。
缓冲区设备12是具有一个或多个缓存节点的电子设备,例如,缓冲区设备12可以是具备存储功能的服务器、终端等。其中,缓存节点可以是独立的电子设备,且不同的缓存节点对应的存储介质可以相同,也可以不同。例如,每一缓存节点对应的存储介质可以为RAM(Random Access Memory,随机存取存储器)、SSD(Solid State Disk,固态硬盘)、HDD(Hard Disk Drive,机械硬盘)中的一种或多种。
I/O调度设备11可以是具备上述功能的任一电子设备,例如,服务器,终端。在一个实施例中,I/O调度设备11还可以是缓冲区设备12中的功能模块。
本领域技术人员可以知晓,图1中的多个访问设备13的数量仅仅是示意性的,根据实际需要,可以具有任意数目的访问设备。本公开实施例对此不作限定。
下面结合附图及实施例对本示例实施方式进行详细说明。
本公开实施例中提供了一种I/O请求调度方法,该方法可以由任意具备计算处理能力的电子设备执行。例如,该电子设备为I/OI/O调度设备。
图2示出本公开实施例中一种I/O请求调度方法流程图,如图2所示,本公开实施例中提供的I/O请求调度方法包括如下S201至S204。
S201,获取多个待调度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调度设备。确定第一应用程序中作业阶段为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请求及相应的数据量。
S202,获取多个参考缓存节点的可用缓存容量。
在一些实施例中,获取多个参考缓存节点的可用缓存容量,可以包括:获取多个待选取缓存节点对应的可用缓存容量,多个待选取缓存节点是用于接收I/O请求的缓冲区设备中包括的缓存节点;确定多个待选取缓存节点中可用缓存容量大于容量阈值的缓存节点为参考缓存节点。
缓冲区设备配置有检测模块,该监测模块可以监测缓冲区设备包括的多个待选取缓存节点的可用缓冲容量,并能够向I/O调度设备发送多个待选取缓存节点的可用缓冲容量信息。I/O调度设备接收到该可用缓冲容量信息后,根据该可用缓冲容量信息可以确定多个待选取缓存节点的可用缓冲容量,并根据该多个待选取缓存节点的可用缓冲容量确定出多个待选取缓存节点中,可用缓冲容量大于容量阈值的参考缓存节点。其中,容量阈值为设定值,关于容量阈值的具体大小,本公开实施例不做限制,可根据经验设置。
在另一些实施例中,获取多个参考缓存节点的可用缓存容量,可以包括:接收缓冲区设备发送的指示消息,指示消息包括多个参考缓存节点对应的可用缓存容量,多个参考缓存节点对应的可用缓存容量均大于容量阈值;根据指示消息,确定参考缓存节点的可用缓存容量。
在一些实施例中,缓冲区设备配置有监测模块,该监测模块能够监测缓冲区设备包括的多个待选取缓存节点的可用缓冲容量,并在待选取缓存节点的可用缓存容量大于容量阈值的情况下,确定待选取缓存节点为参考缓存节点,并生成指示消息,该指示消息包括多个待选取缓存节点中的参考缓存节点的标识及相应的可用缓存容量。
S203,基于最小化调度成本的动态规划,生成数据量和可用缓存容量对应的目标调度策略。
在一些实施例中,基于最小化调度成本的动态规划,生成数据量和可用缓存容量对应的目标调度策略,可以包括:确定数据量和可用缓存容量,在一种或多种最小化调度成本的动态规划方式下对应的一个或多个中间调度成本;确定一个或多个中间调度成本中的最小调度成本;确定最小调度成本对应的调度策略为目标调度策略。
在一些实施例中,多个待调度I/O请求的数量为n,多个参考缓存节点的数量为m,n和m均为大于或等于2的整数,一种或多种最小化调度成本的动态规划方式包括以下动态规划方式中的一种或多种:
Cij+OPT(n-i,m-j) (1)
OPT(n-i,m) (2)
OPT(n,m-j) (3)
OPT(n-i,m-j) (4)
其中,Cij是向第j个参考缓存节点中调度第i个待调度I/O请求的调度成本。OPT(n-i,m-j)是基于动态规划,向m个参考缓存节点中除第j个参考缓存节点外的其他缓存节点,调度n个待调度I/O请求中除第i个待调度I/O请求外的其他待调度I/O请求的最小调度成本。OPT(n-i,m)是基于动态规划,向m个参考缓存节点,调度n个待调度I/O请求中除第i个待调度I/O请求外的其他待调度I/O请求的最小调度成本。OPT(n,m-j)是基于动态规划,向m个参考缓存节点中除第j个参考缓存节点外的其他参考缓存节点,调度n个待调度I/O请求的最小调度成本。
在一些实施例中,可以按照如下公式5所示的动态规划,确定出最小调度成本,并确定该最小调度成本对应的调度策略为目标调度策略。
其中,OPT(n,m)是基于公式1、公式2、公式3和公式4所示的4种动态规划方式下,向m个参考缓存节点,调度n个待调度I/O请求的最小调度成本,MIN(.)是取最小值函数。
在一些实施例中,目标调度策略对应的目的为最大化应用程序在缓冲区设备中获得的带宽的情况下,Cij根据多个待调度I/O请求的数量及对应的数据量和完成时长确定;完成时长是多个参考缓存节点完成对应的待调度I/O请求使用的时长。在一些实施例中,完成时长可以根据多个待调度I/O请求的数据量及多个参考缓存节点的可用缓存容量预测得到。关于如何根据多个待调度I/O请求的数据量及多个参考缓存节点的可用缓存容量,预测待调度I/O请求的完成时长,本公开实施例不做限制。例如,可以通过直接计算的方式进行预测,或者,还可以通过经验模型预测该完成时长。其中,经验模型根据调度的历史数据中与当前调度相似的情况下待调度I/O请求的完成时长,生成当前待调度I/O请求的完成时长。
在一个实施例中,目标调度策略对应的目的为最大化应用程序在缓冲区设备中获得的带宽的情况下,Cij根据如下公式6得到。
其中,γi是第i个待调度I/O请求的数据量,ti是第i个待调度I/O请求的完成时长,n为多个待调度I/O请求的数量,其中,n为大于或等于2的整数。
在一些实施例中,目标调度策略对应的目的为最大缓冲***效率的情况下,Cij根据和中的至少一个确定。是多个服务时长中每一服务时长与前一服务时长比值之和的平均值,多个服务时长是多个参考缓存节点为多个第三应用程序提供服务的时长。多个第三应用程序为多个待调度I/O请求对应的应用程序。是多个参考缓存节点的平均剩余缓存容量。
多个第三应用程序向I/O调度设备进行的注册的时间具有先后关系,根据该先后关系,可以确定第三应用程序开始被服务的先后顺序,根据先后顺序可以确定出多个参考缓存节点为每一个第三应用程序服务的服务时长,及每一个服务时长与前一服务时长之间的比值。第一个被多个参考缓存节点服务的第三应用程序,不存在对应的前一个被服务第三应用程序,所以在计算服务时长时,可以将第一个第三应用程序对应的服务时长仅作为后续计算服务时长比值的分母,例如,共有3个第三应用程序,第一个第三应用程序对应的服务时长为1s(秒),第二个第三应用程序对应的服务时长为1.1s,第三个第三应用程序对应的服务时长为2.2s,则
在一些实施例中,每一个第三应用程序对应的服务时长,可以根据多个待调度I/O请求的数据量及多个参考缓存节点的可用缓存容量预测得到。关于如何根据多个待调度I/O请求的数据量及多个参考缓存节点的可用缓存容量,预测每一第三应用程序对应的服务时长,本公开实施例不做限制。例如,可以通过直接计算的方式进行预测,或者,还可以通过经验模型预测该服务时长。
在一些实施例中,可以根据每一待调度I/O请求被分配响应的缓存资源后,多个参考缓存节点的可用缓存容量相加后取平均值得到。关于如何根据多个待调度I/O请求的数据量及多个参考缓存节点的可用缓存容量,预测多个参考缓存节点的可用缓存容量,本公开实施例不做限制。例如,可以通过直接计算的方式进行预测,或者,还可以通过经验模型预测该可用缓存容量。例如,每一待调度I/O请求被分配相应的缓存资源后多个参考缓存节点的可用缓存容量,可以根据多个待调度I/O请求的数据量,以及为待调度I/O请求分配缓存资源之前多个参考缓存节点的可用缓存容量直接计算得到。
在一些实施例中,目标调度策略对应的目的为最大缓冲***效率的情况下,Cij根据如下公式7得到。
在一些实施例中,目标调度策略对应的目的为最大化应用程序公平性的情况下,Cij根据第一完成时间与第二完成时间确定;第一完成时间是多个参考缓存节点为第一个第三应用程序完成服务的时间;第二完成时间是多个参考缓存节点为最后一个第三应用程序完成服务的时间;其中,第一个第三应用程序为多个第三应用程序中,第一个向调度设备注册的第三应用程序;最后一个第三应用程序为多个第三应用程序中,最后一个向调度设备注册的第三应用程序。
第一完成时间和第二完成时间,可以根据多个待调度I/O请求的数据量及多个参考缓存节点的可用缓存容量预测得到。关于如何根据多个待调度I/O请求的数据量及多个参考缓存节点的可用缓存容量,预测第一完成时间和第二完成时间,本公开实施例不做限制。例如,可以通过直接计算的方式进行预测,或者,还可以通过经验模型预测第一完成时间和第二完成时间。
在一些实施例中,目标调度策略对应的目的为最大化应用程序公平性的情况下,Cij根据如下公式8得到。
Cij=tc-LastApp-tc-FirstApp (8)
其中,tc-LastApp为第二完成时间,tc-FirstApp为第一完成时间。
在一些实施例中,目标调度策略对应的目的为最小化应用程序延迟时长的情况下,Cij根据多个待调度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请求等待调度的时长,以及多个参考缓存节点为相应的待调度I/O请求服务的时长,可以根据多个待调度I/O请求的数据量及多个参考缓存节点的可用缓存容量预测得到。
在一些实施例中,目标调度策略对应的目的为最小化应用程序延迟时长的情况下,Cij根据如下公式9得到。
其中,n为多个待调度I/O请求的数量,ti-waiting为第i个待调度I/O请求的等待调度时长,ti-extra为第i个待调度I/O请求的额外花费时长。
S204,根据目标调度策略,向多个参考缓存节点中调度多个待调度I/O请求。
I/O调度设备根据多个待调度I/O请求的数据量以及多个参考缓存节点的可用缓存容量,生成目标调度策略后,执行该目标调度策略,从多个参考缓存节点具有的缓冲资源中,为多个待调度I/O请求分配目标调度策略中指示的缓存资源,向多个参考缓存节点中调度该多个待调度I/O请求。
本公开的实施例所提供的技术方案,获取多个待调度I/O请求的数据量及多个参考缓存节点的可用缓存容量,并利用该数据量和可用缓存容量,进行最小化调度成本的动态规划,生成调度多个待调度I/O请求的目标调度策略。利用待调度I/O请求的数据量及参考缓存节点的可用缓存容量生成的目标调度策略,考虑了代表参考缓存节点的状态的可用缓存容量,以及代表待调度I/O请求的状态的数据量,使得生成的目标调度策略可以更好地适应参考缓存节点所在缓冲区的动态变化。另外,执行基于最小化调度成本的动态规划生成的目标调度策略,可以提高缓冲区***的运行效率及缓冲资源的利用率,进而降低了待调度I/O请求对应的应用程序运行大幅延迟或中断的发生概率。
此外,本公开实施例还提供了调度策略的目的为最大化应用程序在缓冲区设备中获得的带宽,或者为最大缓冲***效率,或者为最大化应用程序公平性,或者为最小化应用程序延迟时长的情况下,Cij的计算方式。
在本公开的另一个实施例中,还提供了一种待检测缓存节点对并发访问的敏感度的确定方法。如图3所示,待检测缓存节点对并发访问的敏感度的确定过程包括S301至S304。
S301,获取待检测缓存节点的并发容忍度,并发容忍度表示待检测缓存节点的并发能力。
其中,待检测缓存节点是缓冲区设备包括的缓存节点中的部分或全部缓存节点。例如,缓冲区设备包括5个缓存节点,待检测缓存节点可以为该5个缓存节点中任意3个缓存节点,也可以为该5个缓存节点中的全部缓存节点。在一些实施例中,待检测缓存节点的并发容忍度包括待检测缓存节点对应的总线通道、控制器通道、存储体数量中的一个或多个。
待检测缓存节点对应的总线通道、控制器通道、存储体数量均为确定的信息,该信息可以存储在缓冲区设备中,获取待检测缓存节点的并发容忍度,可以包括:向缓冲区设备发送请求消息;接收缓冲设备发送的反馈消息,该反馈消息包括待检测缓存节点对应的总线通道、控制器通道、存储体数量中的一种或多种。
S302,获取待检测缓存节点中并发访问的应用程序的并发数量。
其中,并发数量用于表示待检测缓存节点中并发访问的应用程序的数量。I/O调度设备能够对待调度I/O请求进行调度,相应地,I/O调度设备中存储有为I/O请求与缓存节点之间的对应关系,根据该对应关系,可以获取到待检测缓存节点中并发访问的应用程序的并发数量。
S303,获取待检测缓存节点的可实现最大带宽及实际带宽。
待检测缓存节点的可实现最大带宽及实际带宽为确定的信息,在一些实施例中,待检测缓存节点的可实现最大带宽及实际带宽可以存储在缓冲区设备中,获取待检测缓存节点的可实现最大带宽及实际带宽,可以包括:从缓冲区设备中获取待检测缓存节点的可实现最大带宽及实际带宽。
S304,根据并发容忍度、并发数量、可实现最大带宽及实际带宽,确定待检测缓存节点对并发访问的敏感度。
在一些实施例中,根据并发容忍度、并发数量、可实现最大带宽及实际带宽,确定待检测缓存节点对并发访问的敏感度,可以根据如下公式10、公式11、公式12计算待检测缓存节点对并发访问的敏感度。
δ=λτ×λω (12)
其中,τa为并发数量;τdc为并发容忍度;ωmax为可实现最大带宽;ωr为实际带宽;δ为待检测缓存节点对并发访问的敏感度。
本公开实施例提供的技术方案,提供了一种缓存节点对并发访问的敏感度的表示方式,并且提供了一种计算待检测缓存节点对并发访问的敏感度的方式。为评估缓存节点性能及不同调度策略的效果提供了参考。
在本公开的另一个实施例中,还提供了一种确定应用程序的干扰值的方法。如图4所示,应用程序的干扰值的确定过程包括S401至S403。
S401,获取待检测应用程序对应的作业在有干扰情况下的第一执行时长,有干扰表示缓冲区设备中存在并行执行的其他应用程序。
其中,待检测应用程序可以为任意一个向缓冲区设备请求缓存资源的应用程序。待检测应用程序启动后,该待检测应用程序对应的访问设备向I/O调度设备注册该待检测应用程序的作业信息等,并在应用程序完成作业记录该作业完成时间,之后向I/O调度设备发送该作业完成时间。I/O调度设备根据注册时间及作业完成时间,可以得到该待检测应用程序对应的作业在有干扰情况下的第一执行时长。
S402,获取作业在无干扰情况下的第二执行时长,无干扰表示缓冲区设备中不存在并行执行的其他应用程序。
在一些实施例中,在无干扰情况下,待检测应用程序的作业的第二执行时长,可以将历史作业的执行时长作为第二执行时长,该历史作业与待检测应用程序的作业具有相同的数据量,且执行该历史作业时所处的环境与待检测应用程序的作业在执行时所处的环境相同或相近,例如,缓冲区设备包括的缓存节点具有相同或相近的可用缓存容量,并且执行该历史作业时不存在其他应用程序的作业的干扰。获取作业在无干扰情况下的第二执行时长,可以包括:获取历史作业的执行时长。
S403,根据第一执行时长和第二执行时长,确定干扰值。
在一些实施例中,根据第一执行时长和第二执行时长,确定干扰值的方式,可以如公式13所示。
其中,ETwith_interference为所述第一执行时长;ETwithout_interference为所述第二执行时长;ε为干扰值。
本公开实施例提供的技术方案,提供了一种应用程序受干扰情况的表示方式,并且提供了一种应用程序受干扰程度的计算方式。为评估缓存节点性能及不同调度策略的效果提供了参考。
为便于理解,下面将综合图2对应的实施例、图3对应的实施例以及图4对应的实施例,来说明本公开实施例提供的I/O请求调度方法。如图5所示,本公开另一个实施例中提供的I/O请求调度方法包括S501至S508。
S501,缓冲区设备持续向I/O调度设备发送缓存节点的状态。缓冲区设备中配置的监测模块,持续收集缓冲区设备包括的缓存节点的状态,并将缓村节点的忙/闲状态信息发往I/O调度设备。
S502,缓冲区设备向I/O调度设备发送指示消息,该指示消息包括参考缓存节点的标识及对应的可用缓存容量。其中,参考缓存节点的可用缓存容量大于容量阈值。缓冲区设备中配置的监测模块,持续收集缓冲区设备包括的缓存节点的可用缓存容量,并在缓存节点的可用缓存容量大于容量阈值的情况下,向I/O调度设备报告该缓存节点的标识及可用缓存容量。
S503,I/O调度设备维护应用程序的注册信息,跟踪运行中的应用程序所处的作业阶段。
S504,I/O调度设备维护缓冲区设备包括的缓存节点的状态及可用缓存容量。
S505,I/O调度设备维护调度队列信息。其中,调度队列信息包括已调度未执行的I/O请求以及未调度的I/O请求。I/O调度设备根据所维护的应用程序的作业阶段更新调度队列信息。
S506,应用程序启动时,访问设备向I/O调度设备注册该应用该程序的作业信息等。
S507,I/O调度设备收到应用程序对应的注册信息后,计算后验指标干扰值和敏感度。其中,I/O调度设备计算干扰值和敏感度的时间是任意的,S507中I/O调度设备收到应用程序对应的注册信息后,计算后验指标干扰值和敏感度,仅为计算后验指标的一种方式。
S508,I/O调度设备根据最小化成本的动态规划,生成多个待调度I/O请求对应的目标调度策略。其中,多个待调度I/O请求为调度队列中的I/O请求。
关于图5对应的实施例中各个步骤的实现,可以参见图2、图3和图4对应的实施例,在此不再赘述。
本公开实施例提供的技术方案,利用最小化调度成本的动态规划,生成调度多个待调度I/O请求的目标调度策略。利用待调度I/O请求的数据量及参考缓存节点的可用缓存容量生成的目标调度策略,考虑了代表参考缓存节点的状态的可用缓存容量,以及代表待调度I/O请求的状态的数据量,使得生成的目标调度策略可以更好地适应参考缓存节点所在缓冲区的动态变化。
另外,基于最小化调度成本的动态规划生成的目标调度策略,可以提高缓冲区***的运行效率及缓冲资源的利用率,进而降低了待调度I/O请求对应的应用程序运行大幅延迟或中断的发生概率。
此外,本公开实施例提供的技术方案还提出了两种后验指标(敏感度、干扰值)及计算方式,定量描述由于干扰而导致的应用程序变慢程度,为评估缓存节点性能及不同调度策略的效果提供了参考。
基于同一发明构思,本公开实施例中还提供了一种I/O请求调度装置,如下面的实施例所述。由于该装置实施例解决问题的原理与上述方法实施例相似,因此该装置实施例的实施可以参见上述方法实施例的实施,重复之处不再赘述。
图6示出本公开实施例中一种I/O请求调度装置示意图,如图6所示,该装置包括:获取模块601,用于获取多个待调度I/O请求及对应的数据量;获取模块601,还用于获取多个参考缓存节点的可用缓存容量;生成模块602,用于基于最小化调度成本的动态规划,生成数据量和可用缓存容量对应的目标调度策略;调度模块603,用于根据目标调度策略,向多个参考缓存节点中调度多个待调度I/O请求。
在本公开的一个实施例中,获取模块601,用于获取第一应用程序的作业信息,第一应用程序是向调度设备完成注册的应用程序,作业信息包括第一应用程序的第一I/O请求及对应的数据量;确定第一应用程序中作业阶段为I/O阶段的第二应用程序;确定第一I/O请求中使第二应用程序处于I/O阶段的第二I/O请求;根据第二I/O请求和作业信息,确定多个待调度I/O请求及对应的数据量。
在本公开的一个实施例中,获取模块601,用于获取多个待选取缓存节点对应的可用缓存容量,多个待选取缓存节点是用于接收I/O请求的缓冲区设备中包括的缓存节点;确定多个待选取缓存节点中可用缓存容量大于容量阈值的缓存节点为参考缓存节点。
在本公开的一个实施例中,获取模块601,用于接收缓冲区设备发送的指示消息,指示消息包括多个参考缓存节点对应的可用缓存容量,多个参考缓存节点对应的可用缓存容量均大于容量阈值;根据指示消息,确定参考缓存节点的可用缓存容量。
在本公开的一个实施例中,生成模块602,用于确定数据量和可用缓存容量,在一种或多种最小化调度成本的动态规划方式下对应的一个或多个中间调度成本;确定一个或多个中间调度成本中的最小调度成本;确定最小调度成本对应的调度策略为目标调度策略。
在本公开的一个实施例中,多个待调度I/O请求的数量为n,多个参考缓存节点的数量为m,n和m均为大于或等于2的整数;一种或多种最小化调度成本的动态规划方式包括以下动态规划方式中的一种或多种:
Cij+OPT(n-i,m-j)
OPT(n-i,m)
OPT(n,m-j)
OPT(n-i,m-j)
其中,Cij是向第j个参考缓存节点中调度第i个待调度I/O请求的调度成本;OPT(n-i,m-j)是基于动态规划,向m个参考缓存节点中除第j个参考缓存节点外的其他缓存节点,调度n个待调度I/O请求中除第i个待调度I/O请求外的其他待调度I/O请求的最小调度成本;OPT(n-i,m)是基于动态规划,向m个参考缓存节点,调度n个待调度I/O请求中除第i个待调度I/O请求外的其他待调度I/O请求的最小调度成本;OPT(n,m-j)是基于动态规划,向m个参考缓存节点中除第j个参考缓存节点外的其他参考缓存节点,调度n个待调度I/O请求的最小调度成本。
在本公开的一个实施例中,目标调度策略对应的目的为最大化应用程序在缓冲区设备中获得的带宽的情况下,Cij根据多个待调度I/O请求的数量及对应的数据量和完成时长确定;完成时长是多个参考缓存节点完成对应的待调度I/O请求使用的时长。
在本公开的一个实施例中,目标调度策略对应的目的为最大缓冲***效率的情况下,Cij根据和中的至少一个确定;是多个服务时长中每一服务时长与前一服务时长比值之和的平均值,多个服务时长是多个参考缓存节点为多个第三应用程序提供服务的时长;多个第三应用程序为多个待调度I/O请求对应的应用程序;是多个参考缓存节点的平均剩余缓存容量。
在本公开的一个实施例中,目标调度策略对应的目的为最大化应用程序公平性的情况下,Cij根据第一完成时间与第二完成时间确定;第一完成时间是多个参考缓存节点为第一个第三应用程序完成服务的时间;第二完成时间是多个参考缓存节点为最后一个第三应用程序完成服务的时间;其中,第一个第三应用程序为多个第三应用程序中,第一个向调度设备注册的第三应用程序;最后一个第三应用程序为多个第三应用程序中,最后一个向调度设备注册的第三应用程序。
在本公开的一个实施例中,目标调度策略对应的目的为最小化应用程序延迟时长的情况下,Cij根据多个待调度I/O请求中,每一待调度I/O请求对应的等待调度时长和额外花费时长确定;等待调度时长是多个参考缓存节点为相应的待调度I/O请求服务的时间点,与为多个待调度I/O请求中的第一个待调度I/O请求服务的时间点之间的差值;额外花费时长是多个参考缓存节点为相应的待调度I/O请求服务的时长,与无干扰情况下多个参考缓存节点为相应的待调度I/O请求服务的时长之间的差值。
在本公开的一个实施例中,获取模块601,还用于获取待检测缓存节点的并发容忍度,并发容忍度表示待检测缓存节点的并发能力;获取待检测缓存节点中并发访问的应用程序的并发数量;获取待检测缓存节点的可实现最大带宽及实际带宽;装置还包括:第一确定模块604,用于根据并发容忍度、并发数量、可实现最大带宽及实际带宽,确定待检测缓存节点对并发访问的敏感度。
在本公开的一个实施例中,并发容忍度包括待检测缓存节点对应的总线通道、控制器通道、存储体数量中的一个或多个。
在本公开的一个实施例中,第一确定模块604,用于根据如下公式计算敏感度:
δ=λτ×λω
其中,τa为并发数量;τdc为并发容忍度;ωmax为可实现最大带宽;ωr为实际带宽;δ为敏感度。
在本公开的一个实施例中,获取模块601,还用于获取待检测应用程序对应的作业在有干扰情况下的第一执行时长,有干扰表示缓冲区设备中存在并行执行的其他应用程序;获取作业在无干扰情况下的第二执行时长,无干扰表示缓冲区设备中不存在并行执行的其他应用程序;装置还包括:第二确定模块605,用于根据第一执行时长和第二执行时长,确定干扰值。
在本公开的一个实施例中,第二确定模块605,用于根据如下公式计算干扰值:
其中,ETwith_interference为第一执行时长;ETwithout_interference为第二执行时长;ε为干扰值。
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为***、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“***”。
下面参照图7来描述根据本公开的这种实施方式的电子设备700。图7显示的电子设备700仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图7所示,电子设备700以通用计算设备的形式表现。电子设备700的组件可以包括但不限于:上述至少一个处理单元710、上述至少一个存储单元720、连接不同***组件(包括存储单元720和处理单元710)的总线730。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元710执行,使得所述处理单元710执行本说明书上述“具体实施方式”部分中描述的根据本公开各种示例性实施方式的步骤。
存储单元720可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)7201和/或高速缓存存储单元7202,还可以进一步包括只读存储单元(ROM)7203。
存储单元720还可以包括具有一组(至少一个)程序模块7205的程序/实用工具7204,这样的程序模块7205包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线730可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、***总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备700也可以与一个或多个外部设备740(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备700交互的设备通信,和/或与使得该电子设备700能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口750进行。并且,电子设备700还可以通过网络适配器760与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图7所示,网络适配器760通过总线730与电子设备700的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备700使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质可以是可读信号介质或者可读存储介质。其上存储有能够实现本公开上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“具体实施方式”部分中描述的根据本公开各种示例性实施方式的步骤。
本公开中的计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
在本公开中,计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
可选地,计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
在具体实施时,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围由所附的权利要求指出。
Claims (18)
1.一种输入/输出I/O请求调度方法,其特征在于,包括:
获取多个待调度I/O请求及对应的数据量;
获取多个参考缓存节点的可用缓存容量;
基于最小化调度成本的动态规划,生成所述数据量和所述可用缓存容量对应的目标调度策略;
根据所述目标调度策略,向所述多个参考缓存节点中调度所述多个待调度I/O请求。
2.根据权利要求1所述的方法,其特征在于,所述获取多个待调度I/O请求及对应的数据量,包括:
获取第一应用程序的作业信息,所述第一应用程序是向调度设备完成注册的应用程序,所述作业信息包括所述第一应用程序的第一I/O请求及对应的数据量;
确定所述第一应用程序中作业阶段为I/O阶段的第二应用程序;
确定所述第一I/O请求中使所述第二应用程序处于I/O阶段的第二I/O请求;
根据所述第二I/O请求和所述作业信息,确定多个待调度I/O请求及对应的数据量。
3.根据权利要求1所述的方法,其特征在于,所述获取多个参考缓存节点的可用缓存容量,包括:
获取多个待选取缓存节点对应的可用缓存容量,所述多个待选取缓存节点是用于接收I/O请求的缓冲区设备中包括的缓存节点;
确定所述多个待选取缓存节点中可用缓存容量大于容量阈值的缓存节点为参考缓存节点。
4.根据权利要求1所述的方法,其特征在于,所述获取多个参考缓存节点的可用缓存容量,包括:
接收缓冲区设备发送的指示消息,所述指示消息包括所述多个参考缓存节点对应的可用缓存容量,所述多个参考缓存节点对应的可用缓存容量均大于容量阈值;
根据所述指示消息,确定所述参考缓存节点的可用缓存容量。
5.根据权利要求1所述的方法,其特征在于,所述基于最小化调度成本的动态规划,生成所述数据量和所述可用缓存容量对应的目标调度策略,包括:
确定所述数据量和所述可用缓存容量,在一种或多种最小化调度成本的动态规划方式下对应的一个或多个中间调度成本;
确定所述一个或多个中间调度成本中的最小调度成本;
确定所述最小调度成本对应的调度策略为所述目标调度策略。
6.根据权利要求5所述的方法,其特征在于,所述多个待调度I/O请求的数量为n,所述多个参考缓存节点的数量为m,n和m均为大于或等于2的整数;所述一种或多种最小化调度成本的动态规划方式包括以下动态规划方式中的一种或多种:
Cij+OPT(n-i,m-j)
OPT(n-i,m)
OPT(n,m-j)
OPT(n-i,m-j)
其中,Cij是向第j个参考缓存节点中调度第i个待调度I/O请求的调度成本;OPT(n-i,m-j)是基于动态规划,向m个参考缓存节点中除第j个参考缓存节点外的其他缓存节点,调度n个待调度I/O请求中除第i个待调度I/O请求外的其他待调度I/O请求的最小调度成本;
OPT(n-i,m)是基于动态规划,向m个参考缓存节点,调度n个待调度I/O请求中除第i个待调度I/O请求外的其他待调度I/O请求的最小调度成本;
OPT(n,m-j)是基于动态规划,向m个参考缓存节点中除第j个参考缓存节点外的其他参考缓存节点,调度n个待调度I/O请求的最小调度成本。
7.根据权利要求6所述的方法,其特征在于,所述目标调度策略对应的目的为最大化应用程序在缓冲区设备中获得的带宽的情况下,所述Cij根据所述多个待调度I/O请求的数量及对应的数据量和完成时长确定;
所述完成时长是所述多个参考缓存节点完成对应的待调度I/O请求使用的时长。
9.根据权利要求6所述的方法,其特征在于,所述目标调度策略对应的目的为最大化应用程序公平性的情况下,所述Cij根据第一完成时间与第二完成时间确定;
所述第一完成时间是所述多个参考缓存节点为第一个第三应用程序完成服务的时间;所述第二完成时间是所述多个参考缓存节点为最后一个第三应用程序完成服务的时间;
其中,第一个第三应用程序为多个第三应用程序中,第一个向调度设备注册的第三应用程序;最后一个第三应用程序为所述多个第三应用程序中,最后一个向调度设备注册的第三应用程序。
10.根据权利要求6所述的方法,其特征在于,所述目标调度策略对应的目的为最小化应用程序延迟时长的情况下,所述Cij根据所述多个待调度I/O请求中,每一待调度I/O请求对应的等待调度时长和额外花费时长确定;
所述等待调度时长是所述多个参考缓存节点为相应的待调度I/O请求服务的时间点,与为所述多个待调度I/O请求中的第一个待调度I/O请求服务的时间点之间的差值;
所述额外花费时长是所述多个参考缓存节点为相应的待调度I/O请求服务的时长,与无干扰情况下所述多个参考缓存节点为相应的待调度I/O请求服务的时长之间的差值。
11.根据权利要求1-10任一所述的方法,其特征在于,还包括:
获取待检测缓存节点的并发容忍度,所述并发容忍度表示所述待检测缓存节点的并发能力;
获取所述待检测缓存节点中并发访问的应用程序的并发数量;
获取所述待检测缓存节点的可实现最大带宽及实际带宽;
根据所述并发容忍度、所述并发数量、所述可实现最大带宽及实际带宽,确定所述待检测缓存节点对并发访问的敏感度。
12.根据权利要求11所述的方法,其特征在于,所述并发容忍度包括所述待检测缓存节点对应的总线通道、控制器通道、存储体数量中的一个或多个。
14.根据权利要求1-10任一所述的方法,其特征在于,还包括:
获取待检测应用程序对应的作业在有干扰情况下的第一执行时长,所述有干扰表示缓冲区设备中存在并行执行的其他应用程序;
获取所述作业在无干扰情况下的第二执行时长,所述无干扰表示缓冲区设备中不存在并行执行的其他应用程序;
根据所述第一执行时长和所述第二执行时长,确定干扰值。
16.一种输入/输出I/O请求调度装置,其特征在于,包括:
获取模块,用于获取多个待调度I/O请求及对应的数据量;
获取模块,还用于获取多个参考缓存节点的可用缓存容量;
生成模块,用于基于最小化调度成本的动态规划,生成所述数据量和所述可用缓存容量对应的目标调度策略;
调度设备,用于根据所述目标调度策略,向所述多个参考缓存节点中调度所述多个待调度I/O请求。
17.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1~15中任意一项所述的输入/输出I/O请求调度方法。
18.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1~15中任意一项所述的输入/输出I/O请求调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211223430.0A CN115437794A (zh) | 2022-10-08 | 2022-10-08 | I/o请求调度方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211223430.0A CN115437794A (zh) | 2022-10-08 | 2022-10-08 | I/o请求调度方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115437794A true CN115437794A (zh) | 2022-12-06 |
Family
ID=84252042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211223430.0A Pending CN115437794A (zh) | 2022-10-08 | 2022-10-08 | I/o请求调度方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115437794A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453378A (zh) * | 2023-12-25 | 2024-01-26 | 北京卡普拉科技有限公司 | 多应用程序间i/o请求调度方法、装置、设备及介质 |
-
2022
- 2022-10-08 CN CN202211223430.0A patent/CN115437794A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453378A (zh) * | 2023-12-25 | 2024-01-26 | 北京卡普拉科技有限公司 | 多应用程序间i/o请求调度方法、装置、设备及介质 |
CN117453378B (zh) * | 2023-12-25 | 2024-03-19 | 北京卡普拉科技有限公司 | 多应用程序间i/o请求调度方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8701108B2 (en) | Apparatus and method for controlling live-migrations of a plurality of virtual machines | |
US11188392B2 (en) | Scheduling system for computational work on heterogeneous hardware | |
Zhu et al. | A performance interference model for managing consolidated workloads in QoS-aware clouds | |
US9575810B2 (en) | Load balancing using improved component capacity estimation | |
WO2018194836A1 (en) | Systems and methods for proactively and reactively allocating resources in cloud-based networks | |
EP2894827B1 (en) | Method, apparatus, and system for managing migration of virtual machine | |
EP1750200A2 (en) | System and method for executing job step, and computer product | |
CN102541460B (zh) | 一种多磁盘场景下的磁盘管理方法和设备 | |
JP4557178B2 (ja) | 仮想マシン管理システム、その方法及びそのプログラム | |
US11150951B2 (en) | Releasable resource based preemptive scheduling | |
US10191779B2 (en) | Application execution controller and application execution method | |
CN110196770B (zh) | 云***内存数据处理方法、装置、设备及存储介质 | |
CN102541657A (zh) | 用于对硬件加速器进行运行时功能分配的方法和设备 | |
US10419305B2 (en) | Visualization of workload distribution on server resources | |
CN112181664B (zh) | 负载均衡方法及装置、计算机可读存储介质及电子设备 | |
CN111338785A (zh) | 资源调度方法及装置、电子设备、存储介质 | |
CN115269108A (zh) | 一种数据处理方法、装置及设备 | |
CN115437794A (zh) | I/o请求调度方法、装置、电子设备及存储介质 | |
CN115766875A (zh) | 边缘算力资源调度方法、装置、***、电子设备及介质 | |
Li et al. | PageRankVM: A pagerank based algorithm with anti-collocation constraints for virtual machine placement in cloud datacenters | |
WO2020233364A1 (zh) | 资源处理平台的确认方法、装置、电子设备和介质 | |
US9769022B2 (en) | Timeout value adaptation | |
CN112799851B (zh) | 多方安全计算中的数据处理方法和相关装置 | |
CN109343958B (zh) | 计算资源分配方法、装置、电子设备、存储介质 | |
CN113285890B (zh) | 网关流量的分配方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |