一种基于固态硬盘的VF动态调度方法、装置及介质与流程

未命名 08-26 阅读:110 评论:0

一种基于固态硬盘的vf动态调度方法、装置及介质
技术领域
1.本发明涉及计算机虚拟化技术领域,特别是涉及一种基于固态硬盘的vf动态调度方法、装置及介质。


背景技术:

2.为了提高单盘存储容量的利用以及降低运营成本,单盘支持多个直连的虚拟机成为一种场景的使用模式,同时也对存储技术的发展和服务质量带来挑战。随着存储接口的技术发展和迭代,固体硬盘(solid state drive,ssd)提供了单根i/o虚拟化(single root i/o virtualization,sr-iov)特性,支持单个ssd的物理功能(physical function,pf)盘虚拟化出多个虚拟功能(virtual function,vf)盘。
3.在虚拟机内,vf盘可以看作一个独立的ssd,由于多个虚拟机之间对pf盘资源的使用是竞争关系。当两个以上虚拟机的vf盘在运行业务时,占用的带宽会互相抢占,如当前时刻只有单个vf运行业务,则该vf占用的是总带宽,但是当其他vf也在运行时会抢占当前单个vf的带宽,导致业务的带宽利用出现较大的波动;另外,多个vf运行不同的业务,其中某一个vf盘在切换业务时,如果由随机写业务切换至随机读业务,其随机读业务对应填充的命令还是沿用前一个随机写业务的速度获取命令,导致该vf盘的命令处理延时较长,命令释放延时也随之变长,导致长时间占用资源,从而随机读业务的带宽无法跟上原有的随机读业务的带宽,影响随机读业务。综上,上述两种情况中的多个vf在运行业务时,相互之间的性能存在干扰,导致服务质量得不到保障。
4.因此,如何避免多个运行业务之间干扰以保证服务质量是本领域技术人员亟需要解决的。


技术实现要素:

5.本发明的目的是提供一种基于固态硬盘的vf动态调度方法、装置及介质,保证命令和物理资源保持动态平衡。
6.为解决上述技术问题,本发明提供一种基于固态硬盘的vf动态调度方法,包括:
7.预先获取所述固态硬盘的总带宽、命名空间总容量和vf盘数量,其中,所述vf盘数量和命名空间数量相同,且vf盘与命名空间为一一绑定关系;
8.根据所述总带宽、所述命名空间总容量和所述vf盘数量的组合关系确定硬件资源对应的硬件调度参数,其中,所述硬件参数至少包括命名空间带宽临界值、iops临界值、nvme队列深度的临界值和rab值;
9.获取所述固态硬盘的当前运行业务的命名空间个数和链表内的当前命令,并根据所述当前命令确定对应的调度信用值,其中,所述调度信用值由所述带宽临界值和所述iops临界值确定得到;
10.分别根据所述调度信用值和所述当前运行业务的命名空间个数确定对应的调度策略以完成软件资源对应的调度。
11.优选地,根据所述总带宽、所述命名空间总容量和所述vf盘数量的关系确定所述命名空间带宽临界值,包括:
12.获取所述固态硬盘的当前命名空间的容量值;
13.根据所述总带宽和所述命名空间总容量进行绑定得到每个命名空间的带宽值;
14.根据所述当前命名空间的容量值与所述带宽值的关系确定所述命名空间带宽临界值;
15.对应地,根据所述总带宽、所述命名空间总容量和所述vf盘数量的关系确定所述iops临界值,包括:
16.获取每个io的带宽值;
17.根据所述每个io的带宽值和所述命名空间带宽临界值的关系确定所述iops临界值。
18.优选地,根据所述命名空间总容量和所述vf盘数量的关系确定所述nvme队列深度的临界值,包括:
19.根据所述命名空间总容量和所述vf盘数量的关系确定各vf的容量比值;
20.根据各所述vf的容量比值与预设临界范围的关系确定各所述vf所属的io队列命令个数临界值,其中,所述预设临界范围规定vf容量比值的范围,且与所述io队列命令个数临界值存在映射关系;
21.将所述io队列命令个数临界值作为所述nvme队列深度的临界值。
22.优选地,所述rab值与所述当前命令所处的物理盘状态相关,在所述物理盘状态为fob态时,根据所述总带宽、所述命名空间总容量和所述vf盘数量的关系确定所述rab值,包括:
23.根据所述命名空间总容量和所述vf盘数量的关系确定各vf的容量比值;
24.根据各所述vf的容量比值与临界阈值范围的关系确定各所述vf所属的rab临界值,其中,所述临界阈值范围规定vf容量比值的范围,且与所述rab临界值存在映射关系。
25.优选地,所述rab值与所述当前命令所处的物理盘状态相关,在所述物理盘状态为ss态时,根据所述总带宽、所述命名空间总容量和所述vf盘数量的关系确定所述rab值,包括:
26.获取当前vf运行的目标业务、所述目标业务对应的业务参数和当前rab值,其中,所述业务参数至少包括业务类型和/或当前iops值的一种或多种,所述业务类型由所述当前iops值确定,所述当前iops值小于所述iops临界值,且由当前命名空间带宽值确定,所述iops临界值由所述总带宽、所述命名空间总容量和所述vf盘数量的关系确定;
27.根据所述目标业务对应的业务参数确定所述目标业务的rab值调整策略;
28.根据所述rab值调整策略对所述目标业务的所述当前rab值进行调整得到所述rab值。
29.优选地,在所述目标业务的业务参数为所述业务类型时,根据所述业务类型确定所述目标业务的rab值调整策略,包括:
30.获取所述目标业务的业务类型和各vf下的所述当前rab值,其中,所述业务类型至少包括随机读业务、随机写业务的一种,所述随机读业务由单位时间随机的读命令个数确定;
31.在所述业务类型为所述随机读业务时,在所述当前rab值的基础上增加预设rab值以作为所述目标业务对应的rab值调整策略;
32.在其他业务的所述当前rab值的基础上减少所述预设rab值以作为所述其他业务对应的rab值调整策略。
33.优选地,在所述目标业务的业务参数为所述当前iops值,根据所述业务类型确定所述目标业务的rab值调整策略,包括:
34.获取所述当前iops值;
35.判断所述目标业务的所述当前iops值是否大于预设iops值;
36.若是,则获取所述目标业务对应的所述当前rab值;
37.在所述当前rab值的基础上增加预设rab值以作为所述目标业务对应的rab值调整策略;
38.在其他业务的所述当前rab值的基础上减少所述预设rab值以作为所述其他业务对应的rab值调整策略。
39.优选地,在所述目标业务发生变化时,在所述根据所述rab值调整策略调整所述当前vf的所述当前rab值之后,还包括:
40.将所述调整后的rab值恢复至所述当前rab值。
41.优选地,所述根据所述当前命令确定对应的调度信用值,包括:
42.获取所述当前命令所处的当前物理盘状态,其中,所述当前物理盘状态为fob态或ss态;
43.根据所述当前命令和所述当前物理盘状态确定对应的所述调度信用值,其中,所述调度信用值由所述fob态对应的带宽值或由所述ss态对应的iops值确定。
44.优选地,所述根据所述调度信用值确定对应的调度策略,包括:
45.获取所述当前命令的所述调度信用值和预设时间内的预设调度信用值,其中,所述当前命令存储于单链表内;
46.在所述预设时间内判断所述调度信用值是否不大于所述预设调度信用值;
47.若是,则执行所述当前命令;
48.若否,则根据所述调度信用值与所述预设调度信用值的关系确定所述当前命令的剩余调度信用值;
49.将所述剩余调度信用值对应的当前命令存储至所述单链表完成调度以便于下一个所述预设时间调度执行。
50.优选地,根据所述当前运行业务的命名空间个数确定对应的调度策略,包括:
51.获取所述当前运行业务的命名空间个数;
52.判断所述当前运行业务的命名空间个数是否超出第一阈值;
53.若是,获取所述当前运行业务的数据下刷的当前速率,并在所述当前速率的基础上增加预设速率以加快所述当前运行业务的数据下刷速率以完成所述调度策略。
54.优选地,根据所述当前运行业务的命名空间个数确定对应的调度策略,包括:
55.获取所述当前运行业务的命名空间个数内对应的命令个数;
56.判断所述命令个数是否超出数据量标准值;
57.若所述命令个数超出所述数据量标准值,则判断所述命令个数所在的所述当前运
行业务的命名空间个数是否超出第二阈值;
58.若所述命令个数所在的所述当前运行业务的命名空间个数超出所述第二阈值,则在所述数据量标准值的基础上减少预设个数以降低所述数据量标准以完成所述调度策略,其中,所述数据量标准值与所述命令个数呈反比例关系。
59.为解决上述技术问题,本发明还提供一种基于固态硬盘的vf动态调度装置,包括:
60.第一获取模块,用于预先获取所述固态硬盘的总带宽、命名空间总容量和vf盘数量,其中,所述vf盘数量和命名空间数量相同,且vf盘与命名空间为一一绑定关系;
61.硬件调度模块,用于根据所述总带宽、所述命名空间总容量和所述vf盘数量的组合关系确定硬件资源对应的硬件调度参数,其中,所述硬件参数至少包括命名空间带宽临界值、iops临界值、nvme队列深度的临界值和rab值;
62.第一确定模块,用于获取所述固态硬盘的当前运行业务的命名空间个数和链表内的当前命令,并根据所述当前命令确定对应的调度信用值,其中,所述调度信用值由所述带宽临界值和所述iops临界值确定得到;
63.软件调度模块,用于分别根据所述调度信用值和所述当前运行业务的命名空间个数确定对应的调度策略以完成软件资源对应的调度。
64.为解决上述技术问题,本发明还提供一种基于固态硬盘的vf动态调度装置,包括:
65.存储器,用于存储计算机程序;
66.处理器,用于执行所述计算机程序时实现如上述所述的基于固态硬盘的vf动态调度方法的步骤。
67.为解决上述技术问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的基于固态硬盘的vf动态调度方法的步骤。
68.本发明提供的一种基于固态硬盘的vf动态调度方法,该方法基于硬件资源和软件资源两部分保证命令和物理资源保持动态平衡,在硬件资源方面将总带宽、队列深度、iops、rab和命名空间的总容量进行绑定。在将vf的带宽和iops与容量绑定时,以确保每个vf运行业务时拥有自己的带宽和iops;将vf的队列深度和容量绑定,使得虚拟机下发的命令个数进行了限制,不影响其他虚拟机;根据命名空间总容量确定每个vf的rab,避免业务压力大时及时调整rab导致的带宽或者iops不足,达到运行业务时各vf之间互不影响。在软件方面分别根据调度信用值和ns个数完成调度过程中的ns调度和下刷过程中的下刷快慢,调度信用值由带宽和iops决定,保证带宽资源充裕,使得虚拟机上运行的服务质量得到保障。
69.另外,本发明还提供了一种基于固态硬盘的vf动态调度装置及介质,具有如上述基于固态硬盘的vf动态调度方法相同的有益效果。
附图说明
70.为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
71.图1为本发明实施例提供的一种基于固态硬盘的vf动态调度方法的流程图;
72.图2为本发明实施例提供的一种vf使用场景示意图;
73.图3为本发明实施例提供的一种获取命令模块的结构示意图;
74.图4为本发明实施例提供的一种ns数据调度的流程图;
75.图5为本发明实施例提供的另一种基于固态硬盘的vf动态调度方法的流程图;
76.图6为本发明实施例提供的一种基于固态硬盘的vf动态调度的结构示意图;
77.图7为本发明实施例提供的一种基于固态硬盘的vf动态调度装置的结构图;
78.图8为本发明实施例提供的另一种基于固态硬盘的vf动态调度装置的结构图。
具体实施方式
79.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
80.本发明的核心是提供一种基于固态硬盘的vf动态调度方法、装置及介质,保证命令和物理资源保持动态平衡。
81.为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
82.需要说明的是,当前用于存储数据的存储器主要是机械硬盘和固态硬盘,相比于机械硬盘,ssd能提供更高的读写带宽和更低的读写延时。而且随着存储接口技术的发展与迭代,高速外设组件互连标准(peripheral component interconnection-express,pcie)接口的ssd提供了sr-iov特性,该特性支持将单个ssd的pf盘虚拟化出多个vf磁盘,每个vf拥有独立的pcie通道和主机直连;非易失性存储器快速(non-volatile memory express,nvme)接口协议支持多个带权重的队列和多个命名空间,能够为每个虚拟机提供独立的队列和逻辑命令空间,更好的实现对虚拟机的支持。vf盘的实现直接依赖于sr-iov和多命名空间的特性,这些特性的支持完全取决于ssd控制器的物理实现。在支持sr-iov的宿主机上电的时候只能识别到pf盘,pf盘的作用是支持对vf盘的控制如创建删除命名空间(namespace,ns)和vf,以及绑定vf和ns。一个vf盘的生命周期从创建一个ns和一个vf开始,将vf和ns绑定之后,通过pf给该vf分配可用的最大队列,再将虚拟机绑定到vf盘,最后以销毁虚拟机,删除ns结束。在虚拟机内,用户看到的vf可以看作是一个独立的ssd。由于多个虚拟机之间对pf盘资源的使用是竞争关系,所以当两个以上虚拟机在运行业务的时候,相互之间性能存在干扰,由于ssd的资源是有限的,不同的业务负载对于ssd的资源是不可预测的,那么对于服务而言就存在不可预测性,服务质量得不到保障。本发明提供的基于固态硬盘的vf动态调度方法,预先将vf的带宽和命名空间总容量绑定以获取各自的vf的带宽,每秒读写次(input/output operations per second,iops),又称吞吐量,单位时间内运行的io命令数、推荐仲裁迸发命令(recommended arbitration burst commands,rab)值等保证互不干扰,在软件资源中动态调整执行命令个数和下刷速度。
83.图1为本发明实施例提供的一种基于固态硬盘的vf动态调度方法的流程图,如图1所示,该方法包括:
84.s11:预先获取固态硬盘的总带宽、命名空间总容量和vf盘数量;
85.其中,vf盘数量和ns数量相同,且vf盘与ns为一一绑定关系。
86.具体地,图2为本发明实施例提供的一种vf使用场景示意图,如图2所示,宿主机通过ssd创建ns空间和vf,启动虚拟机的主机绑定到vf上,既可以在虚拟机中看到绑定在各vf上的ns空间,通过对该ns的读写操作或者其他管理命令直通ssd的控制器。
87.图3为本发明实施例提供的一种获取命令模块的结构示意图,如图3所示,该获取命令模块fetcher存在于ssd的控制器内部有一个专门用来命令提交队列(submission queue,sq)获取命令的模块,该模块根据每个vf设置的rab值分别从vf对应的sq获取命令,通常情况下ssd的控制器取出的命令就直接执行,即最后的结果就是存在n个vf,每个nf占用的带宽具体为总带宽/n。对于rab值,建议仲裁的最大值,为nvme控制器获取sq的命令个数,不同的nvme控制器支持的能力不同,有的最大支持4,单次获取16个命令,有的支持3,单次获取8个命令。获取命令模块fetcher遍历所有vf内的io队列,以取出一定个数的命令放在资源池内等待固件去获取执行。在主机端若vf运行的业务压力相同或者相差不大的情况下,每个vf都能得到及时的调整,以此性能质量得到保障。若其中某个vf对应的主机端运行的业务压力突然增大,导致单位时间内送往sq队列填充的命令个数较多,但是当前获取命令模块fetcher还是按照之前的获取命令比例获取,进而导致命令产生堆积,其命令处理延时增大,进而导致带宽达不到增大的业务压力的带块,也就是带宽上不去,影响服务质量。
88.一个nvme ssd系统主要分三个部分,ssd controller、闪存空间、pcie接口。如果把闪存空间划分成若干个独立的逻辑空间,每个空间逻辑块地址(lba)范围是0到n-1(n是逻辑空间大小),这样划分出来的每一个逻辑空间为ns。每个vf,都有自己独享的ns,因此,vf盘数量和ns数量相同,且为一一对应绑定的关系。本发明将ns总容量、总带宽和vf盘数量进行绑定,按照总容量划分,故需要预先获取固态硬盘的总带宽、ns总容量和vf盘数量。
89.s12:根据总带宽、命名空间总容量和vf盘数量的组合关系确定硬件资源对应的硬件调度参数;
90.其中,硬件参数至少包括ns带宽临界值、iops临界值、nvme队列深度的临界值和rab值。
91.根据上述预先获取的三种数据之间的组合关系确定硬件资源对应的硬件调度参数。硬件调度参数主要是基于硬件资源完成的当前配置参数,分配最大的ns带宽临界值、iops临界值、nvme队列深度临界值和rab值。rab值是建议单次下发的最大命令个数,该值与控制器的能力有关,该参数的能力是指示控制器单次从sq队列获取的最大命令个数。
92.需要说明的是,根据三种数据的组合关系确定各硬件调度参数,每个硬件调度参数的确定过程不同,本实施例中的组合关系,是针对不同的硬件调度参数的确定可以使用这三种数据的任意组合方式的两种或者三种数据确定,例如,确定ns带宽临界值需要用到三种数据,确定rab值仅需要用到两种数据的组合。本实施例中将ns带宽、iops和总容量绑定,在用户购买虚拟机前就可以确保整个生命周期的带宽和iops值。将vf的队列深度和容量进行绑定,将每个vf的控制可运行命令个数反馈给虚拟机nvme驱动,这样可使得虚拟机下发的命令个数就得到限制,不会影响其他虚拟机,因为对于pf物理盘而言,单位时间内可处理的命令个数是一定的。对于绑定成何种关系,在此不做限定,可以根据实际业务运行情况设定。
93.对于rab值的确定,使得pf物理盘从每个vf那获取到的命令个数符合带宽和容量
的设定,不会突然某个vf涌入大量命令侵占其他vf的命令空间,导致带宽或者iops不足预期。对于rab值的动态调整策略不做限定,只要不同的运行业务对应的带宽满足要求即可。
94.s13:获取固态硬盘的当前运行业务的命名空间个数和链表内的当前命令,并根据当前命令确定对应的调度信用值;
95.其中,调度信用值由带宽临界值和iops临界值确定得到。
96.在硬件资源的硬件调度参数完成配置后,在软件资源有限但也存在共享,因此,需要及时释放资源。在ns数据调度方面限值下载速度以及在下刷至闪存(nand)过程中也需要限定速度以便于保持动态平衡。在ns数据调度过程中,需要将获取命令模块fetcher收集所有的ns空间内的命令并进行区分,该命令在链表内进行统一的调度,因此获取链表内的当前命令,再对当前命令进行调度。在命令调度过程中,需要获取对应的调度信用值。调度信用值是根据当前ns空间的容量确定,固件(firmware,fw)设置一个基准容量的信用值,其他容量的信用值根据占用基准值的比例来调整信用值。信用值调度,是每个ns在一定时间内拥有不同的信用值,其决定了该ns下的vf带宽和iops值。
97.需要说明的是,物理盘的状态包括fob态和ss态,fob态是物理盘做过一次格式化还未写入数据或者写入的数据是大块顺序的io,ss态是物理盘经过长时间的小io随机写,随机写的iops达到一种稳定状态。fob态主要控制vf盘的带宽,ss态是控制盘的iops。因此,调度信用值是在两种状态(fob态和ss态)中确定。
98.s14:分别根据调度信用值和当前运行业务的命名空间个数确定对应的调度策略以完成软件资源对应的调度。
99.由于软件资源的调度,是分为两部分,一种是ns数据调度,另一种是下刷至nand过程的下刷调整策略,分别根据调度信用值确定ns数据调度的调度策略,根据当前运行业务的ns个数确定下刷nand的调度策略,保证命令和物理资源的动态平衡。对于如何调整,可以限制其ns下的命令个数,或者限制下刷速度等,在此不做限定,根据实际运行情况设定即可。
100.本发明实施例提供的一种基于固态硬盘的vf动态调度方法,该方法基于硬件资源和软件资源两部分保证命令和物理资源保持动态平衡,在硬件资源方面将总带宽、队列深度、iops、rab和命名空间的总容量进行绑定。在将vf的带宽和iops与容量绑定时,以确保每个vf运行业务时拥有自己的带宽和iops;将vf的队列深度和容量绑定,使得虚拟机下发的命令个数进行了限制,不影响其他虚拟机;根据总容量确定每个vf的rab,避免业务压力大时及时调整rab导致的带宽或者iops不足,达到运行业务时各vf之间互不影响。在软件方面分别根据调度信用值和ns个数完成调度过程中的ns调度和下刷过程中的下刷快慢,调度信用值由带宽和iops决定,保证带宽资源充裕,使得虚拟机上运行的服务质量得到保障。
101.在上述实施例的基础上,步骤s12中的根据总带宽、命名空间总容量和vf盘数量的关系确定ns带宽临界值,包括:
102.获取固态硬盘的当前命名空间的容量值;
103.根据总带宽和命名空间总容量进行绑定得到每个命名空间的带宽值;
104.根据当前命名空间的容量值与带宽值的关系确定ns带宽临界值;
105.对应地,根据总带宽、命名空间总容量和vf盘数量的关系确定iops临界值,包括:
106.获取每个io的带宽值;
107.根据每个io的带宽值和ns带宽临界值的关系确定iops临界值。
108.具体地,在确定ns带宽临界值时,将ssd盘的总带宽按照命名空间总容量划分,先获取当前命名空间(ns空间)的容量值,总带宽/命名空间总容量=各命名空间的带宽值。再根据当前ns空间的容量值*各命名空间的带宽值可以得到ns带宽临界值,也就是说,假设ssd盘的总带宽为p,命名空间总容量为c(g),每个g的带宽为p/c,例如一个虚拟主机host1创建了一个a容量的ns空间,则该ns空间的带宽临界值(最大值)为a*p/c,即当前使用ns运行业务前对应的服务业务的带宽确定。
109.对应地,该ns空间下的iops临界值,在得到ns带宽临界值后,每个io的带宽值已知,则根据ns带宽临界值/每个io的带宽值得到iops临界值。
110.在一些实施例中,根据命名空间总容量和vf盘数量的关系确定nvme队列深度的临界值,包括:
111.根据命名空间总容量和vf盘数量的关系确定各vf的容量比值;
112.根据各vf的容量比值与预设临界范围的关系确定各vf所属的io队列命令个数临界值,其中,预设临界范围规定vf容量比值的范围,且与io队列命令个数临界值存在映射关系;
113.将io队列命令个数临界值作为nvme队列深度的临界值。
114.具体地,先根据命名空间总容量和vf盘数量可以确定每个vf下的容量比值,再根据各vf的容量比值与预设临界范围的关系确定各vf所属的io队列命令个数临界值,预设临界范围成阶梯状,在各阶梯中规定了vf容量比值的范围,同时针对不同的阶梯范围内也限定了io队列命令个数的临界值。
115.nvme spec定义有一个寄存器叫controller capabilities,其中定义了一个参数是io队列的最大命令个数(maximum queue entries supported,mqes),这个参数host在枚举nvme设备时会去获取,以此来作为该nvme设备支持的io队列最大命令个数。由上述描述可知,fetcher的资源是有限的,所以不同容量的ns拥有的这个mqes是需要不同的,跟容量成正比,容量大时mqes也大,反之容量小时mqes也小。mqes的设定方式为,假如ssd支持n个vf,那么每个vf平均容量为c/n;首先找到一个满足于平均容量的mqes为m,然后按照当前ns的容量占平均容量的比例x来换算mqes等于m*x。
116.例如:设定当前ns的容量为a,a/命名空间总容量得到的容量比值,若该容量比值处于第一阶梯阈值1/32以下,则需要配置第一阶梯阈值范围(0,1/32)对应的io队列命令个数(mqes)为8,若该容量比值处于第一阶梯阈值和第二阶梯阈值之间,则需要配置第二阶梯阈值范围(1/32,1/16)对应的io队列命令个数(mqes)为16;若该容量比值处于第二阶梯阈值和第三阶梯阈值之间,则需要配置第三阶梯阈值范围(1/16,1/8)对应的io队列命令个数(mqes)为32;依次递推,直至给到最大的mqes为512,每个阶梯阈值范围内对应的io命令个数(mqes)是根据实测值确定,本实施例中的实测基于给定多少值不会使得每个vf下的各运行业务互相干扰。故,将io队列命令个数临界值作为nvme队列深度的临界值。
117.本发明实施例提供的确定ns带宽临界值、iops临界值和nvme队列深度的临界值的过程,将vf的带宽和iops和容量绑定,在用户购买虚拟机前就可确保整个生命周期的带宽和iops。将vf的队列深度和容量绑定,将每个vf的控制可运行命令个数反馈给虚拟机nvme驱动,这样可使得虚拟机下发的命令个数就得到限制,不会影响其他虚拟机,因为对于pf物
理盘而言,单位时间内可处理的命令个数是一定的。
118.在上述实施例的基础上,确定rab值需要根据不同的物理盘状态进行区分调整。作为一种实施例,rab值与当前命令所处的物理盘状态相关,在物理盘状态为fob态时,根据总带宽、命名空间总容量和vf盘数量的关系确定rab值,包括:
119.根据命名空间总容量和vf盘数量的关系确定各vf的容量比值;
120.根据各vf的容量比值与临界阈值范围的关系确定各vf所属的rab临界值,其中,临界阈值范围规定vf容量比值的范围,且与rab临界值存在映射关系。
121.具体地,在物理盘状态为fob态时,对应的rab值的确定过程和上述实施例中的nvme队列深度的临界值确定过程相同,根据命名空间总容量和vf盘数量的关系确定各vf下的容量比值,根据各vf的容量比值与临界阈值范围的关系确定各vf所属的rab临界值。其中,临界阈值范围呈现出阶梯状的阈值范围,其就是规定了不同的阶梯阈值范围内对应的vf容量比值的范围,在每个阶梯阈值范围内限定了需要分配的rab临界值。
122.根据当前vf的容量比值可以确定处于何种的临界阈值范围以得到对应的rab临界值。
123.在一些实施例中,rab值与当前命令所处的物理盘状态相关,在物理盘状态为ss态时,根据总带宽、命名空间总容量和vf盘数量的关系确定rab值,包括:
124.获取当前vf运行的目标业务、目标业务对应的业务参数和当前rab值,其中,业务参数至少包括业务类型和/或当前iops值的一种或多种,业务类型由当前iops值确定,当前iops值小于iops临界值,且由当前ns带宽值确定,iops临界值由总带宽、命名空间总容量和vf盘数量的关系确定;
125.根据目标业务对应的业务参数确定目标业务的rab值调整策略;
126.根据rab值调整策略对目标业务的当前rab值进行调整得到调整后的rab值。
127.具体地,在物理类型为ss态时,需要识别每个vf下的业务参数,动态调整rab值,根据业务参数可以确定目标业务的rab值调整策略。对于业务参数是基于当前目标业务下所有有关于该业务的具体数据,至少包括业务类型、当前iops值。需要说明的是,业务参数可以是一种,也可以是多种参数的组合形式,在此不做限定,可根据实际情况设定即可。对于业务类型,可以是随机读业务,也可以是随机写业务等,其业务类型主要根据当前iops值确定。当前,当前iops值是小于iops临界值,对于当前iops值的限定是依据当前ns的带宽值确定,对于iops临界值可参照上述的实施例的确定过程。
128.确定目标业务的rab值调整策略后,对当前rab值进行调整以得到调整后的rab值。对于根据何种业务参数确定调整策略,在此不做限定,可以是满足对应的预设条件或者限定具体的业务参数确定具体调整策略。对于如何调整也不做限定。
129.作为一种实施例,在目标业务的业务参数为业务类型时,根据业务类型确定目标业务的rab值调整策略,包括:
130.获取目标业务的业务类型和各vf下的当前rab值,其中,业务类型至少包括随机读业务、随机写业务的一种,随机读业务由单位时间随机的读命令个数确定;
131.在业务类型为随机读业务时,在当前rab值的基础上增加预设rab值以作为目标业务对应的rab值调整策略;
132.在其他业务的当前rab值的基础上减少预设rab值以作为其他业务对应的rab值调
整策略。
133.需要说明的是,当前rab值可以是现有技术中平均分配得到的rab值,也可以是沿用上述实施例中的rab值,在此不做限定。业务类型至少包括随机读业务、随机写业务等,其中,随机读业务是由单位时间随机的读命令个数确定。若业务类型为随机读业务时,说明当前的业务压力较大,fetcher模块在单位时间内获取的命令个数不足,其他vf运行其他业务时命令处理延时比随机读的大,导致命令池资源释放延迟,长时间占用命令,对于随机读业务处理造成延时,影响服务质量。因此,需要在当前rab值的基础上增加预设rab值。
134.controller fetcher模块针对每个vf都有一组寄存器用于配置rab,可影响每个vf单位时间获取命令个数。由于nand的特性和dram buffer资源的限制会导致host在运行不同业务时带宽和iops差异很大,如大压力的随机读写,物理盘读的性能可达1400+k,写只有270+k。如果一个vf运行读业务,其他vf运行写业务会导致读业务受到极大影响,因为fetcher命令资源池是有限的,当每个vf的rab是一样时,运行写业务的vf由于受限于iops低,导致命令的释放延时变长,从而长时间占用了命令资源,导致读业务因为没有足够的命令资源而受到极大影响。fw基于此增加了io pattern识别模块,当识别到某个vf需要运行大压力高iops的随机读业务时,其他vf运行的是低iops的随机写业务则将该vf的rab设置为较低值(如单位时间fetcher获取的命令是读业务的vf的一半)。
135.由于总的rab值是一定的,故在随机读业务对应的vf的rab值调整增加,在其他业务的当前rab值需要减少预设rab值。需要说明的是,预设rab值在增加和减少的具体值可以相同,也可以不同,在对其他业务对应的各vf的rab值,可以每个vf下减少一点rab,最终减少的rab总值是随机读业务的增加预设rab值相同,也可以是在对于其他业务对应的各vf中的一个vf下的rab减少预设rab值,其余vf下的rab值保持不变。在此不做限定。
136.在上述实施例中仅是针对业务参数为业务类型时确定的调整策略,作为一种实施例,在目标业务的业务参数为当前iops值,根据业务类型确定目标业务的rab值调整策略,包括:
137.获取当前iops值;
138.判断目标业务的当前iops值是否大于预设iops值;
139.若是,则获取目标业务对应的当前rab值;
140.在当前rab值的基础上增加预设rab值以作为目标业务对应的rab值调整策略;
141.在其他业务的当前rab值的基础上减少预设rab值以作为其他业务对应的rab值调整策略。
142.可以理解的是,仅是需要看当前iops值是否大于预设iops值,若当前iops值大于预设iops值,则说明当前业务压力增大,获取目标业务对应的当前rab值;在当前rab值的基础上增加预设rab值,在其他业务的当前rab值的基础上减少预设rab值。其对应的增加和减少预设rab值的调整策略可参照上述实施例的调整过程,在此不作详细说明。
143.在上述实施例的基础上,作为一种实施例,在目标业务发生变化时,在根据rab值调整策略调整当前vf的当前rab值之后,还包括:
144.将调整后的rab值恢复至当前rab值。
145.也就是说,当该vf退出随机写业务或者切换到随机读业务时则恢复成之前的rab以便于后续的动态调整。
146.本发明实施例提供的rab值依据物理类型分别确定,识别每个vf的业务模型,动态调整rab值,使得pf物理盘从每个vf那获取到的命令个数符合带宽和容量的设定,不会突然某个vf涌入大量命令侵占其他vf的命令空间,导致带宽或者iops不足预期。
147.在上述实施例的基础上,步骤s13中的根据当前命令确定对应的调度信用值,包括:
148.获取当前命令所处的当前物理盘状态,其中,当前物理盘状态为fob态或ss态;
149.根据当前命令和当前物理盘状态确定对应的调度信用值,其中,调度信用值由fob态对应的带宽值或由ss态对应的iops值确定。
150.具体地,fw首先fetcher收集所有的namespace(绑定了某个vf)命令并区分读写命令,将每个ns的命令通过单链表串联起来统一调度。命令调度器调度遍历所有的namespace,首先通过namespace id获取到一个命令,再判断该命令是读还是写命令,根据命令的类型以及当前的物理盘状态去获取对应的调度信用值。
151.在上述实施例的基础上,步骤s14中的根据调度信用值确定对应的调度策略,包括:
152.获取当前命令的调度信用值和预设时间内的预设调度信用值,其中,当前命令存储于单链表内;
153.在预设时间内判断调度信用值是否不大于预设调度信用值;
154.若是,则执行当前命令;
155.若否,则根据调度信用值与预设调度信用值的关系确定当前命令的剩余调度信用值;
156.将剩余调度信用值对应的当前命令存储至单链表完成调度以便于下一个预设时间调度执行。
157.可以理解的是,针对物理盘,有两种数据调度。进行ns数据调度,是为了限制下载速度,例如,一个500g的网盘,限速2m/s,实际可以达到速度100m/s。这里有两个技术方案的数据调度,一种物理状态为fob态,根据带宽信用值进行调度,决定了这里的带宽速度,例如带宽为8k,一个命令为4k,其各命令均相同。预设时间内1s只能通过2个命令,若一个业务包括4个命令,其在第3个、第4个命令挂起需要下1s进行。第二种物理状态为ss态,iops,对于iops的确定,是基于前面命名空间总容量、带宽等确定,直接关系仅是根据iops确定,这里无关带宽事情,是指需要知道io命令个数,也就是吞吐量,例如,预设时间内1s只能通过2个命令,则一个业务包括4个命令,则第3个、第4个命令挂起需要下1s进行。
158.图4为本发明实施例提供的一种ns数据调度的流程图,如图4所示,包括:
159.s21:获取命令;
160.s22:判断命令是读命令还是写命令,若是读命令,则进入步骤s23,若是写命令,则进入步骤s24;
161.s23:插入读命令链表;
162.s24:插入写命令链表;
163.s25:根据ns的id获取当前最大读写带宽和iops对应的调度信用值;
164.s26:获取当前已用掉的调度信用值;
165.s27:根据调度信用值和当前已用掉的调度信用值的关系确定信用额度值;
166.s28:判断信用额度值是否为0,若是,则进入步骤s29,若否,则进入步骤s30;
167.s29:将信用额度值丢回链表;
168.s31:判断定时器是否超时,若是,则进入步骤s32;
169.s32:重置信用值;
170.s30:直接执行该命令。
171.当某个vf在一定时间内已经用完了信用,其信用额度值为0,则该vf的命令被挂起直至下一个调度周期,调度器会维护一个定时器,每次定时器超时之后就会去重置每个vf的信用值。
172.在上述实施例中,是基于ns数据调度进行命令个数的限定,在ns数据调度完成后,在下刷过程中,存在两个技术方案,一种是基于ns个数,另一种是基于ns个数的基础上,在针对ns内部的命令个数,总归两个技术方案全部是基于ns个数确定。步骤s14中的根据当前运行业务的ns个数确定对应的调度策略,包括:
173.获取当前运行业务的ns个数;
174.判断当前运行业务的ns个数是否超出第一阈值;
175.若是,获取当前运行业务的数据下刷的当前速率,并在当前速率的基础上增加预设速率以加快当前运行业务的数据下刷速率以完成调度策略。
176.具体地,调度器根据当前运行的ns个数调整调度,当运行的ns个数达到某个阈值,也就是超出第一阈值时,则获取当前下刷数据的当前速率,并在当前速率的基础上加速(增加预设速率)作为调度策略。
177.在另一种实施例中,根据当前运行业务的ns个数确定对应的调度策略,包括:
178.获取当前运行业务的ns个数内对应的命令个数;
179.判断命令个数是否超出数据量标准值;
180.若命令个数超出数据量标准值,则判断命令个数所在的当前运行业务的ns个数是否超出第二阈值;
181.若命令个数所在的当前运行业务的ns个数超出第二阈值,则在数据量标准值的基础上减少预设个数以降低数据量标准以完成调度策略,其中,数据量标准值与命令个数呈反比例关系。
182.具体地,调度器调度命令不是收到命令就直接下刷至nand,而是考虑nand特性,单次编程需要有足够的数据量以及命令之间会存在冲突导致带宽受到影响。因此,获取各ns内部的命令个数,判断该命令个数是否超出数据量标准值,若超出,则说明当前收集的命令达到一定的数据量,进而再判断对应的ns个数是否超出第二阈值,若超出第二阈值,需要保证调度器的均衡以及资源回收的速度,需要适时降低数据下刷的数据量标准,以此加快下刷的频率,其数据量标准值与命令个数呈反比例关系。
183.先根据ns个数达到某种阈值时,加快下刷速率。命令是需要写到ns中,其也根据命令的数据量达到某一种阈值时,下刷至nand。对于ns个数若较多时,降低数据下刷水线,这里就是不必要凑满多少数据,才在nand中写入。例如,凑满64k数据(水线)进行写入,若加快速度,则不需要凑满64k,降低水线,例如凑够32k进行写入。
184.本发明实施例提供的在软件资源中进行的调度策略,通过灵活的命令调度,根据同时存在业务的vf盘数量来动态调整数据快慢下刷策略,使得命令和物理资源保持动态平
衡,保证了服务质量。
185.图5为本发明实施例提供的另一种基于固态硬盘的vf动态调度方法的流程图,如图5所示,包括:
186.s41:host创建ns空间;
187.s42:将创建的ns空间绑定到对应的vf;
188.s43:fw固件根据ns空间的容量分配vf的资源并进行持久化;
189.s44:将vf透传至虚拟机运行业务;
190.s45:fw固件识别当前的业务模型,当业务压力较大时增大rab值,当业务压力减小时恢复当前ns的最大rab值;
191.s46:fw固件缓存host写数据至缓存中;
192.s47:fw固件根据当前运行业务的vf个数调整缓存下发至nand的速度,使得尽快释放出更多的缓存供后续写业务;
193.s48:fw固件将多个vf的缓存数据切片,打包成一个nand写请求,以达到分散写的目的,提供后续多个vf同时读的并发。
194.在步骤s43中的分配资源,包括三种分配方式:
195.1、分配最大的读写带宽和iops;
196.2、分配最大的nvme队列深度;
197.3、分配最大的rab
198.图6为本发明实施例提供的一种基于固态硬盘的vf动态调度的结构示意图,如图6所示,主机host通过pcie端口访问pf盘和vf,其中pf盘支持对vf盘的控制如创建删除ns和vf,以及绑定vf和ns,pf盘没有ns空间,仅有队列对(queue pair),在队列对中包括管理队列(admin queue),各vf与各ns绑定,其各vf的队列对包括管理队列和io队列(io queue),在各io队列中通过ns schedule进行读写业务。
199.上述详细描述了基于固态硬盘的vf动态调度方法对应的各个实施例,在此基础上,本发明还公开与上述方法对应的基于固态硬盘的vf动态调度装置,图7为本发明实施例提供的一种基于固态硬盘的vf动态调度装置的结构图。如图7所示,基于固态硬盘的vf动态调度装置包括:
200.第一获取模块11,用于预先获取固态硬盘的总带宽、ns总容量和vf盘数量,其中vf盘数量和ns数量相同,且vf盘与ns为一一绑定关系;
201.硬件调度模块12,用于根据总带宽、ns总容量和vf盘数量的组合关系确定硬件资源对应的硬件调度参数,其中,硬件参数至少包括ns带宽临界值、iops临界值、nvme队列深度的临界值和rab值;
202.第一确定模块13,用于获取固态硬盘的当前运行业务的ns个数和链表内的当前命令,并根据当前命令确定对应的调度信用值,其中,调度信用值由带宽临界值和iops临界值确定得到;
203.软件调度模块14,用于分别根据调度信用值和当前运行业务的ns个数确定对应的调度策略以完成软件资源对应的调度。
204.由于装置部分的实施例与上述的实施例相互对应,因此装置部分的实施例请参照上述方法部分的实施例描述,在此不再赘述。
205.对于本发明提供的一种基于固态硬盘的vf动态调度装置的介绍请参照上述方法实施例,本发明在此不再赘述,其具有上述基于固态硬盘的vf动态调度方法相同的有益效果。
206.图8为本发明实施例提供的另一种基于固态硬盘的vf动态调度装置的结构图,如图8所示,该装置包括:
207.存储器21,用于存储计算机程序;
208.处理器22,用于执行计算机程序时实现基于固态硬盘的vf动态调度方法的步骤。
209.本实施例提供的基于固态硬盘的vf动态调度装置可以包括但不限于平板电脑、笔记本电脑或者台式电脑等。
210.其中,处理器22可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器22可以采用数字信号处理器(digital signal processor,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器22也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(central processing unit,cpu);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器22可以集成有图像处理器(graphics processing unit,gpu),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器22还可以包括人工智能(artificial intelligence,ai)处理器,该ai处理器用于处理有关机器学习的计算操作。
211.存储器21可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器21还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器21至少用于存储以下计算机程序211,其中,该计算机程序被处理器22加载并执行之后,能够实现前述任一实施例公开的基于固态硬盘的vf动态调度方法的相关步骤。另外,存储器21所存储的资源还可以包括操作系统212和数据213等,存储方式可以是短暂存储或者永久存储。其中,操作系统212可以包括windows、unix、linux等。数据213可以包括但不限于基于固态硬盘的vf动态调度方法所涉及到的数据等等。
212.在一些实施例中,基于固态硬盘的vf动态调度装置还可包括有显示屏23、输入输出接口24、通信接口25、电源26以及通信总线27。
213.领域技术人员可以理解,图8中示出的结构并不构成对基于固态硬盘的vf动态调度装置的限定,可以包括比图示更多或更少的组件。
214.处理器22通过调用存储于存储器21中的指令以实现上述任一实施例所提供的基于固态硬盘的vf动态调度方法。
215.对于本发明提供的一种基于固态硬盘的vf动态调度装置的介绍请参照上述方法实施例,本发明在此不再赘述,其具有上述基于固态硬盘的vf动态调度方法相同的有益效果。
216.进一步的,本发明还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器22执行时实现如上述基于固态硬盘的vf动态调度方法的步骤。
217.可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
218.对于本发明提供的一种计算机可读存储介质的介绍请参照上述方法实施例,本发明在此不再赘述,其具有上述基于固态硬盘的vf动态调度方法相同的有益效果。
219.以上对本发明所提供的一种基于固态硬盘的vf动态调度方法、基于固态硬盘的vf动态调度装置及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
220.还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

技术特征:
1.一种基于固态硬盘的vf动态调度方法,其特征在于,包括:预先获取所述固态硬盘的总带宽、命名空间总容量和vf盘数量,其中,所述vf盘数量和命名空间数量相同,且vf盘与命名空间为一一绑定关系;根据所述总带宽、所述命名空间总容量和所述vf盘数量的组合关系确定硬件资源对应的硬件调度参数,其中,所述硬件参数至少包括命名空间带宽临界值、iops临界值、nvme队列深度的临界值和rab值;获取所述固态硬盘的当前运行业务的命名空间个数和链表内的当前命令,并根据所述当前命令确定对应的调度信用值,其中,所述调度信用值由所述带宽临界值和所述iops临界值确定得到;分别根据所述调度信用值和所述当前运行业务的命名空间个数确定对应的调度策略以完成软件资源对应的调度。2.根据权利要求1所述的基于固态硬盘的vf动态调度方法,其特征在于,根据所述总带宽、所述命名空间总容量和所述vf盘数量的关系确定所述命名空间带宽临界值,包括:获取所述固态硬盘的当前命名空间的容量值;根据所述总带宽和所述命名空间总容量进行绑定得到每个命名空间的带宽值;根据所述当前命名空间的容量值与所述带宽值的关系确定所述命名空间带宽临界值;对应地,根据所述总带宽、所述命名空间总容量和所述vf盘数量的关系确定所述iops临界值,包括:获取每个io的带宽值;根据所述每个io的带宽值和所述命名空间带宽临界值的关系确定所述iops临界值。3.根据权利要求1所述的基于固态硬盘的vf动态调度方法,其特征在于,根据所述命名空间总容量和所述vf盘数量的关系确定所述nvme队列深度的临界值,包括:根据所述命名空间总容量和所述vf盘数量的关系确定各vf的容量比值;根据各所述vf的容量比值与预设临界范围的关系确定各所述vf所属的io队列命令个数临界值,其中,所述预设临界范围规定vf容量比值的范围,且与所述io队列命令个数临界值存在映射关系;将所述io队列命令个数临界值作为所述nvme队列深度的临界值。4.根据权利要求1至3任意一项所述的基于固态硬盘的vf动态调整方法,其特征在于,所述rab值与所述当前命令所处的物理盘状态相关,在所述物理盘状态为fob态时,根据所述总带宽、所述命名空间总容量和所述vf盘数量的关系确定所述rab值,包括:根据所述命名空间总容量和所述vf盘数量的关系确定各vf的容量比值;根据各所述vf的容量比值与临界阈值范围的关系确定各所述vf所属的rab临界值,其中,所述临界阈值范围规定vf容量比值的范围,且与所述rab临界值存在映射关系。5.根据权利要求1至3任意一项所述的基于固态硬盘的vf动态调整方法,其特征在于,所述rab值与所述当前命令所处的物理盘状态相关,在所述物理盘状态为ss态时,根据所述总带宽、所述命名空间总容量和所述vf盘数量的关系确定所述rab值,包括:获取当前vf运行的目标业务、所述目标业务对应的业务参数和当前rab值,其中,所述业务参数至少包括业务类型和/或当前iops值的一种或多种,所述业务类型由所述当前iops值确定,所述当前iops值小于所述iops临界值,且由当前命名空间带宽值确定,所述
iops临界值由所述总带宽、所述命名空间总容量和所述vf盘数量的关系确定;根据所述目标业务对应的业务参数确定所述目标业务的rab值调整策略;根据所述rab值调整策略对所述目标业务的所述当前rab值进行调整得到调整后的rab值。6.根据权利要求5所述的基于固态硬盘的vf动态调整方法,其特征在于,在所述目标业务的业务参数为所述业务类型时,根据所述业务类型确定所述目标业务的rab值调整策略,包括:获取所述目标业务的业务类型和各vf下的所述当前rab值,其中,所述业务类型至少包括随机读业务、随机写业务的一种,所述随机读业务由单位时间随机的读命令个数确定;在所述业务类型为所述随机读业务时,在所述当前rab值的基础上增加预设rab值以作为所述目标业务对应的rab值调整策略;在其他业务的所述当前rab值的基础上减少所述预设rab值以作为所述其他业务对应的rab值调整策略。7.根据权利要求5所述的基于固态硬盘的vf动态调整方法,其特征在于,在所述目标业务的业务参数为所述当前iops值,根据所述业务类型确定所述目标业务的rab值调整策略,包括:获取所述当前iops值;判断所述目标业务的所述当前iops值是否大于预设iops值;若是,则获取所述目标业务对应的所述当前rab值;在所述当前rab值的基础上增加预设rab值以作为所述目标业务对应的rab值调整策略;在其他业务的所述当前rab值的基础上减少所述预设rab值以作为所述其他业务对应的rab值调整策略。8.根据权利要求5所述的基于固态硬盘的vf动态调整方法,其特征在于,在所述目标业务发生变化时,在所述根据所述rab值调整策略调整所述当前vf的所述当前rab值之后,还包括:将所述调整后的rab值恢复至所述当前rab值。9.根据权利要求1所述的基于固态硬盘的vf动态调度方法,其特征在于,所述根据所述当前命令确定对应的调度信用值,包括:获取所述当前命令所处的当前物理盘状态,其中,所述当前物理盘状态为fob态或ss态;根据所述当前命令和所述当前物理盘状态确定对应的所述调度信用值,其中,所述调度信用值由所述fob态对应的带宽值或由所述ss态对应的iops值确定。10.根据权利要求9所述的基于固态硬盘的动态调度方法,其特征在于,所述根据所述调度信用值确定对应的调度策略,包括:获取所述当前命令的所述调度信用值和预设时间内的预设调度信用值,其中,所述当前命令存储于单链表内;在所述预设时间内判断所述调度信用值是否不大于所述预设调度信用值;若是,则执行所述当前命令;
若否,则根据所述调度信用值与所述预设调度信用值的关系确定所述当前命令的剩余调度信用值;将所述剩余调度信用值对应的当前命令存储至所述单链表完成调度以便于下一个所述预设时间调度执行。11.根据权利要求1所述的基于固态硬盘的动态调度方法,其特征在于,根据所述当前运行业务的命名空间个数确定对应的调度策略,包括:获取所述当前运行业务的命名空间个数;判断所述当前运行业务的命名空间个数是否超出第一阈值;若是,获取所述当前运行业务的数据下刷的当前速率,并在所述当前速率的基础上增加预设速率以加快所述当前运行业务的数据下刷速率以完成所述调度策略。12.根据权利要求1所述的基于固态硬盘的动态调度方法,其特征在于,根据所述当前运行业务的命名空间个数确定对应的调度策略,包括:获取所述当前运行业务的命名空间个数内对应的命令个数;判断所述命令个数是否超出数据量标准值;若所述命令个数超出所述数据量标准值,则判断所述命令个数所在的所述当前运行业务的命名空间个数是否超出第二阈值;若所述命令个数所在的所述当前运行业务的命名空间个数超出所述第二阈值,则在所述数据量标准值的基础上减少预设个数以降低所述数据量标准以完成所述调度策略,其中,所述数据量标准值与所述命令个数呈反比例关系。13.一种基于固态硬盘的vf动态调度装置,其特征在于,包括:第一获取模块,用于预先获取所述固态硬盘的总带宽、命名空间总容量和vf盘数量,其中,所述vf盘数量和命名空间数量相同,且vf盘与命名空间为一一绑定关系;硬件调度模块,用于根据所述总带宽、所述命名空间总容量和所述vf盘数量的组合关系确定硬件资源对应的硬件调度参数,其中,所述硬件参数至少包括命名空间带宽临界值、iops临界值、nvme队列深度的临界值和rab值;第一确定模块,用于获取所述固态硬盘的当前运行业务的命名空间个数和链表内的当前命令,并根据所述当前命令确定对应的调度信用值,其中,所述调度信用值由所述带宽临界值和所述iops临界值确定得到;软件调度模块,用于分别根据所述调度信用值和所述当前运行业务的命名空间个数确定对应的调度策略以完成软件资源对应的调度。14.一种基于固态硬盘的vf动态调度装置,其特征在于,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如权利要求1至12任一项所述的基于固态硬盘的vf动态调度方法的步骤。15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至12任一项所述的基于固态硬盘的vf动态调度方法的步骤。

技术总结
本发明公开了一种基于固态硬盘的VF动态调度方法、装置及介质,适用于计算机虚拟化技术领域。在硬件资源方面将总带宽、队列深度、IOPS、RAB和命名空间总容量进行绑定。在将VF带宽和IOPS与容量绑定时,以确保每个VF运行业务时拥有自己的带宽和IOPS;将VF的队列深度和容量绑定,使得虚拟机下发的命令个数进行限制,不影响其他虚拟机;根据命名空间总容量确定每个VF的RAB,避免业务压力大时及时调整RAB导致的带宽或者IOPS不足,达到运行业务时各VF之间互不影响。在软件方面分别根据调度信用值和NS个数完成调度过程中的NS调度和下刷过程中的下刷快慢,调度信用值由带宽和IOPS决定,保证带宽资源充裕。带宽资源充裕。带宽资源充裕。


技术研发人员:袁勇奋 吴增坤 王晋强 杨亚飞
受保护的技术使用者:深圳大普微电子科技有限公司
技术研发日:2023.05.31
技术公布日:2023/8/24
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐