CN105242955A - 一种虚拟机磁盘输入输出调度方法及系统 - Google Patents
一种虚拟机磁盘输入输出调度方法及系统 Download PDFInfo
- Publication number
- CN105242955A CN105242955A CN201410321663.3A CN201410321663A CN105242955A CN 105242955 A CN105242955 A CN 105242955A CN 201410321663 A CN201410321663 A CN 201410321663A CN 105242955 A CN105242955 A CN 105242955A
- Authority
- CN
- China
- Prior art keywords
- bandwidth
- lvm
- input
- virtual machine
- time period
- 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.)
- Granted
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了虚拟机磁盘输入输出调度方法,包括:当监测到虚拟机磁盘的输入输出服务状态为繁忙状态时,获取在当前时刻之前的第一预设时间段内各个LVM使用的带宽;根据在繁忙状态下获取的各个LVM使用的带宽,减少第一LVM使用的带宽,第一LVM为获取的各个LVM使用的带宽中带宽最大对应的LVM;当经过第二预设时间段后监测到虚拟机磁盘的输入输出服务状态为繁忙状态,则重复执行获取在当前时刻之前的第一预设时间段内各个LVM使用的带宽的步骤。采用本发明,实现了在不同的时间维度上对时间序列进行预测,解决了现有技术中通过设固定值来实现磁盘IO隔离造成磁盘IO的效率降低的技术问题,大大提高了虚拟机的运行速度。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种虚拟机磁盘输入输出调度方法及系统。
背景技术
LinuxContainer(lxc)容器是一种内核虚拟化技术,目前lxc作为一种轻量级的虚拟化方案,被广泛应用;lxc在CPU和内存方面有较好的隔离性,但磁盘输入输出(或读写)IO方面隔离较差。对于部署于同一底层磁盘的多个子机,在一/多个子机磁盘IO密集时,其他子机会因IO饥饿而无法正常工作;为了消除这种影响,必须对高IO进行限制,以实现IO隔离。
现有技术可以通过逻辑卷管理(LogicalVolumeManager,LVM)技术来实现lxc的IO隔离,LVM作为lxc的存储设备,底层是一块scsi盘;例如通过io-throttle限速机制,根据具体的每秒读写次数(Input/OutputOperationsPerSecond,iops)和位/秒(bps)来限制IO。具体地,结合控制组controlgroups(cgroup)和块输入输出限制(blkio),设置相应cgroup对各个块设备的访问iops和bps限制后,各个cgroup中的进程读写块设备的带宽不会超过设定值,从而达到限速效果,实现IO的隔离。
现有技术的io-throttle限速机制是通过设定固定的值去限定每个cgroup产生的IO个数和字节数,从根本上限制住高IO产生的频率,留出足够的带宽给其他cgroup使用;即,io-throttle需要一个固定的bps或者iops值,然而,在实际应用过程中,磁盘IO是动态变化的,因此,现有技术中设固定值的方法来实现磁盘IO隔离将大大降低磁盘IO的效率,不利于虚拟机的运行。
发明内容
本发明实施例所要解决的技术问题在于,提供一种虚拟机磁盘输入输出调度方法及系统,通过监测虚拟机磁盘的输入输出服务状态来动态调整LVM使用的带宽,解决了现有技术中通过设固定值来实现磁盘IO隔离造成磁盘IO的效率降低的技术问题,大大提高了虚拟机的运行速度。
为了解决上述技术问题,本发明实施例第一方面公开了一种虚拟机磁盘输入输出调度方法,包括
当监测到虚拟机磁盘的输入输出服务状态为繁忙状态时,获取在当前时刻之前的第一预设时间段内各个逻辑卷管理LVM使用的带宽;
根据在所述繁忙状态下获取的各个LVM使用的带宽,减少第一LVM使用的带宽,所述第一LVM为在所述繁忙状态下获取的各个LVM使用的带宽中带宽最大对应的LVM;
当经过第二预设时间段后监测到虚拟机磁盘的输入输出服务状态为繁忙状态,则重复执行所述获取在当前时刻之前的第一预设时间段内各个LVM使用的带宽的步骤。
本发明实施例第二方面公开了一种虚拟机磁盘输入输出调度系统,包括:
获取模块,用于当监测到虚拟机磁盘的输入输出服务状态为繁忙状态时,获取在当前时刻之前的第一预设时间段内各个逻辑卷管理LVM使用的带宽;
带宽减少模块,用于根据在所述繁忙状态下获取的各个LVM使用的带宽,减少第一LVM使用的带宽,所述第一LVM为在所述繁忙状态下获取的各个LVM使用的带宽中带宽最大对应的LVM;
触发执行模块,用于当经过第二预设时间段后监测到虚拟机磁盘的输入输出服务状态为繁忙状态,则触发所述获取模块重复执行获取的步骤。
实施本发明实施例,具有如下有益效果:
通过监测虚拟机磁盘的输入输出服务状态来动态调整LVM使用的带宽,实现动态地限制各个cgroup中进程读写块设备的带宽,从而实现了虚拟机磁盘IO的隔离,解决了现有技术中通过设固定值来实现磁盘IO隔离造成磁盘IO的效率降低的技术问题,大大提高了虚拟机的运行速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的虚拟机磁盘输入输出调度方法的流程示意图;
图2是本发明提供的监测虚拟机磁盘的输入输出服务状态方法的流程示意图;
图3是本发明提供的另一实施例的监测虚拟机磁盘的输入输出服务状态方法的流程示意图;
图4是本发明提供的获取的LVM使用的带宽的流程示意图;
图5是本发明提供的另一实施例的虚拟机磁盘输入输出调度方法的流程示意图;
图6是本发明提供的虚拟机磁盘输入输出调度系统的结构示意图;
图7是本发明提供的另一实施例的虚拟机磁盘输入输出调度系统的结构示意图;
图8是本发明提供的监测模块的结构示意图;
图9是本发明提供的带宽减少模块的结构示意图;
图10是本发明提供的另一实施例的虚拟机磁盘输入输出调度系统的结构示意图;
图11是本发明提供的虚拟机磁盘输入输出调度系统的另一实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,是本发明实施例提供的虚拟机磁盘输入输出调度方法的流程示意图,该方法包括:
步骤S100:当监测到虚拟机磁盘的输入输出服务状态为繁忙状态时,获取在当前时刻之前的第一预设时间段内各个逻辑卷管理LVM使用的带宽;
具体地,步骤S100之前,本发明实施例还包括监测虚拟机磁盘的IO服务状态的步骤,那么在监测到虚拟机磁盘的IO服务状态为繁忙状态时执行步骤S100;需要说明的是,本发明各个实施例中的第一预设时间段可以根据实际使用情况自定义设置,包括但不限于1秒、1.5秒、2秒、3秒等等;优选地,该第一预设时间段为1秒到2秒之间。
步骤S102:根据在所述繁忙状态下获取的各个LVM使用的带宽,减少第一LVM使用的带宽,所述第一LVM为在所述繁忙状态下获取的各个LVM使用的带宽中带宽最大对应的LVM;
具体地,可以通过在虚拟机磁盘的IO服务状态为繁忙状态下获取的各个LVM使用的带宽中找出带宽最大对应的LVM,将该找出的最大带宽对应的LVM作为限速对象(即本发明实施例中的第一LVM),减少该第一LVM使用的带宽;减少的方式可以根据实际使用情况来设定,包括但不限于将该第一LVM使用的带宽乘以一个系数,以达到减少该第一LVM使用的带宽,该系数可以为0.7、0.8或0.9等,不作限制。
步骤S104:当经过第二预设时间段后监测到虚拟机磁盘的输入输出服务状态为繁忙状态,则重复执行所述获取在当前时刻之前的第一预设时间段内各个LVM使用的带宽的步骤。
具体地,随着磁盘IO进行,磁盘IO将不断地动态改变,在执行完步骤S102后,可能出现以下情况:1、IO限速效果不够,磁盘继续繁忙;2、磁盘IO不再繁忙;因此,执行完步骤S102后,本发明实施例还执行对虚拟机磁盘的输入输出服务状态的监测,详细地,在执行完步骤S102并经过第二预设时间段后仍然监测到虚拟机磁盘的输入输出服务状态为繁忙状态,那么将重复执行上述步骤S100中获取在当前时刻之前的第一预设时间段内各个LVM使用的带宽的步骤,可理解的是,后续将继续往下执行步骤S102。
可理解的是,步骤S102每次执行完减少该第一LVM使用的带宽后,可以将该第一LVM对应的throttle队列的限速change标志置为1,以使新的限速值生效;另,每次执行步骤S102时的第一LVM使用的带宽可以与之前执行时找出的第一LVM使用的带宽不同,该第一LVM使用的带宽是指当次获取的各个LVM使用的带宽中带宽最大对应的LVM。
需要说明的是,本发明各个实施例中的第二预设时间段可以根据实际使用情况自定义设置,包括但不限于1秒、1.5秒、2秒、3秒等等;优选地,该第一预设时间段为1秒到2秒之间。该第二预设时间段可以等于该第一预设时间段。
通过图1实施例,监测虚拟机磁盘的输入输出服务状态来动态调整LVM使用的带宽,实现了动态地限制各个cgroup中进程读写块设备的带宽,从而实现了虚拟机磁盘IO的隔离,解决了现有技术中通过设固定值来实现磁盘IO隔离造成磁盘IO的效率降低的技术问题,大大提高了虚拟机的运行速度。
进一步地,本发明实施例中监测所述虚拟机磁盘的输入输出服务状态的方法可以具体通过获取磁盘IO特征来监测磁盘是否繁忙,下面结合图2示出的本发明提供的监测虚拟机磁盘的输入输出服务状态方法的流程示意图,详细说明本发明实施例中监测所述虚拟机磁盘的输入输出服务状态的步骤,可以具体包括:
步骤S200:获取块设备的最大任务队列长度以及当前任务队列长度;
具体地,磁盘IO特征包括很多,例如每个块设备都会对应有一个scsi_device结构,本实施例通过获取该scsi_device结构中的最大任务队列长度(可以是scsi_device结构中的queue_depth字段),以及当前任务队列长度(可以是scsi_device结构中的device_busy字段)。
步骤S202:比较所述最大任务队列长度与所述当前任务队列长度;
步骤S204:当所述当前任务队列长度达到预设倍数的最大任务队列长度时,则监测到虚拟机磁盘的输入输出服务状态为繁忙状态;
步骤S206:当所述当前任务队列长度没有达到预设倍数的最大任务队列长度时,则监测到虚拟机磁盘的输入输出服务状态为不繁忙状态。
具体地,该预设倍数可以根据实际使用情况自定义设置,包括但不限于0.7倍、0.8倍、0.9倍、或1倍等等;例如,该预设倍数设为0.8倍,那么当比较出当前任务队列长度为0.9倍的最大任务队列长度,即判断出当前任务队列长度达到了该预设倍数的最大任务队列长度,从而监测出了虚拟机磁盘的输入输出服务状态为繁忙状态;当比较出当前任务队列长度为0.7倍的最大任务队列长度时,即判断出当前任务队列长度没有达到了该预设倍数的最大任务队列长度,从而监测出了虚拟机磁盘的输入输出服务状态为不繁忙状态。
再进一步地,如图3示出的本发明提供的另一实施例的监测虚拟机磁盘的输入输出服务状态方法的流程示意图,详细说明本发明实施例中监测所述虚拟机磁盘的输入输出服务状态的步骤,可以具体包括:
步骤S300:获取块设备的最大任务队列长度以及当前任务队列长度;并从请求队列中获取请求链表;
具体地,获取块设备的最大任务队列长度以及当前任务队列长度可以参考上述图2实施例中步骤S200的描述,这里不再赘述。除了获取块设备的最大任务队列长度以及当前任务队列长度外,还可以从请求队列中获取请求链表request_list。
步骤S302:比较所述最大任务队列长度与所述当前任务队列长度,判断所述当前任务队列长度是否达到预设倍数的最大任务队列长度;
具体地,比较判断的步骤可以参考上述图2实施例中的步骤S202至步骤S206的描述,当判断出当前任务队列长度达到预设倍数的最大任务队列长度后,执行步骤S304;否则执行步骤S310;
步骤S304:根据所述请求链表统计第三预设时间段内的平均队列长度;
具体地,可以统计第三预设时间段内请求链表的count字段的平均值来得到平均队列长度;本发明各个实施例中的第三预设时间段包括但不限于0.5秒、0.8秒、1秒等,优选地,该第三预设时间段可以为0.5秒。
步骤S306:判断所述平均队列长度是否大于预设拥塞阈值;
具体地,本发明实施例中的预设拥塞阈值包括但不限于113,可以根据实际使用情况来进行设置,还可以为128等等。当判断该平均队列长度大于预设拥塞阈值时,执行步骤S308;否则,执行步骤S310;
步骤S308:监测到虚拟机磁盘的输入输出服务状态为繁忙状态;
步骤S310:监测到虚拟机磁盘的输入输出服务状态为不繁忙状态。
通过图3实施例,为了提高磁盘IO特征获取的准确性,在图2实施例的基础上加入了对磁盘IO调度队列长度的判断;由于磁盘IO调度层会合并下发bio,并生成请求request,在达到一定条件后再下发请求到驱动层。磁盘IO调度层缓冲的请求数是有限制的,最大数量为128,一般在请求数大于预设拥塞阈值113后,会将后来创建请求的进程睡眠,并设置队列拥塞。因此,磁盘IO队列长度也可以作为磁盘IO繁忙的判断标准。
再进一步地,为了根据虚拟机磁盘的输入输出服务状态来动态调整LVM使用的带宽,需要计算在底层设备繁忙时各个LVM使用的带宽,如bps和iops,为进行IO限速提供计算依据。下面结合图4示出的本发明提供的获取的LVM使用的带宽的流程示意图,详细说明本发明实施例中如何实时计算各个LVM当前使用带宽,包括:
步骤S400:判断块输入输出的下发速度是否超速;
具体地,正常的bio进入块层是直接合并后放到IO队列中,但加入throttle层后,bio下发就有两条路径下发,一种是正常下发路径(即本发明实施例中的第一下发路径),一种是进入throttle队列(即本发明实施例中的第二下发路径),经过一段时间后,再次走块层合并下发到IO队列;当判断到块输入输出的下发速度没有超速时,表明bio只通过该第一下发路径进行下发,则执行步骤S402;当判断到块输入输出的下发速度出现超速时,表明bio除了通过第一下发路径进行下发外,还通过第二下发路径进行下发,则执行步骤S404;
步骤S402:统计在当前时刻之前的第一预设时间段内通过第一下发路径累计下发的块输入输出个数以及数量;
步骤S404:统计在当前时刻之前的第一预设时间段内通过第一下发路径以及第二下发路径累计下发的块输入输出个数以及数量;
步骤S406:根据所述统计的块输入输出个数以及数量计算得出LVM使用的带宽。
具体地,可以计算出某时间段t内下发的bio和bio_size总量之差,通过总量差除以该时间段t就可以得到LVM使用的IO带宽。该时间段t包括但不限于0.5秒到2秒等。
再进一步地,本发明实施例的提供的虚拟机磁盘输入输出调度方法,在获取在当前时刻之前的第一预设时间段内各个LVM使用的带宽之后,还可以包括记录所述第一LVM使用的带宽。具体地,在减少该第一LVM使用的带宽之后,当经过第二预设时间段后监测到虚拟机磁盘的输入输出服务状态仍然为繁忙状态,则重复执行所述获取在当前时刻之前的第一预设时间段内各个LVM使用的带宽的步骤,以继续进行磁盘IO限速调整;当经过第二预设时间段后监测到虚拟机磁盘的输入输出服务状态不为繁忙状态,那么可以根据记录的带宽信息,对减少的带宽进行回调,下面结合图5示出的本发明提供的另一实施例的虚拟机磁盘输入输出调度方法的流程示意图,该方法包括:。
步骤S500:监测虚拟机磁盘的IO服务状态是否为繁忙状态;
具体地,当监测结果为否时,继续执行步骤S500;当监测结果为是时,则执行步骤S502;具体可参考上述各实施例中监测虚拟机磁盘的IO服务状态的方法,这里不再赘述。
步骤S502:,获取在当前时刻之前的第一预设时间段内各个LVM使用的带宽;
具体地,参考图4实施例中计算各个LVM当前使用带宽的方法,找出限速对象(即第一LVM)以及限速值(即该第一LVM使用的带宽)。
步骤S504:根据在所述繁忙状态下获取的各个LVM使用的带宽,减少第一LVM使用的带宽;
步骤S506:判断第二预设时间段内虚拟机磁盘的IO服务状态是否为繁忙状态;
具体地,当判断结果为是时,则执行步骤S502;当判断结果为否时,则可以执行步骤S508,或者执行步骤S510;具体可以根据实际使用情况来进行选择。
步骤S508:根据记录的所述第一LVM使用的带宽,将所述第一LVM使用的带宽调整为最近记录的所述第一LVM使用的带宽;
具体地,在记录第一LVM使用的带宽时,可以通过定义一个数组和数组指针,记录n组限速值(即第一LVM使用的带宽)和限速对象(即对应的第一LVM),n为自然数,例如可以为8、10等;当判断第二预设时间段内虚拟机磁盘的IO服务状态为不繁忙状态时,即需要逐步解除对LVM的限制时,可以去除当前数组指针进行前移,取出相应数组元素,回退到上次的LVM限速(即将该第一LVM使用的带宽调整为最近记录的该第一LVM使用的带宽);
可理解的是,可以设置一个参数值m,m为自然数,默认值为0;每当数组指针前移一次,m值加1,直到m值达到阈值时(比如5或6等),则表明连续经过了5或6个第二预设时间段,虚拟机磁盘的IO服务状态仍然为不繁忙状态,那么可以执行步骤S510,彻底解除对磁盘IO的限速。
步骤S510:恢复所述第一LVM使用的带宽为减少之前的带宽。
具体地,当判断第二预设时间段内虚拟机磁盘的IO服务状态为不繁忙状态时,可以直接将该第一LVM使用的带宽恢复为限速前的带宽,即不管在此之前该第一LVM使用的带宽经过了多少次的限速,只要将该第一LVM使用的带宽恢复到最初没有被限速时的带宽即可。
可理解的是,本发明实施例的虚拟机磁盘输入输出调度方法可以在通用块层中来执行,对bio进行了限速后,再将bio下发进入到磁盘IO调度层进行处理。
实施本发明实施例,通过监测虚拟机磁盘的输入输出服务状态来动态调整LVM使用的带宽,实现动态地限制各个cgroup中进程读写块设备的带宽,从而实现了虚拟机磁盘IO的隔离,解决了现有技术中通过设固定值来实现磁盘IO隔离造成磁盘IO的效率降低的技术问题,大大提高了虚拟机的运行速度。
为了便于更好地实施本发明实施例的上述方案,本发明还对应提供了一种虚拟机磁盘输入输出调度系统,如图6示出的本发明提供的虚拟机磁盘输入输出调度系统的结构示意图,虚拟机磁盘输入输出调度系统60包括:获取模块600、带宽减少模块602和触发执行模块604,其中
获取模块600用于当监测到虚拟机磁盘的输入输出服务状态为繁忙状态时,获取在当前时刻之前的第一预设时间段内各个逻辑卷管理LVM使用的带宽;
带宽减少模块602用于根据在所述繁忙状态下获取的各个LVM使用的带宽,减少第一LVM使用的带宽,所述第一LVM为在所述繁忙状态下获取的各个LVM使用的带宽中带宽最大对应的LVM;
触发执行模块604用于当经过第二预设时间段后监测到虚拟机磁盘的输入输出服务状态为繁忙状态,则触发获取模块600重复执行获取的步骤。
具体地,如图7示出的本发明提供的另一实施例的虚拟机磁盘输入输出调度系统的结构示意图,虚拟机磁盘输入输出调度系统60包括获取模块600、带宽减少模块602和触发执行模块604外,还可以包括用于监测所述虚拟机磁盘的输入输出服务状态的监测模块606,其中监测模块606可以包括:长度获取单元6060和比较单元6062,具体地:
长度获取单元6060用于获取块设备的最大任务队列长度以及当前任务队列长度;
比较单元6062用于比较所述最大任务队列长度与所述当前任务队列长度,当所述当前任务队列长度达到预设倍数的最大任务队列长度时,则监测到虚拟机磁盘的输入输出服务状态为繁忙状态。
进一步地,如图8示出的本发明提供的监测模块的结构示意图,监测模块606包括长度获取单元6060和比较单元6062外,还可以包括请求链表获取单元6064,用于从请求队列中获取请求链表;
那么。比较单元6062具体可以用于,比较所述最大任务队列长度与所述当前任务队列长度,当所述当前任务队列长度达到预设倍数的最大任务队列长度之后,根据所述请求链表统计第三预设时间段内的平均队列长度;当所述平均队列长度大于预设拥塞阈值时,则监测到虚拟机磁盘的输入输出服务状态为繁忙状态。
再进一步地,如图9示出的本发明提供的带宽减少模块的结构示意图,带宽减少模块602可以包括:超速判断单元6020、第一统计计算单元6022和第二统计计算单元6024,其中
超速判断单元6020用于判断块输入输出的下发速度是否超速;
第一统计计算单元6022用于当判断结果为否时,则统计在当前时刻之前的第一预设时间段内通过第一下发路径累计下发的块输入输出个数以及数量,并根据所述统计的块输入输出个数以及数量计算得出各个LVM使用的带宽;
第二统计计算单元6024用于当判断结果为是时,则统计在当前时刻之前的第一预设时间段内通过第一下发路径以及第二下发路径累计下发的块输入输出个数以及数量,并根据所述统计的块输入输出个数以及数量计算得出各个LVM使用的带宽。
具体地,如图10示出的本发明提供的另一实施例的虚拟机磁盘输入输出调度系统的结构示意图,虚拟机磁盘输入输出调度系统60包括获取模块600、带宽减少模块602、触发执行模块604和监测模块606外,还可以包括记录模块608和带宽调整模块6010,其中
记录模块608用于在获取模块600获取在当前时刻之前的第一预设时间段内各个逻辑卷管理LVM使用的带宽之后,记录所述第一LVM使用的带宽;
带宽调整模块6010用于在带宽减少模块602减少第一LVM使用的带宽之后,当经过所述第二预设时间段后监测到虚拟机磁盘的输入输出服务状态为不繁忙状态,则根据所述记录模块记录的所述第一LVM使用的带宽,将所述第一LVM使用的带宽调整为最近记录的所述第一LVM使用的带宽。
再进一步地,本发明实施例中的虚拟机磁盘输入输出调度系统60还可以包括带宽恢复模块,用于在带宽减少模块602减少第一LVM使用的带宽之后,当经过所述第二预设时间段后监测到虚拟机磁盘的输入输出服务状态为不繁忙状态,则恢复所述第一LVM使用的带宽为减少之前的带宽。
需要说明的是,本发明各个实施例中该第一预设时间段可以为1秒至2秒;或该第二预设时间段可以为1秒至2秒。
需要说明的是,本发明实施例中的虚拟机磁盘输入输出调度系统60可以为个人计算机或移动智能终端、平板电脑等电子终端;虚拟机磁盘输入输出调度系统60中各功能模块的功能可根据上述方法实施例中的方法具体实现,这里不再赘述。
请参阅图11,图11是本发明提供的虚拟机磁盘输入输出调度系统的另一实施例的结构示意图。其中,如图11所示,虚拟机磁盘输入输出调度系统110可以包括:至少一个处理器1101,例如CPU,至少一个网络接口1104,用户接口1103,存储器1105,至少一个通信总线1102以及显示屏1106。其中,通信总线1102用于实现这些组件之间的连接通信。其中,用户接口1103可以包括标准的有线接口、无线接口。网络接口,1104可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1105可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器1105可选的还可以是至少一个位于远离前述处理器1101的存储系统。如图11所示,作为一种计算机存储介质的存储器1105中可以包括操作系统、网络通信模块、用户接口模块以及虚拟机磁盘输入输出调度程序。
在图11所示的虚拟机磁盘输入输出调度系统110中,网络接口1104主要用于连接服务器,与服务器进行数据通信;而处理器1101可以用于调用存储器1105中存储的虚拟机磁盘输入输出调度程序,并执行以下操作:
对时间序列的时间粒度进行多维划分,划分出至少两个时间维度;
当监测到虚拟机磁盘的输入输出服务状态为繁忙状态时,获取在当前时刻之前的第一预设时间段内各个逻辑卷管理LVM使用的带宽;
根据在所述繁忙状态下获取的各个LVM使用的带宽,减少第一LVM使用的带宽,所述第一LVM为在所述繁忙状态下获取的各个LVM使用的带宽中带宽最大对应的LVM;
当经过第二预设时间段后监测到虚拟机磁盘的输入输出服务状态为繁忙状态,则重复执行所述获取在当前时刻之前的第一预设时间段内各个LVM使用的带宽的步骤。
进一步地,处理器1101获取在当前时刻之前的第一预设时间段内各个逻辑卷管理LVM使用的带宽之前还包括监测所述虚拟机磁盘的输入输出服务状态,包括:
获取块设备的最大任务队列长度以及当前任务队列长度;
比较所述最大任务队列长度与所述当前任务队列长度,当所述当前任务队列长度达到预设倍数的最大任务队列长度时,则监测到虚拟机磁盘的输入输出服务状态为繁忙状态。
再进一步地,处理器1101监测所述虚拟机磁盘的输入输出服务状态还包括:从请求队列中获取请求链表;
所述当所述当前任务队列长度达到预设倍数的最大任务队列长度之后,所述监测到虚拟机磁盘的输入输出服务状态为繁忙状态之前,还包括:
根据所述请求链表统计第三预设时间段内的平均队列长度;
当所述平均队列长度大于预设拥塞阈值时,则监测到虚拟机磁盘的输入输出服务状态为繁忙状态。
再进一步地,处理器1101获取在当前时刻之前的第一预设时间段内各个逻辑卷管理LVM使用的带宽包括:
判断块输入输出的下发速度是否超速;
当判断结果为否时,则统计在当前时刻之前的第一预设时间段内通过第一下发路径累计下发的块输入输出个数以及数量,并根据所述统计的块输入输出个数以及数量计算得出各个LVM使用的带宽;
当判断结果为是时,则统计在当前时刻之前的第一预设时间段内通过第一下发路径以及第二下发路径累计下发的块输入输出个数以及数量,并根据所述统计的块输入输出个数以及数量计算得出各个LVM使用的带宽。
再进一步地,处理器1101获取在当前时刻之前的第一预设时间段内各个逻辑卷管理LVM使用的带宽之后,还包括:记录所述第一LVM使用的带宽;
所述减少第一LVM使用的带宽之后,还包括:当经过所述第二预设时间段后监测到虚拟机磁盘的输入输出服务状态为不繁忙状态,则根据记录的所述第一LVM使用的带宽,将所述第一LVM使用的带宽调整为最近记录的所述第一LVM使用的带宽。
再进一步地,处理器1101减少第一LVM使用的带宽之后,还包括:
当经过所述第二预设时间段后监测到虚拟机磁盘的输入输出服务状态为不繁忙状态,则恢复所述第一LVM使用的带宽为减少之前的带宽。
再进一步地,所述第一预设时间段为1秒至2秒;或
所述第二预设时间段为1秒至2秒。
需要说明的是,处理器1101执行的步骤可以参考上述图1到图5方法实施例中的具体实现方式,这里不再赘述。
综上所述,实施本发明实施例,通过监测虚拟机磁盘的输入输出服务状态来动态调整LVM使用的带宽,实现动态地限制各个cgroup中进程读写块设备的带宽,从而实现了虚拟机磁盘IO的隔离,解决了现有技术中通过设固定值来实现磁盘IO隔离造成磁盘IO的效率降低的技术问题,大大提高了虚拟机的运行速度。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (14)
1.一种虚拟机磁盘输入输出调度方法,其特征在于,包括:
当监测到虚拟机磁盘的输入输出服务状态为繁忙状态时,获取在当前时刻之前的第一预设时间段内各个逻辑卷管理LVM使用的带宽;
根据在所述繁忙状态下获取的各个LVM使用的带宽,减少第一LVM使用的带宽,所述第一LVM为在所述繁忙状态下获取的各个LVM使用的带宽中带宽最大对应的LVM;
当经过第二预设时间段后监测到虚拟机磁盘的输入输出服务状态为繁忙状态,则重复执行所述获取在当前时刻之前的第一预设时间段内各个LVM使用的带宽的步骤。
2.如权利要求1所述的方法,其特征在于,所述获取在当前时刻之前的第一预设时间段内各个逻辑卷管理LVM使用的带宽之前还包括监测所述虚拟机磁盘的输入输出服务状态,包括:
获取块设备的最大任务队列长度以及当前任务队列长度;
比较所述最大任务队列长度与所述当前任务队列长度,当所述当前任务队列长度达到预设倍数的最大任务队列长度时,则监测到虚拟机磁盘的输入输出服务状态为繁忙状态。
3.如权利要求2所述的方法,其特征在于,所述监测所述虚拟机磁盘的输入输出服务状态还包括:从请求队列中获取请求链表;
所述当所述当前任务队列长度达到预设倍数的最大任务队列长度之后,所述监测到虚拟机磁盘的输入输出服务状态为繁忙状态之前,还包括:
根据所述请求链表统计第三预设时间段内的平均队列长度;
当所述平均队列长度大于预设拥塞阈值时,则监测到虚拟机磁盘的输入输出服务状态为繁忙状态。
4.如权利要求1所述的方法,其特征在于,所述获取在当前时刻之前的第一预设时间段内各个逻辑卷管理LVM使用的带宽包括:
判断块输入输出的下发速度是否超速;
当判断结果为否时,则统计在当前时刻之前的第一预设时间段内通过第一下发路径累计下发的块输入输出个数以及数量,并根据所述统计的块输入输出个数以及数量计算得出各个LVM使用的带宽;
当判断结果为是时,则统计在当前时刻之前的第一预设时间段内通过第一下发路径以及第二下发路径累计下发的块输入输出个数以及数量,并根据所述统计的块输入输出个数以及数量计算得出各个LVM使用的带宽。
5.如权利要求1-4任一项所述的方法,其特征在于,所述获取在当前时刻之前的第一预设时间段内各个逻辑卷管理LVM使用的带宽之后,还包括:记录所述第一LVM使用的带宽;
所述减少第一LVM使用的带宽之后,还包括:当经过所述第二预设时间段后监测到虚拟机磁盘的输入输出服务状态为不繁忙状态,则根据记录的所述第一LVM使用的带宽,将所述第一LVM使用的带宽调整为最近记录的所述第一LVM使用的带宽。
6.如权利要求1-4任一项所述的方法,其特征在于,所述减少第一LVM使用的带宽之后,还包括:
当经过所述第二预设时间段后监测到虚拟机磁盘的输入输出服务状态为不繁忙状态,则恢复所述第一LVM使用的带宽为减少之前的带宽。
7.如权利要求1-4任一项所述的方法,其特征在于,所述第一预设时间段为1秒至2秒;或
所述第二预设时间段为1秒至2秒。
8.一种虚拟机磁盘输入输出调度系统,其特征在于,包括:
获取模块,用于当监测到虚拟机磁盘的输入输出服务状态为繁忙状态时,获取在当前时刻之前的第一预设时间段内各个逻辑卷管理LVM使用的带宽;
带宽减少模块,用于根据在所述繁忙状态下获取的各个LVM使用的带宽,减少第一LVM使用的带宽,所述第一LVM为在所述繁忙状态下获取的各个LVM使用的带宽中带宽最大对应的LVM;
触发执行模块,用于当经过第二预设时间段后监测到虚拟机磁盘的输入输出服务状态为繁忙状态,则触发所述获取模块重复执行获取的步骤。
9.如权利要求8所述的系统,其特征在于,还包括用于监测所述虚拟机磁盘的输入输出服务状态的监测模块,所述监测模块包括:
长度获取单元,用于获取块设备的最大任务队列长度以及当前任务队列长度;
比较单元,用于比较所述最大任务队列长度与所述当前任务队列长度,当所述当前任务队列长度达到预设倍数的最大任务队列长度时,则监测到虚拟机磁盘的输入输出服务状态为繁忙状态。
10.如权利要求9所述的系统,其特征在于,所述监测模块还包括:
请求链表获取单元,用于从请求队列中获取请求链表;
所述比较单元具体用于,比较所述最大任务队列长度与所述当前任务队列长度,当所述当前任务队列长度达到预设倍数的最大任务队列长度之后,根据所述请求链表统计第三预设时间段内的平均队列长度;当所述平均队列长度大于预设拥塞阈值时,则监测到虚拟机磁盘的输入输出服务状态为繁忙状态。
11.如权利要求8所述的系统,其特征在于,所述带宽减少模块包括:
超速判断单元,用于判断块输入输出的下发速度是否超速;
第一统计计算单元,用于当判断结果为否时,则统计在当前时刻之前的第一预设时间段内通过第一下发路径累计下发的块输入输出个数以及数量,并根据所述统计的块输入输出个数以及数量计算得出各个LVM使用的带宽;
第二统计计算单元,用于当判断结果为是时,则统计在当前时刻之前的第一预设时间段内通过第一下发路径以及第二下发路径累计下发的块输入输出个数以及数量,并根据所述统计的块输入输出个数以及数量计算得出各个LVM使用的带宽。
12.如权利要求8-11任一项所述的系统,其特征在于,还包括:
记录模块,用于在所述获取模块获取在当前时刻之前的第一预设时间段内各个逻辑卷管理LVM使用的带宽之后,记录所述第一LVM使用的带宽;
带宽调整模块,用于在所述带宽减少模块减少第一LVM使用的带宽之后,当经过所述第二预设时间段后监测到虚拟机磁盘的输入输出服务状态为不繁忙状态,则根据所述记录模块记录的所述第一LVM使用的带宽,将所述第一LVM使用的带宽调整为最近记录的所述第一LVM使用的带宽。
13.如权利要求8-11任一项所述的系统,其特征在于,还包括:
带宽恢复模块,用于在所述带宽减少模块减少第一LVM使用的带宽之后,当经过所述第二预设时间段后监测到虚拟机磁盘的输入输出服务状态为不繁忙状态,则恢复所述第一LVM使用的带宽为减少之前的带宽。
14.如权利要求8-11任一项所述的系统,其特征在于,所述第一预设时间段为1秒至2秒;或
所述第二预设时间段为1秒至2秒。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410321663.3A CN105242955B (zh) | 2014-07-07 | 2014-07-07 | 一种虚拟机磁盘输入输出调度方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410321663.3A CN105242955B (zh) | 2014-07-07 | 2014-07-07 | 一种虚拟机磁盘输入输出调度方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105242955A true CN105242955A (zh) | 2016-01-13 |
CN105242955B CN105242955B (zh) | 2019-01-29 |
Family
ID=55040611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410321663.3A Active CN105242955B (zh) | 2014-07-07 | 2014-07-07 | 一种虚拟机磁盘输入输出调度方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105242955B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648472A (zh) * | 2016-12-30 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种基于linux操作系统的磁盘性能优化方法及系统 |
CN107688483A (zh) * | 2017-09-04 | 2018-02-13 | 郑州云海信息技术有限公司 | 一种读写控制方法及控制装置 |
CN108509288A (zh) * | 2018-04-16 | 2018-09-07 | 杭州时趣信息技术有限公司 | 一种数据读写的方法、系统、设备及计算机可读存储介质 |
CN108762665A (zh) * | 2018-04-08 | 2018-11-06 | 中兴通讯股份有限公司 | 一种控制存储设备读写的方法及装置 |
US11546644B2 (en) | 2017-03-29 | 2023-01-03 | Huawei Technolgoies Co., Ltd. | Bandwidth control method and apparatus, and device |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102156665A (zh) * | 2011-04-13 | 2011-08-17 | 杭州电子科技大学 | 一种虚拟化系统竞争资源差异化服务方法 |
US20130081014A1 (en) * | 2011-09-23 | 2013-03-28 | Google Inc. | Bandwidth throttling of virtual disks |
CN103533032A (zh) * | 2013-09-26 | 2014-01-22 | 北京奇虎科技有限公司 | 带宽调节装置及方法 |
-
2014
- 2014-07-07 CN CN201410321663.3A patent/CN105242955B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102156665A (zh) * | 2011-04-13 | 2011-08-17 | 杭州电子科技大学 | 一种虚拟化系统竞争资源差异化服务方法 |
US20130081014A1 (en) * | 2011-09-23 | 2013-03-28 | Google Inc. | Bandwidth throttling of virtual disks |
CN103533032A (zh) * | 2013-09-26 | 2014-01-22 | 北京奇虎科技有限公司 | 带宽调节装置及方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648472A (zh) * | 2016-12-30 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种基于linux操作系统的磁盘性能优化方法及系统 |
CN106648472B (zh) * | 2016-12-30 | 2020-04-03 | 郑州云海信息技术有限公司 | 一种基于linux操作系统的磁盘性能优化方法及系统 |
US11546644B2 (en) | 2017-03-29 | 2023-01-03 | Huawei Technolgoies Co., Ltd. | Bandwidth control method and apparatus, and device |
CN107688483A (zh) * | 2017-09-04 | 2018-02-13 | 郑州云海信息技术有限公司 | 一种读写控制方法及控制装置 |
CN108762665A (zh) * | 2018-04-08 | 2018-11-06 | 中兴通讯股份有限公司 | 一种控制存储设备读写的方法及装置 |
CN108762665B (zh) * | 2018-04-08 | 2023-06-09 | 中兴通讯股份有限公司 | 一种控制存储设备读写的方法及装置 |
CN108509288A (zh) * | 2018-04-16 | 2018-09-07 | 杭州时趣信息技术有限公司 | 一种数据读写的方法、系统、设备及计算机可读存储介质 |
CN108509288B (zh) * | 2018-04-16 | 2020-09-08 | 杭州时趣信息技术有限公司 | 一种数据读写的方法、系统、设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105242955B (zh) | 2019-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102508619B (zh) | 存储系统服务质量控制方法、系统和存储系统 | |
CN106533723B (zh) | 虚拟资源调度方法、装置及系统 | |
CN102111337B (zh) | 任务调度方法和系统 | |
US8521986B2 (en) | Allocating storage memory based on future file size or use estimates | |
KR20190009694A (ko) | 멀티-티어 올-플래시 데이터센터의 자동 데이터 배치 관리자 | |
CN105242955A (zh) | 一种虚拟机磁盘输入输出调度方法及系统 | |
US10884667B2 (en) | Storage controller and IO request processing method | |
CN101593133A (zh) | 虚拟机资源负载均衡方法及装置 | |
CN106802772B (zh) | 数据回收的方法、装置及固态硬盘 | |
CN111190745A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN104484282A (zh) | 一种内存回收方法和装置 | |
CN108874324B (zh) | 一种访问请求处理方法、装置、设备及可读存储介质 | |
CN102685219B (zh) | San存储系统中通过动态扩容提高存储资源利用率的方法 | |
US20190306851A1 (en) | Operation mode switching method and user equipment | |
CN110601872A (zh) | 一种传输方法及装置、存储介质 | |
CN103729417A (zh) | 一种数据扫描的方法及装置 | |
CN109271293A (zh) | 一种硬盘数据的读取方法、装置及相关设备 | |
CN107766268A (zh) | 存储设备的中断发送方法、装置、系统、设备及存储介质 | |
CN109587075B (zh) | 一种业务处理方法、装置、设备及存储介质 | |
KR102212108B1 (ko) | 스토리지 오케스트레이션의 학습형 최적화 대상 볼륨 선정 방법 | |
CN109254928A (zh) | 一种日志处理的方法、系统、设备及计算机可读存储介质 | |
JP4778538B2 (ja) | ストレージデータ管理システム及びストレージデータ管理プログラム | |
CN110865768B (zh) | 写缓存资源分配方法、装置、设备以及存储介质 | |
CN110968258B (zh) | 存储盘的控制方法及设备 | |
CN107132991B (zh) | 虚拟存储系统的分层存储方法及虚拟存储系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for 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: 20190731 Address after: Shenzhen Futian District City, Guangdong province 518000 Zhenxing Road, SEG Science Park 2 East Room 403 Co-patentee after: Tencent cloud computing (Beijing) limited liability company Patentee after: Tencent Technology (Shenzhen) Co., Ltd. Address before: Shenzhen Futian District City, Guangdong province 518000 Zhenxing Road, SEG Science Park 2 East Room 403 Patentee before: Tencent Technology (Shenzhen) Co., Ltd. |