云主机整机限速方法、装置、存储介质以及电子设备
文献发布时间:2023-06-19 18:27:32
技术领域
本发明涉及计算机领域,具体而言,涉及一种云主机整机限速方法、装置、存储介质以及电子设备。
背景技术
在现有技术中,用户购买云主机后,会将多块云盘挂载到云主机中,由于云主机的规格套餐限制,决定了云主机整机层面是有能力上限的,需要保证云主机内所有云盘的iops(Input/Output Operations Per Second是一个用于计算机存储设备,如硬盘(HDD)、固态硬盘(SSD)或存储区域网络(SAN)性能测试的量测方式,可以视为是每秒的读写次数)和吞吐不超过这一规格限制。在只有单块云盘限速功能的背景下,是无法达到这一目标的,例如云主机的限速是10w iops,400MB/S吞吐,内部挂载了3块云盘,每块云盘的限速也是10w iops,400MB/S吞吐,那么在3块云盘同时跑IO(输入/输出Input/Output)时,是会超过云主机的规格限制的,因此需要限制云主机内所有云盘的iops和吞吐之和不超过设定值,同时云主机限速兼容已有的单云盘限速功能,即在满足云主机限速的前提下,云盘不能超过单盘的限速指标。
发明内容
本发明实施例提供了一种云主机整机限速方法、装置、存储介质以及电子设备,以至少解决不支持云主机限速的技术问题。
根据本发明实施例的一个方面,提供了一种云主机整机限速方法,包括:获取云主机的第一限速资源,上述云主机内多个云盘中每一个云盘的第二限速资源和每一个上述云盘的根据配额比例分配的第三限速资源;遍历请求队列中的每一个读写请求;对于遍历到的目标读写请求,根据上述第一限速资源、上述第二限速资源以及上述第三限速资源确定将上述目标读写请求下发给存储集群,或者继续在上述请求队列中等待。
根据本发明实施例的另一方面,提供了一种云主机整机限速装置,包括:获取模块,用于获取云主机的第一限速资源,上述云主机内多个云盘中每一个云盘的第二限速资源和每一个上述云盘的根据配额比例分配的第三限速资源;处理模块,用于遍历请求队列中的每一个读写请求;第一确定模块,用于对于遍历到的目标读写请求,根据上述第一限速资源、上述第二限速资源以及上述第三限速资源确定将上述目标读写请求下发给存储集群,或者继续在上述请求队列中等待。
作为一种可选的示例,上述第一确定模块包括:第一确定单元,用于在上述目标读写请求的消耗资源小于上述第一限速资源的剩余资源,且上述消耗资源小于上述第二限速资源的剩余资源情况下,确定将上述目标读写请求下发给上述存储集群;第二确定单元,用于在上述目标读写请求的消耗资源小于上述第一限速资源的剩余资源,且上述消耗资源大于或等于上述第二限速资源的剩余资源情况下,确定将上述目标读写请求继续在上述请求队列中等待。
作为一种可选的示例,上述第一确定模块包括:第三确定单元,用于在上述目标读写请求的消耗资源大于或等于上述第一限速资源的剩余资源,且上述消耗资源小于上述第二限速资源的剩余资源与上述第三限速资源的剩余资源中的较小值的情况下,确定将上述目标读写请求下发给上述存储集群;第四确定单元,用于在上述目标读写请求的消耗资源大于或等于上述第一限速资源的剩余资源,且上述消耗资源大于或等于上述第二限速资源的剩余资源与上述第三限速资源的剩余资源中的较小值的情况下,确定将上述目标读写请求继续在上述请求队列中等待。
作为一种可选的示例,上述消耗资源包括消耗读写次数和消耗流量值,限速资源包括限速读写次数和限速流量值;上述装置还包括:第二确定模块,用于在上述消耗读写次数小于第一限速资源的剩余限速读写次数,且上述消耗流量值小于第一限速资源的剩余限速流量值的情况下,确定上述目标读写请求的消耗资源小于上述第一限速资源的剩余资源;第三确定模块,用于在上述消耗读写次数小于第二限速资源的剩余限速读写次数,且上述消耗流量值小于第二限速资源的剩余限速流量值的情况下,确定上述目标读写请求的消耗资源小于上述第二限速资源的剩余资源;第四确定模块,用于在上述消耗读写次数小于第三限速资源的剩余限速读写次数,且上述消耗流量值小于第三限速资源的剩余限速流量值的情况下,确定上述目标读写请求的消耗资源小于上述第三限速资源的剩余资源;第五确定模块,用于在上述消耗读写次数大于或等于第一限速资源的剩余限速读写次数,或上述消耗流量值大于或等于第一限速资源的剩余限速流量值的情况下,确定上述目标读写请求的消耗资源大于或等于上述第一限速资源的剩余资源;第六确定模块,用于在上述消耗读写次数大于或等于第二限速资源的剩余限速读写次数,或上述消耗流量值大于或等于第二限速资源的剩余限速流量值的情况下,确定上述目标读写请求的消耗资源大于或等于上述第二限速资源的剩余资源;第七确定模块,用于在上述消耗读写次数大于或等于第三限速资源的剩余限速读写次数,或上述消耗流量值大于或等于第三限速资源的剩余限速流量值的情况下,确定上述目标读写请求的消耗资源大于或等于上述第三限速资源的剩余资源。
作为一种可选的示例,上述获取模块包括:划分单元,用于将每一个时间单位按照基础时间单位划分为多个时间片;第五确定单元,用于确定每一个时间片的原始限速资源;设置单元,用于设定定时器;第六确定单元,用于根据上述定时器和上述原始限速资源,确定上述第一限速资源、上述第二限速资源与上述第三限速资源。
作为一种可选的示例,上述第五确定单元包括:第一确定子单元,用于将上述云主机的整机限速资源与上述时间片的数量的比值确定为每个时间片的第一原始限速资源;第二确定子单元,用于将上述云主机上的云盘的云盘限速资源与上述时间片的数量的比值确定为每个时间片的第二原始限速资源;第一处理子单元,用于将上述第一限速资源与上述云盘的配额比例的乘积作为每个时间片的第三原始限速资源。
作为一种可选的示例,上述第六确定单元包括:第三确定子单元,用于确定上述定时器当前次运行所在的第一时间片的第一数量;第四确定子单元,用于确定上述定时器在上述当前次运行之前运行的距离上述第一时间片最近的第二时间片的第二数量;第二处理子单元,用于将上述第一数量与上述第二数量的差值作为目标数量;第三处理子单元,用于将上述第一原始限速资源与上述目标数量的乘积作为上述第一限速资源,将上述第二原始限速资源与上述目标数量的乘积作为上述第二限速资源,将上述第三原始限速资源与上述目标数量的乘积作为上述第三限速资源。
作为一种可选的示例,上述装置还包括:设置模块,用于为上述云主机上的每一个云盘设置分配值;设置模块还用于将每一个云盘作为当前云盘,对上述当前云盘执行如下操作:将上述当前云盘的分配值与所有云盘的分配值之和的比值作为上述当前云盘的上述配额比例;在上述当前云盘的读写请求数量小于第一阈值或者上述当前云盘的吞吐资源值小于第二阈值的情况下,将上述当前云盘的配额比例设置为第一固定值。
根据本发明实施例的又一方面,还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被处理器运行时执行上述云主机整机限速方法。
根据本发明实施例的又一方面,还提供了一种电子设备,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为通过所述计算机程序执行上述的云主机整机限速方法。
在本发明实施例中,采用了获取云主机的第一限速资源,上述云主机内多个云盘中每一个云盘的第二限速资源和每一个上述云盘的根据配额比例分配的第三限速资源;遍历请求队列中的每一个读写请求;对于遍历到的目标读写请求,根据上述第一限速资源、上述第二限速资源以及上述第三限速资源确定将上述目标读写请求下发给存储集群,或者继续在上述请求队列中等待的方法,由于在上述方法中,通过设置云主机的第一限速资源,每个云盘的第二限速资源以及每个云盘根据配额比例分配的第三限速资源,从而实现了限制云主机内所有云盘的吞吐之和不超过第一限速资源,同时满足云盘不能超过单盘的第二限速资源的目的,进而解决了不支持云主机限速的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的云主机整机限速方法的流程图;
图2是根据本发明实施例的一种可选的云主机整机限速装置的结构示意图;
图3是根据本发明实施例的一种可选的电子设备的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例的第一方面,提供了一种云主机整机限速方法,可选地,如图1所示,上述方法包括:
S102,获取云主机的第一限速资源,云主机内多个云盘中每一个云盘的第二限速资源和每一个云盘的根据配额比例分配的第三限速资源;
S104,遍历请求队列中的每一个读写请求;
S106,对于遍历到的目标读写请求,根据第一限速资源、第二限速资源以及第三限速资源确定将目标读写请求下发给存储集群,或者继续在请求队列中等待。
可选地,本实施例中,云主机是一种类似虚拟专用服务器主机的虚拟化技术,在一台主机上虚拟出多个类似独立主机的部分,能够实现单机多用户,每个部分都可以做单独的操作系统。云盘是一种专业的互联网存储工具,可以通过互联网为企业和个人提供信息的储存,读取,下载等服务。集群存储是将多台存储设备中的存储空间聚合成一个能够给应用服务器提供统一访问接口和管理界面的存储池。第一限速资源为云主机的整机限速资源,第二限速资源为每个云盘得的单盘限速资源,第三限速资源为根据每一个云盘的配额比例计算出来的单盘限速资源。
可选地,本实施例中,在bdev(块设备)层为云主机创建一个逻辑上一一对应的限速组,并设置这个限速组的限速,即云主机的整机限速资源第一限速资源,对应云主机的处理能力的上限。每次往云主机上挂载云盘时,就将云盘添加到这个限速组,并同时指定云主机单盘限速第二限速资源,以及该云盘在云主机的整个限速中的配额比例,根据每个云盘的配额比例计算得到第三限速资源。配额比例表示单块云盘能够占用的云主机限速的份额,每个云盘的配额比例可以相同也可以不相同,根据每个云盘的处理能力或容量计算而得,例如有三块云盘,每块云盘的配额比例都是1,整机限速第一限速资源为30w iops,300MB带宽,那么每块云盘的第三限速资源就是第一限速资源的三分之一,即10w iops,100MB带宽。但是如果云盘一的吞吐和流量很小,或者基本没有流量,因此将云盘一的配额比例分享给另外两块云盘,即另外两块云盘的第三限速资源都是第一限速资源的二分之一,云盘一的第三限速资源分配成最低满足要求的资源,这里最低满足要求的资源可以为10iops,1MB/s。当第一限速资源比较宽裕时,云主机整体流量较小,所有云盘的输入输出加起来还没有达到整机能力上限,这个时候为了获得更好的体验,需要将单盘的能力尽量放大,此时单盘限速将按照第二限速资源的规格来进行,在第三限速资源小于第二限速资源的情况下,单盘能够获得更多资源。在第一限速资源比较紧张时,云主机整体流量较大,这个时候需要采取更为严格的策略来控制所有云盘的限速,此时单盘限速将按照第二限速资源和第三限速资源的较小值来控制,从而保证所有云盘的流量不会超过第一限速资源。
在bdev(块设备)层收到读写请求后,将读写请求放入请求队列中,然后遍历请求队列中的每一个读写请求,对于遍历到的目标读写请求,根据第一限速资源、第二限速资源以及第三限速资源确定是否将目标读写请求下发到存储集群,不能下发的目标读写请求将继续在请求队列中等待,直到满足下发条件时下发到存储集群。
可选地,本实施例中,通过设置云主机的第一限速资源,每个云盘的第二限速资源以及每个云盘根据配额比例分配的第三限速资源,从而实现了限制云主机内所有云盘的吞吐之和不超过第一限速资源,同时满足云盘不能超过单盘的第二限速资源和第三限速资源的目的,进而解决了不支持云主机限速的技术问题。
作为一种可选的示例,对于遍历到的目标读写请求,根据第一限速资源、第二限速资源以及第三限速资源确定将目标读写请求下发给存储集群,或者继续在请求队列中等待包括:
在目标读写请求的消耗资源小于第一限速资源的剩余资源,且消耗资源小于第二限速资源的剩余资源情况下,确定将目标读写请求下发给存储集群;
在目标读写请求的消耗资源小于第一限速资源的剩余资源,且消耗资源大于或等于第二限速资源的剩余资源情况下,确定将目标读写请求继续在请求队列中等待。
可选地,本实施例中,遍历到目标读写需求后,获取目标读写需求的消耗资源,即目标读写需求的大小,获取此时第一限速资源的剩余资源和第二限速资源的剩余资源,当目标读写需求的消耗资源小于第一限速资源的剩余资源时,同时小于第二限速资源的剩余资源,说明云主机的整机限速资源充裕,单个云盘的限速资源也充裕,可以将目标读写需求下发到存储集群。当目标读写需求的消耗资源小于第一限速资源的剩余资源时,同时大于或等于第二限速资源的剩余资源,说明云主机的整机限速资源充裕,但是单个云盘的限速资源不充裕,将目标读写请求继续在请求队列中等待,直到云主机和单个云盘的限速资源同时充裕时可以下发到存储集群。
作为一种可选的示例,对于遍历到的目标读写请求,根据第一限速资源、第二限速资源以及第三限速资源确定将目标读写请求下发给存储集群,或者继续在请求队列中等待包括:
在目标读写请求的消耗资源大于或等于第一限速资源的剩余资源,且消耗资源小于第二限速资源的剩余资源与第三限速资源的剩余资源中的较小值的情况下,确定将目标读写请求下发给存储集群;
在目标读写请求的消耗资源大于或等于第一限速资源的剩余资源,且消耗资源大于或等于第二限速资源的剩余资源与第三限速资源的剩余资源中的较小值的情况下,确定将目标读写请求继续在请求队列中等待。
可选地,本实施例中,比较第二限速资源的剩余资源与第三限速资源的剩余资源,得到较小值,当目标读写需求的消耗资源大于或等于第一限速资源的剩余资源时,同时小于较小值,说明云主机的整机限速资源不充裕,但单个云盘的限速资源充裕,可以将目标读写需求下发到存储集群。当目标读写需求的消耗资源大于或等于第一限速资源的剩余资源时,同时大于或等于较小值,说明云主机的整机限速资源不充裕,单个云盘的限速资源也不充裕,将目标读写请求继续在请求队列中等待,直到云主机和单个云盘的限速资源同时充裕时可以下发到存储集群。
作为一种可选的示例,消耗资源包括消耗读写次数和消耗流量值,限速资源包括限速读写次数和限速流量值;上述方法还包括:
在消耗读写次数小于第一限速资源的剩余限速读写次数,且消耗流量值小于第一限速资源的剩余限速流量值的情况下,确定目标读写请求的消耗资源小于第一限速资源的剩余资源;
在消耗读写次数小于第二限速资源的剩余限速读写次数,且消耗流量值小于第二限速资源的剩余限速流量值的情况下,确定目标读写请求的消耗资源小于第二限速资源的剩余资源;
在消耗读写次数小于第三限速资源的剩余限速读写次数,且消耗流量值小于第三限速资源的剩余限速流量值的情况下,确定目标读写请求的消耗资源小于第三限速资源的剩余资源;
在消耗读写次数大于或等于第一限速资源的剩余限速读写次数,或消耗流量值大于或等于第一限速资源的剩余限速流量值的情况下,确定目标读写请求的消耗资源大于或等于第一限速资源的剩余资源;
在消耗读写次数大于或等于第二限速资源的剩余限速读写次数,或消耗流量值大于或等于第二限速资源的剩余限速流量值的情况下,确定目标读写请求的消耗资源大于或等于第二限速资源的剩余资源;
在消耗读写次数大于或等于第三限速资源的剩余限速读写次数,或消耗流量值大于或等于第三限速资源的剩余限速流量值的情况下,确定目标读写请求的消耗资源大于或等于第三限速资源的剩余资源。
可选地,本实施例中,目标读写请求的消耗资源包括消耗读写次数和消耗流量值,云主机和云盘的限速资源包括限速读写次数和限速流量值,当目标读写请求的消耗读写次数小于限速资源的剩余限速读写次数,且消耗流量值小于限速资源的剩余限速流量值的情况下,确定目标读写请求的消耗资源小于限速资源的剩余资源。当目标读写请求的消耗读写次数大于或等于限速资源的剩余限速读写次数,或消耗流量值大于或等于限速资源的剩余限速流量值的情况下,确定目标读写请求的消耗资源大于或等于限速资源的剩余资源。当目标读写请求的消耗读写次数小于限速资源的剩余限速读写次数,且消耗流量值大于或等于限速资源的剩余限速流量值的情况下,确定目标读写请求的消耗资源大于或等于限速资源的剩余资源。当目标读写请求的消耗读写次数大于或等于限速资源的剩余限速读写次数,且消耗流量值小于限速资源的剩余限速流量值的情况下,确定目标读写请求的消耗资源大于或等于限速资源的剩余资源。限速资源的剩余资源可以为第一限速资源的剩余资源,第二限速资源的剩余资源,第三限速资源的剩余资源。
作为一种可选的示例,获取云主机的第一限速资源,云主机内多个云盘中每一个云盘的第二限速资源和每一个云盘的根据配额比例分配的第三限速资源包括:
将每一个时间单位按照基础时间单位划分为多个时间片;
确定每一个时间片的原始限速资源;
设定定时器;
根据定时器和原始限速资源,确定第一限速资源、第二限速资源与第三限速资源。
可选地,本实施例中,时间单位可以为10ms,例如划分为100份时间片,每个时间片为0.1ms,确定每一个时间片的原始限速资源,可以设置一个1ms运行一次的定时器,根据原始限速资源可以计算得到每个时间片内的读写次数和流量值,即第一限速资源、第二限速资源与第三限速资源,需要保证每个时间片内的读写次数和流量值不超过第一限速资源、第二限速资源与第三限速资源。
作为一种可选的示例,确定每一个时间片的原始限速资源包括:
将云主机的整机限速资源与时间片的数量的比值确定为每个时间片的第一原始限速资源;
将云主机上的云盘的云盘限速资源与时间片的数量的比值确定为每个时间片的第二原始限速资源;
将第一限速资源与云盘的配额比例的乘积作为每个时间片的第三原始限速资源。
可选地,本实施例中,获取云主机的整机限速资源,云盘的云盘限速资源,每个云盘的配额比例,根据时间片的数量,计算每个时间片的第一原始限速资源,第二原始限速资源和第三原始限速资源。例如云主机的整机限速资源为30w iops,300MB带宽,云盘的云盘限速资源为20w iops,200MB带宽,时间片的数量为100,将云主机的整机限速资源30wiops,300MB带宽与时间片的数量100的比值0.3w iops,3MB带宽确定为第一原始限速资源。以此类推得到第二原始限速资源,将第一限速资源与云盘的配额比例的乘积确定为第三原始限速资源。
作为一种可选的示例,根据定时器和原始限速资源,确定第一限速资源、第二限速资源与第三限速资源包括:
确定定时器当前次运行所在的第一时间片的第一数量;
确定定时器在当前次运行之前运行的距离第一时间片最近的第二时间片的第二数量;
将第一数量与第二数量的差值作为目标数量;
将第一原始限速资源与目标数量的乘积作为第一限速资源,将第二原始限速资源与目标数量的乘积作为第二限速资源,将第三原始限速资源与目标数量的乘积作为第三限速资源。
可选地,本实施例中,定时器在运行过程中,根据时间差更新第一限速资源、第二限速资源与第三限速资源,时间差为定时器当前次运行所在的第一时间片的第一数量与定时器在当前次运行之前运行的距离第一时间片最近的第二时间片的第二数量的差值,将时间差即时间片的目标数量与第一原始限速资源相乘得到第一限速资源,以此类推,得到第二限速资源与第三限速资源。
作为一种可选的示例,上述方法还包括:
为云主机上的每一个云盘设置分配值;
将每一个云盘作为当前云盘,对当前云盘执行如下操作:
将当前云盘的分配值与所有云盘的分配值之和的比值作为当前云盘的配额比例;
在当前云盘的读写请求数量小于第一阈值或者当前云盘的吞吐资源值小于第二阈值的情况下,将当前云盘的配额比例设置为第一固定值。
可选地,本实施例中,为云主机上的每一个云盘设置分配值例如云盘一为20,云盘二为50,云盘三为30,对云盘一进行操作,将云盘一的分配值20与所有云盘的分配值之和100的比值作为云盘一的配额比例0.2,以此类推,得到云盘二的配额比例0.5,云盘三的配额比例0.3。当云盘一的读写请求数量小于第一阈值,或吞吐资源值小于第二阈值时,即云盘一的读写请求数量和吞吐资源值很小,或者基本没有,将云盘一的配额比例设置为第一固定值,以使第二限速资源为最低满足要求的资源值。
结合一种示例进行说明,本申请涉及一种云主机整机限速方法,在块设备层为每个云主机实例创建一个逻辑上一一对应的限速组,并设置这个限速组的限速,对应云主机的能力上限。每次往云主机上挂载云盘时,就将云盘添加到这个限速组,并同时指定云主机单盘限速,及该云盘在云主机的整个限速中的配额比例。如果挂载了多块云盘,每块都设置了配额比例,那么根据某块云盘的配额比例及所有云盘的配额比例之和计算出来的这个比例,表示单块云盘能够占用的云主机限速份额,例如三块云盘,每块云盘的配额比例都是1,整机限速为30w iops,300MB带宽,那么每块云盘的在云主机维度的限速就是整机限速的三分之一,即10w iops,100MB带宽。在生产环境下,不同的云盘,配额比例值是不一样的,可以理解成对应不同能力的云盘,比如容量较小的低级别云盘,其配额比例比例设定需要小于容量较大的高级别云盘。
计算得到的每块盘可以下发的读写请求个数和带宽统称为资源。限速资源分为两类,一类是单盘限速资源,包括已有的单盘限速资源(以下简称第二限速资源)和在限速组维度根据配额比例计算出来的限速资源(以下简称第三限速资源),一类是引入限速组后云主机的整机限速资源(以下简称第一限速资源)。方案需要保证任意时刻,云盘的实际读写请求不超过第二限速资源,云主机的所有云盘读写请求不超过第一限速资源。
将1秒的时间,按照10ms粒度划分成100份时间片,根据限速的吞吐资源值和读写请求数量,可以计算得到每个时间片内的读写请求数量和吞吐资源值,需要保证每个时间片内的读写请求数量和吞吐资源值不超过这个阈值;
创建限速组时,在设备层初始化一个每1ms运行一次的定时器,这个定时器运行时,会根据时间差,刷新限速组的第一限速资源,为限速组内的每个设备刷新第二限速资源和第三限速资源,这个时间差的意思是说,定时器运行时,检查上次刷新资源的时间,如果没超过一个时间片,定时器本轮直接结束,否则,先将第一限速资源,第二限速资源和第三限速资源清零,然后根据超过时间片的数量,将第一限速资源,第二限速资源和第三限速资源赋值成新的值,这个值就是上步计算得到的数据乘以时间片的数量。刷新时遍历限速组内的所有云盘,根据每个设备的配额比例,计算所有云盘的配额比例之和,然后为每块盘计算比例,得到第三限速资源。
在实际运行时,有些云盘读写请求数量小于第一阈值或者云盘的吞吐资源值小于第二阈值的情况下,将云盘的配额比例设置为零,将云盘的第二限速资源设置为第二固定值。
往限速组中添加设备时,在块设备层为该设备初始化一个每1ms运行一次的定时器,这个定时器运行时会遍历因为限速而排队等待的读写请求,检查读写请求是否满足条件下发给底层,如果满足条件则下发给底层,则调用底层接口下发,并刷新相应的资源,如果不满足条件,则定时器本轮遍历直接结束;
块设备层收到一个读写请求后,直接将目标读写请求放入请求队列,然后遍历该队列中的所有读写请求,遍历到每个读写请求时,先判断第一限速资源是否允许下发,即目标读写请求的消耗资源是否小于第一限速资源的剩余资源,这里称为条件1。如果条件1满足,说明云主机整机资源充裕,再判断目标读写请求的消耗资源是否小于第二限速资源的剩余资源,这里称为条件2,如果条件2也满足,则该目标读写请求可以下发给底层,如果条件2不满足,则该目标读写请求不可以下发给底层,继续排队等待。如果条件1不满足,说明虚机内流量较大,则判断第二限速资源的剩余资源和第三限速资源的剩余资源的较小值是否有空余,这里称为条件3,如果条件3满足,则目标读写请求可以下发给底层,如果条件3不满足,则目标读写请求继续排队等待。对于所有满足下发条件的读写请求,下发时,需要刷新第一限速资源,第二限速资源和第三限速资源,即剩余个数减一,剩余带宽减去目标读写请求的大小。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
根据本申请实施例的另一方面,还提供了一种云主机整机限速装置,如图2所示,包括:
获取模块202,用于获取云主机的第一限速资源,云主机内多个云盘中每一个云盘的第二限速资源和每一个云盘的根据配额比例分配的第三限速资源;
处理模块204,用于遍历请求队列中的每一个读写请求;
第一确定模块206,用于对于遍历到的目标读写请求,根据第一限速资源、第二限速资源以及第三限速资源确定将目标读写请求下发给存储集群,或者继续在请求队列中等待。
可选地,本实施例中,云主机是一种类似虚拟专用服务器主机的虚拟化技术,在一台主机上虚拟出多个类似独立主机的部分,能够实现单机多用户,每个部分都可以做单独的操作系统。云盘是一种专业的互联网存储工具,可以通过互联网为企业和个人提供信息的储存,读取,下载等服务。集群存储是将多台存储设备中的存储空间聚合成一个能够给应用服务器提供统一访问接口和管理界面的存储池。第一限速资源为云主机的整机限速资源,第二限速资源为每个云盘得的单盘限速资源,第三限速资源为根据每一个云盘的配额比例计算出来的单盘限速资源。
可选地,本实施例中,在bdev(块设备)层为云主机创建一个逻辑上一一对应的限速组,并设置这个限速组的限速,即云主机的整机限速资源第一限速资源,对应云主机的处理能力的上限。每次往云主机上挂载云盘时,就将云盘添加到这个限速组,并同时指定云主机单盘限速第二限速资源,以及该云盘在云主机的整个限速中的配额比例,根据每个云盘的配额比例计算得到第三限速资源。配额比例表示单块云盘能够占用的云主机限速的份额,每个云盘的配额比例可以相同也可以不相同,根据每个云盘的处理能力或容量计算而得,例如有三块云盘,每块云盘的配额比例都是1,整机限速第一限速资源为30w iops,300MB带宽,那么每块云盘的第三限速资源就是第一限速资源的三分之一,即10w iops,100MB带宽。但是如果云盘一的吞吐和流量很小,或者基本没有流量,因此将云盘一的配额比例分享给另外两块云盘,即另外两块云盘的第三限速资源都是第一限速资源的二分之一,云盘一的第三限速资源分配成最低满足要求的资源,这里最低满足要求的资源可以为10iops,1MB/s。当第一限速资源比较宽裕时,云主机整体流量较小,所有云盘的输入输出加起来还没有达到整机能力上限,这个时候为了获得更好的体验,需要将单盘的能力尽量放大,此时单盘限速将按照第二限速资源的规格来进行,在第三限速资源小于第二限速资源的情况下,单盘能够获得更多资源。在第一限速资源比较紧张时,云主机整体流量较大,这个时候需要采取更为严格的策略来控制所有云盘的限速,此时单盘限速将按照第二限速资源和第三限速资源的较小值来控制,从而保证所有云盘的流量不会超过第一限速资源。
在bdev(块设备)层收到读写请求后,将读写请求放入请求队列中,然后遍历请求队列中的每一个读写请求,对于遍历到的目标读写请求,根据第一限速资源、第二限速资源以及第三限速资源确定是否将目标读写请求下发到存储集群,不能下发的目标读写请求将继续在请求队列中等待,直到满足下发条件时下发到存储集群。
可选地,本实施例中,通过设置云主机的第一限速资源,每个云盘的第二限速资源以及每个云盘根据配额比例分配的第三限速资源,从而实现了限制云主机内所有云盘的吞吐之和不超过第一限速资源,同时满足云盘不能超过单盘的第二限速资源和第三限速资源的目的,进而解决了不支持云主机限速的技术问题。
作为一种可选的示例,第一确定模块包括:
第一确定单元,用于在目标读写请求的消耗资源小于第一限速资源的剩余资源,且消耗资源小于第二限速资源的剩余资源情况下,确定将目标读写请求下发给存储集群;
第二确定单元,用于在目标读写请求的消耗资源小于第一限速资源的剩余资源,且消耗资源大于或等于第二限速资源的剩余资源情况下,确定将目标读写请求继续在请求队列中等待。
可选地,本实施例中,遍历到目标读写需求后,获取目标读写需求的消耗资源,即目标读写需求的大小,获取此时第一限速资源的剩余资源和第二限速资源的剩余资源,当目标读写需求的消耗资源小于第一限速资源的剩余资源时,同时小于第二限速资源的剩余资源,说明云主机的整机限速资源充裕,单个云盘的限速资源也充裕,可以将目标读写需求下发到存储集群。当目标读写需求的消耗资源小于第一限速资源的剩余资源时,同时大于或等于第二限速资源的剩余资源,说明云主机的整机限速资源充裕,但是单个云盘的限速资源不充裕,将目标读写请求继续在请求队列中等待,直到云主机和单个云盘的限速资源同时充裕时可以下发到存储集群。
作为一种可选的示例,第一确定模块包括:
第三确定单元,用于在目标读写请求的消耗资源大于或等于第一限速资源的剩余资源,且消耗资源小于第二限速资源的剩余资源与第三限速资源的剩余资源中的较小值的情况下,确定将目标读写请求下发给存储集群;
第四确定单元,用于在目标读写请求的消耗资源大于或等于第一限速资源的剩余资源,且消耗资源大于或等于第二限速资源的剩余资源与第三限速资源的剩余资源中的较小值的情况下,确定将目标读写请求继续在请求队列中等待。
可选地,本实施例中,比较第二限速资源的剩余资源与第三限速资源的剩余资源,得到较小值,当目标读写需求的消耗资源大于或等于第一限速资源的剩余资源时,同时小于较小值,说明云主机的整机限速资源不充裕,但单个云盘的限速资源充裕,可以将目标读写需求下发到存储集群。当目标读写需求的消耗资源大于或等于第一限速资源的剩余资源时,同时大于或等于较小值,说明云主机的整机限速资源不充裕,单个云盘的限速资源也不充裕,将目标读写请求继续在请求队列中等待,直到云主机和单个云盘的限速资源同时充裕时可以下发到存储集群。
作为一种可选的示例,消耗资源包括消耗读写次数和消耗流量值,限速资源包括限速读写次数和限速流量值;上述装置还包括:
第二确定模块,用于在消耗读写次数小于第一限速资源的剩余限速读写次数,且消耗流量值小于第一限速资源的剩余限速流量值的情况下,确定目标读写请求的消耗资源小于第一限速资源的剩余资源;
第三确定模块,用于在消耗读写次数小于第二限速资源的剩余限速读写次数,且消耗流量值小于第二限速资源的剩余限速流量值的情况下,确定目标读写请求的消耗资源小于第三限速资源的剩余资源;
第四确定模块,用于在消耗读写次数小于第三限速资源的剩余限速读写次数,且消耗流量值小于第三限速资源的剩余限速流量值的情况下,确定目标读写请求的消耗资源小于第三限速资源的剩余资源;
第五确定模块,用于在消耗读写次数大于或等于第一限速资源的剩余限速读写次数,或消耗流量值大于或等于第一限速资源的剩余限速流量值的情况下,确定目标读写请求的消耗资源大于或等于第一限速资源的剩余资源;
第六确定模块,用于在消耗读写次数大于或等于第二限速资源的剩余限速读写次数,或消耗流量值大于或等于第二限速资源的剩余限速流量值的情况下,确定目标读写请求的消耗资源大于或等于第三限速资源的剩余资源;
第七确定模块,用于在消耗读写次数大于或等于第三限速资源的剩余限速读写次数,或消耗流量值大于或等于第三限速资源的剩余限速流量值的情况下,确定目标读写请求的消耗资源大于或等于第三限速资源的剩余资源。
可选地,本实施例中,目标读写请求的消耗资源包括消耗读写次数和消耗流量值,云主机和云盘的限速资源包括限速读写次数和限速流量值,当目标读写请求的消耗读写次数小于限速资源的剩余限速读写次数,且消耗流量值小于限速资源的剩余限速流量值的情况下,确定目标读写请求的消耗资源小于限速资源的剩余资源。当目标读写请求的消耗读写次数大于或等于限速资源的剩余限速读写次数,或消耗流量值大于或等于限速资源的剩余限速流量值的情况下,确定目标读写请求的消耗资源大于或等于限速资源的剩余资源。当目标读写请求的消耗读写次数小于限速资源的剩余限速读写次数,且消耗流量值大于或等于限速资源的剩余限速流量值的情况下,确定目标读写请求的消耗资源大于或等于限速资源的剩余资源。当目标读写请求的消耗读写次数大于或等于限速资源的剩余限速读写次数,且消耗流量值小于限速资源的剩余限速流量值的情况下,确定目标读写请求的消耗资源大于或等于限速资源的剩余资源。限速资源的剩余资源可以为第一限速资源的剩余资源,第二限速资源的剩余资源,第三限速资源的剩余资源。
作为一种可选的示例,获取模块包括:
划分单元,用于将每一个时间单位按照基础时间单位划分为多个时间片;
第五确定单元,用于确定每一个时间片的原始限速资源;
设置单元,用于设定定时器;
第六确定单元,用于根据定时器和原始限速资源,确定第一限速资源、第二限速资源与第三限速资源。
可选地,本实施例中,时间单位可以为10ms,例如划分为100份时间片,每个时间片为0.1ms,确定每一个时间片的原始限速资源,可以设置一个1ms运行一次的定时器,根据原始限速资源可以计算得到每个时间片内的读写次数和流量值,即第一限速资源、第二限速资源与第三限速资源,需要保证每个时间片内的读写次数和流量值不超过第一限速资源、第二限速资源与第三限速资源。
作为一种可选的示例,第五确定单元包括:
第一确定子单元,用于将云主机的整机限速资源与时间片的数量的比值确定为每个时间片的第一原始限速资源;
第二确定子单元,用于将云主机上的云盘的云盘限速资源与时间片的数量的比值确定为每个时间片的第二原始限速资源;
第一处理子单元,用于将第一限速资源与云盘的配额比例的乘积作为每个时间片的第三原始限速资源。
可选地,本实施例中,获取云主机的整机限速资源,云盘的云盘限速资源,每个云盘的配额比例,根据时间片的数量,计算每个时间片的第一原始限速资源,第二原始限速资源和第三原始限速资源。例如云主机的整机限速资源为30w iops,300MB带宽,云盘的云盘限速资源为20w iops,200MB带宽,时间片的数量为100,将云主机的整机限速资源30wiops,300MB带宽与时间片的数量100的比值0.3w iops,3MB带宽确定为第一原始限速资源。以此类推得到第二原始限速资源,将第一限速资源与云盘的配额比例的乘积确定为第三原始限速资源。
作为一种可选的示例,第六确定单元包括:
第三确定子单元,用于确定定时器当前次运行所在的第一时间片的第一数量;
第四确定子单元,用于确定定时器在当前次运行之前运行的距离第一时间片最近的第二时间片的第二数量;
第二处理子单元,用于将第一数量与第二数量的差值作为目标数量;
第三处理子单元,用于将第一原始限速资源与目标数量的乘积作为第一限速资源,将第二原始限速资源与目标数量的乘积作为第二限速资源,将第三原始限速资源与目标数量的乘积作为第三限速资源。
可选地,本实施例中,定时器在运行过程中,根据时间差更新第一限速资源、第二限速资源与第三限速资源,时间差为定时器当前次运行所在的第一时间片的第一数量与定时器在当前次运行之前运行的距离第一时间片最近的第二时间片的第二数量的差值,将时间差即时间片的目标数量与第一原始限速资源相乘得到第一限速资源,以此类推,得到第二限速资源与第三限速资源。
作为一种可选的示例,上述装置还包括:
设置模块,用于为云主机上的每一个云盘设置分配值;
设置模块还用于将每一个云盘作为当前云盘,对当前云盘执行如下操作:
将当前云盘的分配值与所有云盘的分配值之和的比值作为当前云盘的配额比例;
在当前云盘的读写请求数量小于第一阈值或者当前云盘的吞吐资源值小于第二阈值的情况下,将当前云盘的配额比例设置为第一固定值。
可选地,本实施例中,为云主机上的每一个云盘设置分配值例如云盘一为20,云盘二为50,云盘三为30,对云盘一进行操作,将云盘一的分配值20与所有云盘的分配值之和100的比值作为云盘一的配额比例0.2,以此类推,得到云盘二的配额比例0.5,云盘三的配额比例0.3。当云盘一的读写请求数量小于第一阈值,或吞吐资源值小于第二阈值时,即云盘一的读写请求数量和吞吐资源值很小,或者基本没有,将云盘一的配额比例设置为第一固定值,以使第二限速资源为最低满足要求的资源值。
本实施例的其他示例请参见上述示例,在此不在赘述。
图3是根据本申请实施例的一种可选的电子设备的结构框图,如图3所示,包括处理器302、通信接口304、存储器306和通信总线308,其中,处理器302、通信接口304和存储器306通过通信总线308完成相互间的通信,其中,
存储器306,用于存储计算机程序;
处理器302,用于执行存储器306上所存放的计算机程序时,实现如下步骤:
获取云主机的第一限速资源,云主机内多个云盘中每一个云盘的第二限速资源和每一个云盘的根据配额比例分配的第三限速资源;
遍历请求队列中的每一个读写请求;
对于遍历到的目标读写请求,根据第一限速资源、第二限速资源以及第三限速资源确定将目标读写请求下发给存储集群,或者继续在请求队列中等待。
可选地,在本实施例中,上述的通信总线可以是PCI(Peripheral ComponentInterconnect,外设部件互连标准)总线、或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括RAM,也可以包括非易失性存储器(non-volatile memory),例如,至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
作为一种示例,上述存储器306中可以但不限于包括上述云主机整机限速装置中的获取模块202、处理模块204以及第一确定模块206。此外,还可以包括但不限于上述请求的处理装置中的其他模块单元,本示例中不再赘述。
上述处理器可以是通用处理器,可以包含但不限于:CPU(Central ProcessingUnit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(DigitalSignal Processing,数字信号处理器)、ASIC(Application Specific IntegratedCircuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图3所示的结构仅为示意,实施上述云主机整机限速方法的设备可以是终端设备,该终端设备可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图3其并不对上述电子设备的结构造成限定。例如,电子设备还可包括比图3中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图3所示的不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、ROM、RAM、磁盘或光盘等。
根据本发明的实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被处理器运行时执行上述云主机整机限速方法中的步骤。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
- 电子设备的显示控制方法、装置、电子设备和存储介质
- 电子设备控制方法及装置、电子设备及存储介质
- 数据存储方法、装置、电子设备及存储介质
- 限速提醒方法、装置及存储介质
- 机器人控制方法、装置、电子设备和计算机可读存储介质
- 一种云主机整机备份还原方法、装置、设备及存储介质
- 一种云主机整机备份还原方法、装置、设备及存储介质