基于虚拟化平台的细粒度资源调度系统及方法
【技术领域】
[0001]本发明涉及云计算技术领域,特别涉及一种基于虚拟化平台的细粒度资源调度系统及方法。
【背景技术】
[0002]云计算采用资源虚拟化技术,对分布式的计算、存储、网络等资源进行虚拟化,形成一个或多个逻辑上聚合的资源池,资源池的资源完全共享。然而,在资源池内,虚拟资源使用灵活多变,如何进行资源调度,即在满足虚拟资源及应用业务的服务质量的同时,如何按需分配虚拟资源、有效利用资源池资源,将成为最大的挑战。
[0003]传统的资源调度方法多采用负载均衡、资源整合等分布式资源调度方法。首先对服务器负载进行分析,采用虚拟机迀移的资源调度方式实现。但是虚拟机迀移的资源调度粒度太大,对迀移的虚拟机本身来说,会造成一段时间的运行中断;对于服务器来说,迀移过程本身会消耗较多的CPU、网络等资源,因此不可避免的还会影响到同服务器节点上其他虚拟机的性能。
[0004]另外,为了减少虚拟机迀移次数,在服务器节点部署虚拟机时,采取装箱原理,尽量使虚拟机与服务器节点的映射关系趋于合理,减少不必要的虚拟机迀移,然而事实上,随着虚拟机及其应用业务的运行,虚拟机的负载是不断变化的,导致各个服务器节点之间的负载也会波动,为了有效利用服务器节点资源,不可避免也需要采取虚拟机迀移的资源调度方式,因此,利用装箱原理的虚拟机部署还是不能改变虚拟机迀移本身的问题。
【发明内容】
[0005]有鉴于此,有必要提供一种对迀移虚拟机以及同服务器节点内其他虚拟机的影响都较小的细粒度资源调度系统及方法。
[0006]一种基于虚拟化平台的细粒度资源调度系统,其包括如下单元:
[0007]负载信息获取单元,用于收集当前时间点服务器内η个虚拟机的负载值,获取服务器内所有虚拟机的平均负载值,并计算各虚拟机的负载值与平均负载值的负载差值;
[0008]矩阵生成单元,用于记录当前时间点η个虚拟机的负载差值,并判断总共记录的时间点个数是否小于预设次数m,如果是则启动负载信息获取单元的功能,否则保留最近m个时间点的负载差值,形成共m个时间点下η个虚拟机的负载差值数据组成一个m行η列的负载差值矩阵,并启动矩阵分析单元的功能;
[0009]矩阵分析单元,用于对当前时间点的负载差值矩阵进行逐列分析,并判断所有虚拟机都是否分析了一遍,是则当前时间点的负载分析已经完成,启动资源配置单元的功能;否则启动负载波动判断单元的功能;
[0010]负载波动判断单元,用于判断当前时间点的负载差值矩阵的列数据的绝对值是否均小于或等于某一个预设固定的负载波动幅值r,如果是将该虚拟机的负载调度值置为0,并启动矩阵分析单元的功能,否则启动负载调度值调整单元的功能;
[0011]负载调度值调整单元,用于判断当前时间点的负载差值矩阵的列数据大于r的次数是否大于或等于第一预设次数kl,如果是则将计算该虚拟机最近kl次大于r的负载差值的平均值,作为该虚拟机的负载调度值,并启动矩阵分析单元的功能;否则继续判断当前时间点的负载差值矩阵的列数据小于-r的次数是否大于或等于第二预设次数k2,如果是将计算该虚拟机最近k2次小于-r的负载差值的平均值,作为该虚拟机的负载调度值,并启动矩阵分析单元的功能,否则将该虚拟机的负载调度值置为0,并启动矩阵分析单元的功能;
[0012]资源配置单元,用于修正各虚拟机的负载调度值,并判断虚拟机的负载调度值是否同时存在正值和负值,如果是则从负载调度值中选择一个最大值和最小值的虚拟机,增加负载调度值最大的虚拟机的资源配置,减少负载调度值最小的虚拟机的资源配置,否则等待预设时间T后启动负载信息获取单元的功能。
[0013]本发明还提供一种基于虚拟化平台的细粒度资源调度方法,其包括如下步骤:
[0014]S1、收集当前时间点服务器内η个虚拟机的负载值,获取服务器内所有虚拟机的平均负载值,并计算各虚拟机的负载值与平均负载值的负载差值;
[0015]S2、记录当前时间点η个虚拟机的负载差值,并判断总共记录的时间点个数是否小于预设次数m,如果是则跳转到步骤SI,否则保留最近m个时间点的负载差值,形成共m个时间点下η个虚拟机的负载差值数据组成一个m行η列的负载差值矩阵;
[0016]S3、对当前时间点的负载差值矩阵进行逐列分析,并判断所有虚拟机都是否分析了一遍,是则当前时间点的负载分析已经完成,跳到步骤S6 ;否则跳转到步骤S4 ;
[0017]S4、判断当前时间点的负载差值矩阵的列数据的绝对值是否均小于或等于某一个预设固定的负载波动幅值r,如果是将该虚拟机的负载调度值置为0,并跳到步骤S3,否则跳转到步骤S5 ;
[0018]S5、判断当前时间点的负载差值矩阵的列数据大于r的次数是否大于或等于第一预设次数kl,如果是将计算该虚拟机最近kl次大于r的负载差值的平均值,作为该虚拟机的负载调度值,跳到步骤S3 ;否则继续判断当前时间点的负载差值矩阵的列数据小于_r的次数是否大于或等于第二预设次数k2,如果是将计算该虚拟机最近k2次小于-r的负载差值的平均值,作为该虚拟机的负载调度值,跳到步骤S3 ;否则将该虚拟机的负载调度值置为0,并跳到步骤S3 ;
[0019]S6、修正各虚拟机的负载调度值,并判断虚拟机的负载调度值是否同时存在正值和负值,如果是则从负载调度值中选择一个最大值和最小值的虚拟机,增加负载调度值最大的虚拟机的资源配置,减少负载调度值最小的虚拟机的资源配置,否则等待预设时间T后跳到步骤SI。
[0020]本发明提供的基于虚拟化平台的细粒度资源调度系统及方法通过本发明具有以下有益效果:1、资源调度粒度小,不对虚拟机进行迀移,对服务器负载影响较小,并可根据虚拟机资源负载情况按需配置相应资源;2、可根据系统应用业务的特点,决定资源负载的波动范围、以及资源调度的激进程度;3、资源调度不设置固定的负载上下限阈值,当虚拟机的整体负载上升或下降时,服务器内各个虚拟机仍然可以处于动态平衡状态;4、资源调度模型综合考虑了虚拟机负载抖动、正在开机、正在进行负载测试等异常现象,并且待虚拟机负载趋于稳定时,才对虚拟机资源进行重配置。
【附图说明】
[0021]图1是本发明实施例的基于虚拟化平台的细粒度资源调度系统结构框图;
[0022]图2是负载差值矩阵示意图;
[0023]图3是本发明实施例的基于虚拟化平台的细粒度资源调度方法流程图。
【具体实施方式】
[0024]如图1所示,一种基于虚拟化平台的细粒度资源调度系统,其包括如下单元:
[0025]负载信息获取单元10,用于收集当前时间点服务器内η个虚拟机的负载值,获取服务器内所有虚拟机的平均负载值,并计算各虚拟机的负载值与平均负载值的负载差值。
[0026]矩阵生成单元20,用于记录当前时间点η个虚拟机的负载差值,并判断总共记录的时间点个数是否小于预设次数m,如果是则启动负载信息获取单元10的功能,否则保留最近m个时间点的负载差值,形成共m个时间点下η个虚拟机的负载差值数据组成一个m行η列的负载差值矩阵,并启动矩阵分析单元30的功能。
[0027]矩阵分析单元30,用于对当前时间点的负载差值矩阵进行逐列分析,并判断所有虚拟机都是否分析了一遍,是则当前时间点的负载分析已经完成,启动资源配置单元60的功能;否则启动负载波动判断单元40的功能。
[0028]负载波动判断单元40,用于判断当前时间点的负载差值矩阵的列数据的绝对值是否均小于或等于某一个预设固定的负载波动幅值r,如果是将该虚拟机的负载调度值置为0,并启动矩阵分析单元30的功能,否则启动负载调度值调整单元50的功能。
[0029]负载调度值调整单元50,用于判断当前时间点的负载差值矩阵的列数据大于r的次数是否大于或等于第一预设次数kl,如果是将计算该虚拟机最近kl次大于r的负载差值的平均值,作为该虚拟机的负载调度值,并启动矩阵分析单元30的功能;否则继续判断当前时间点的负载差值矩阵的列数据小于_r的次数是否大于或等于第二预设次数k2,如果是将计算该虚拟机最近k2次小于-r的负载差值的平均值,作为该虚拟机的负载调度值,并启动矩阵分析单元30的功能,否则将该虚拟机的负载调度值置为0,并启动矩阵分析单元30的功能;
[0030]资源配置单元60,用于修正各虚拟机的负载调度值,并判断虚拟机的负载调度值是否同时存在正值和负值,如果是则从负载调度值中选择一个最大值和最小值的虚拟机,增加负载调度值最大的虚拟机的资源配置,减少负载调度值最小的虚拟机的资源配置,否则等待预设时间T后启动负载信息获取单元10的功能。
[0031]可选地,第一预设次数值kl的范围为m/2 < kl彡m。
[0032]可选地,第二预设次数值k2的范围为m/2 < k2彡m。
[0033]以下结合图2、3对本发明实施例的基于虚拟化平台的细粒度资源调度方法做更进一步的说明,由于本发明实施例的方法与系统是一一对应的,因此以下内容亦可以用于解释本发明实施例系统。本发明实施例适用于CPU、内存、网络等虚拟资源。以下流程中:
[0034]η:表示服务器内参与资源动态配置的虚拟机个数;m:表示记录负载差值的历史时间点个数:表示允许与平均负载的波动幅值;kl:表示能够容忍负载差值超过r的次数,该值不大于m,但大于m/2 ;k2:表示能够容忍负载差值低于_r的次数,该值不大于m,但大于m/2 ;T:表示每次资源调度的时间周期,该值不小于负载收集的时间周期,否则会出现收集重复数据的情况。kl/m表示对超过平均负载的容忍度,该值越小(最小值大于1/2)表示资源调度越激进,越大(最大为I)表示资源调度越保守;k2/m表示对低于平均负载的容忍度,该值越小(最小值大于1/2)表示资源调度越激进,越大(最大为I)表示资源调度越保守。
[0035]S01、开始进行负载收集,收集当前时间点服务器内η个虚拟机的负载值(即资源利用率),并跳转到步骤S02。
[0036]S02、计算服务器内虚拟机的平均负载aL。由于各个虚拟机的资源配置存在差异,可以采取加权平均计算的方法,比如,权重值可选择等于虚拟机该项配置资源值
;并跳转到步骤S03。
[0037]S03、判断收集的时间点是否小于预设次数m,如果是表示记录的历史数据不够,等待预设时间T后跳转到步骤SOl ;否则跳转到步骤S04。
[0038]S04、保留最近m个时间点的负载差值数据,其他负载差值数据删除,此时共m个时间点下η个虚拟机的负载差值数据组成一个m行η列的负载差值矩阵。该矩阵如图2所示,矩阵的行对应每个时间点,该矩阵的列对应每个虚拟机。跳转到步骤S05。
[0039]S05、对当前时间点的负载差值矩阵进行逐列分析。
[0040]S06、判断所有虚拟机都是否分析了一遍,是则当前时间点的负载分析已经完成,跳到步骤S07 ;否则跳转到步骤S08。
[0041]S07、对每个虚拟机的负载调度值进行异常分析。如果虚拟机负载调度值为正,则调查该虚拟机负载为什么负载超标,如果该虚拟机为“正在启动”、“正在测试”或其他允许情况,则将该虚拟机的负载调度值置0,并将该虚拟机当前时间点的负载差值置O (以免影响下一个时间点的负载分析)。跳转到步骤S14。
[0042]S08、分析判断当前时间点的负载差值矩阵的列数据的绝对值是否都不大于某一个固定的负载波动幅值r,并跳转到步骤S09。
[0043]S09、判断该虚拟机近段时间(T*m)的负载都在允许的波动范围内,是跳转到步骤S16,否则跳转到步骤S10。
[0044]S10、如果当前时间点负载差值矩阵的列数据存在大于r,则表示该虚拟机的负载曾经过大且超过了允许的波动范围,跳转到步骤S11。
[0045]S11、判断大于r的次数是否小于第一预设次数kl次,如果是表示该虚拟机负载差值虽然多次大于r,但仍然未趋于稳定,不足以触发调度该虚拟机的资源,跳转到步骤S12,否则表示该虚拟机的负载差值多次大于r,并且趋于稳定,可以触发调度该虚拟机的资源跳转到步骤S17。可选地,第一预设次数值kl的范围为m/2 < kl彡m。
[0046]S12、如果当前时间点负载差值矩阵的列数据存在小于-r,则表示该虚拟机的负载曾经过小且超过了允许的波动范围,跳转到步骤S13。
[0047]S13、判断小于-r的次数是否小于第二预设次数k2次,是表示该虚拟机负载差值虽然多次小于-r,但仍然未趋于稳定,不足以触发调度该虚拟机的资源,则跳转到步骤S16,否则表示该虚拟机的负载差值多次小于-r,并且趋于稳定,可以触发调度该虚拟机的资源,跳转到步骤S17。可选地,第二预设次数值k2的范围为m/2 < k2彡m。
[0048]S14、判断虚拟机的负载调度值中还同时存在正值和负值,是则跳到步骤S15,否则跳转到步骤S01。
[0049]S15、开启新线程,开始细粒度资源重配置,从负载调度值中选择一个最大值(正值)和最小值(负值)的虚拟机,增加负载调度值最大的虚拟机的资源配置,减少负载调度值最小的虚拟机的资源配置。比如,对于CPU资源,对于最大值的虚拟机,增加该虚拟机的权重值和能力值,对于最小值的虚拟机,减少该虚拟机的权重值和能力值。并跳转到步骤SOlo
[0050]S16、将该虚拟机的负载调度值置为0,并跳转到步骤S05。
[0051]S17、计算最近超过可控范围的kl次(或k2次)负载差值平均值,作为该虚拟机的负载调度值,并跳转到步骤S05。
[0052]由于虚拟机应用负载具有动态波动性,在初始配置虚拟机资源时,若根据峰值负载为虚拟机分配资源,则资源浪费较多;若根据波谷负载分配资源,则可能会影响虚拟机及应用业务的性能。
[0053]本发明通过收集服务器节点内各个虚拟机的负载值,设计资源调度分析模型,裁决各个虚拟机应分得的资源量,在资源配置不符合要求的情况下,调用细粒度资源调度方式为虚拟机动态增减资源。具有以下有益效果:
[0054]1、资源调度粒度小,不对虚拟机进行迀移,对服务器负载影响较小,并可根据虚拟机资源负载情况按需配置相应资源;
[0055]2、可根据系统应用业务的特点,设定有关资源分析模块的参数信息,决定资源负载的波动范围、以及资源调度的激进程度;
[0056]3、资源调度不设置固定的负载上下限阈值,采取加权计算平均负载和累计历史性数据的方式,当虚拟机的整体负载上升或下降时,服务器内各个虚拟机仍然可以处于动态平衡状态;
[0057]4、资源调度模型综合考虑了虚拟机负载抖动、正在开机、正在进行负载测试等异常现象,并且待虚拟机负载趋于稳定时,才对虚拟机资源进行重配置。
[0058]结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机储存器、内存、只读存储器、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其他形式的存储介质中。
[0059]可以理解的是,对于本领域的普通技术人员来说,可以根据本发明的技术构思做出其它各种相应的改变与变形,而所有这些改变与变形都应属于本发明权利要求的保护范围。
【主权项】
1.一种基于虚拟化平台的细粒度资源调度系统,其包括如下单元: 负载信息获取单元,用于收集当前时间点服务器内η个虚拟机的负载值,获取服务器内所有虚拟机的平均负载值,并计算各虚拟机的负载值与平均负载值的负载差值; 矩阵生成单元,用于记录当前时间点η个虚拟机的负载差值,并判断总共记录的时间点个数是否小于预设次数m,如果是则启动负载信息获取单元的功能,否则保留最近m个时间点的负载差值,形成共m个时间点下η个虚拟机的负载差值数据组成一个m行η列的负载差值矩阵,并启动矩阵分析单元的功能; 矩阵分析单元,用于对当前时间点的负载差值矩阵进行逐列分析,并判断所有虚拟机都是否分析了一遍,是则当前时间点的负载分析已经完成,启动资源配置单元的功能;否则启动负载波动判断单元的功能; 负载波动判断单元,用于判断当前时间点的负载差值矩阵的列数据的绝对值是否均小于或等于某一个预设固定的负载波动幅值r,如果是将该虚拟机的负载调度值置为O,并启动矩阵分析单元的功能,否则启动负载调度值调整单元的功能; 负载调度值调整单元,用于判断当前时间点的负载差值矩阵的列数据大于r的次数是否大于或等于第一预设次数kl,如果是则将计算该虚拟机最近kl次大于r的负载差值的平均值,作为该虚拟机的负载调度值,并启动矩阵分析单元的功能,否则继续判断当前时间点的负载差值矩阵的列数据小于_r的次数是否大于或等于第二预设次数k2,如果是将计算该虚拟机最近k2次小于-r的负载差值的平均值,作为该虚拟机的负载调度值,并启动矩阵分析单元的功能,否则将该虚拟机的负载调度值置为O,并启动矩阵分析单元的功能; 资源配置单元,用于修正各虚拟机的负载调度值,并判断虚拟机的负载调度值是否同时存在正值和负值,如果是则从负载调度值中选择一个最大值和最小值的虚拟机,增加负载调度值最大的虚拟机的资源配置,减少负载调度值最小的虚拟机的资源配置,否则等待预设时间T后启动负载信息获取单元的功能。2.如权利要求1所述的基于虚拟化平台的细粒度资源调度系统,其特征在于, 第一预设次数值kl的范围为m/2 < kl ^ m03.如权利要求1所述的基于虚拟化平台的细粒度资源调度系统,其特征在于, 第二预设次数值k2的范围为m/2 < k2 ^ m?4.一种基于虚拟化平台的细粒度资源调度方法,其包括如下步骤: 51、收集当前时间点服务器内η个虚拟机的负载值,获取服务器内所有虚拟机的平均负载值,并计算各虚拟机的负载值与平均负载值的负载差值; 52、记录当前时间点η个虚拟机的负载差值,并判断总共记录的时间点个数是否小于预设次数m,如果是则跳转到步骤SI,否则保留最近m个时间点的负载差值,形成共m个时间点下η个虚拟机的负载差值数据组成一个m行η列的负载差值矩阵; 53、对当前时间点的负载差值矩阵进行逐列分析,并判断所有虚拟机都是否分析了一遍,是则当前时间点的负载分析已经完成,跳到步骤S6 ;否则跳转到步骤S4 ; 54、判断当前时间点的负载差值矩阵的列数据的绝对值是否均小于或等于某一个预设固定的负载波动幅值r,如果是将该虚拟机的负载调度值置为0,并跳到步骤S3,否则跳转到步骤S5 ; 55、判断当前时间点的负载差值矩阵的列数据大于r的次数是否大于或等于第一预设次数kl,如果是将计算该虚拟机最近kl次大于r的负载差值的平均值,作为该虚拟机的负载调度值,跳到步骤S3 ;否则继续判断当前时间点的负载差值矩阵的列数据小于_r的次数是否大于或等于第二预设次数k2,如果是将计算该虚拟机最近k2次小于-r的负载差值的平均值,作为该虚拟机的负载调度值,跳到步骤S3 ;否则将该虚拟机的负载调度值置为O,并跳到步骤S3 ; S6、修正各虚拟机的负载调度值,并判断虚拟机的负载调度值是否同时存在正值和负值,如果是则从负载调度值中选择一个最大值和最小值的虚拟机,增加负载调度值最大的虚拟机的资源配置,减少负载调度值最小的虚拟机的资源配置,否则等待预设时间T后跳到步骤SI。5.如权利要求4所述的基于虚拟化平台的细粒度资源调度方法,其特征在于, 第一预设次数值kl的范围为m/2 < kl ^ m06.如权利要求4所述的基于虚拟化平台的细粒度资源调度方法,其特征在于, 第二预设次数值k2的范围为m/2 < k2 ^ m?
【专利摘要】一种基于虚拟化平台的细粒度资源调度系统,其包括负载信息获取单元;矩阵生成单元;矩阵分析单元;负载波动判断单元;负载调度值调整单元;资源配置单元。本发明通过收集服务器节点内各个虚拟机的负载值,设计资源调度分析模型,裁决各个虚拟机应分得的资源量,在资源配置不符合要求的情况下,调用细粒度资源调度方式为虚拟机动态增减资源。本发明还提供一种基于虚拟化平台的细粒度资源调度方法。
【IPC分类】G06F9/50, G06F9/455
【公开号】CN104899072
【申请号】CN201510222110
【发明人】伍华风, 龚恋, 何龙, 王攀攀, 戴新发
【申请人】中国船舶重工集团公司第七0九研究所
【公开日】2015年9月9日
【申请日】2015年5月5日