云环境下网络与IO密集型应用资源优化策略
2019-05-10胡乃静游录金彭俊杰
胡乃静,游录金,彭俊杰
1(上海立信会计金融学院 信息管理学院,上海 201620)2(同济大学 控制科学与工程系,上海 201804)3(上海大学 计算机工程与科学学院,上海 200444)
1 引 言
随着IT技术的发展,计算经历了从单机、到多级,从局部到网络,从集中到分布式,再到广为应用的按需处理的云计算[1]模式.而云计算把网络上的服务资源虚拟化,给用户按需提供服务[2,3],是一种新的便捷有效的计算使用范式.
正是由于它的便捷性,因此云计算的需求不断增大,近年来云计算不断发展,数据中心的高能耗问题正越来越多的受到大家的关注,云计算时代,这一问题更加突出,因为资源的高度集中,使得云数据中心能耗备受关注,高效的能耗管理也将成为将来更大的挑战[4-6].据报导,2006年美国数据中心消耗了的电能大约为610亿千瓦时[7].根据IDC的市场调研报告结果显示,全球的企业每年要为能耗花费大概400亿美元[8].但是这些耗费大量能耗的数据中心,其利用效率低下,文献[9]的研究结果表明,目前数据中心服务器的平均利用率大约在11%~50%之间.
因此如果想降低能耗,提高数据中心的利用率是一个有效的方法.要想有效的提高利用效率,根据应用的类型对不同类型的应用进行不同的调度是一个有效的途径.云环境下,应用种类较多,考虑到网络密集型会和IO密集型应用是最为广泛应用的应用类型,本文研究了这两种典型类型的应用,提出了基于应用类型的调度模型,并通过大量实验证明了该模型的有效性,表明该模型可以有效的提高应用执行效率,为以后提出基于应用类型的调度策略奠定了一定的基础.
2 相关研究
在云计算中的节能调度已经得到广大学者的关注,如Hamscher等人根据基于中心化的调度器思想,给出分布式环境下作业调度系统的拓扑结构,该结构可以较好的应用于云环境中[10];Caron等人从提高云计算服务的角度,考虑了动态调度问题,给出了一种在保证QoS前提下的性能分析方法[11].文献[12]从节能的角度,对云数据中心的能耗进行了研究,并试图建立模型来对数据中心能耗进行分析预测.此外,很多学者也在其他不同角度对云计算的资源分配与能耗管理方面做了大量的研究,并取得了很多有意义的研究成果.如郝亮等针对云数据中心资源使用率、网络工作负载及实施功率情况,提出了成本约束下的云计算能耗资源调度优化算法,并提出根据全球时区性考虑电价成本,利用负载均衡的方法进行任务调度执行,并以此给出任务分层算法,通过增加任务执行的并行度与相关性,降低数据中心空闲概率[13].袁健等根据物理服务器的资源负载状态确定动态的监测周期,提出了当结点处于轻度过载或重度过载时,物理服务器自发地执行过载均衡方法,并且根据资源使用情况的虚拟机放置与优化选择算法[14].周景才等不同云计算用户群体的行为习惯对资源分配策略的影响,提出的基于用户行为特征的资源分配策略,即通过统计用户工作习惯与任务完成时间期望值的变化规律,建立用户行为特征信息表,从而预测出不同时间片内用户的任务提交规律以及用户期望完成时间,动态调整云计算系统的资源分配策略[15].许力等将云计算中的虚拟资源分配问题建模为多目标优化模型,并使用多目标进化算法求解该模型,从降低能耗的角度给出了一种虚拟资源动态分配策略[16].齐平等根据任务请求情况与云计算数据中心的特点,结合资源节点的负载情况,构建了基于任务执行行为的云系统可靠性度量模型,提出了一种基于遗传智能的可信云资源调度算法[17].朱亚会等针对云数据中心的资源使用情况,提出一种基于资源利用率均衡的虚拟机调度模型,将虚拟机调度问题抽象为不定维向量装箱模型,采用向量表示法,给出了自适应粒子群优化算法求解模型[18].
为了更加充分和有效的利用云计算的各种资源,调度模型逐步的发展完善,但是由于云计算环境的复杂性,这些调度算法仍然存在一些问题,这仍然需要广大学者进行不断的研究.基于应用类型的资源优化策略,目前也有部分学者对其进行了研究.文献[19]对CPU 密集型应用进行了广泛研究,分析了CPU 密集型应用的特点及其对资源的偏好性,得出了CPU密集型应用的特征参数,并建立起了CPU密集型应用的特征模型,同时还提出了一种针对CPU密集型应用的调度策略,该策略充分考虑应用的特点,即能够使物理主机的负载处于合理范围之内,又能保证CPU密集型应用的处理效率达到最优.但是这种处理策略只是针对于CPU密集型应用,研究其适用范围有一定局限,不适合于其他类型的应用.文献[20]对IO 密集型应用进行了研究,不过,其研究主要侧重于如何对IO密集型应用进行建模,并进行判定.为了使得对其他类型应用的资源使用效率也能更进一步提高,减低云数据中心的能耗,本文提出针对网络密集型应用和IO密集型应用的资源优化策略,以期为这两种典型类型应用的调度和资源优化策略打下一定的基础.
3 网络和IO密集型应用的资源分配策略
3.1 策略思想
对于云计算节能研究很多,对不同类型的应用使用不同的策略是一种有效的方法.而对于云应用而言,即便对其类型已知,如何进行有效调度也是需要探讨的问题.针对这种现状,论文结合不同应用的类型,对应用调度问题进行了探讨.提高应用的执行效率,让应用能够更快的执行完毕,从而提高数据中心的利用率,以达到减少能耗的目的.
在云计算环境中,根据云应用的资源偏好性,将应用进行分类.对于同种类型的应用,当多个应用进行叠加时,即多个类型相同的云应用在虚拟机上同时运行时,在充分利用资源的情况下,如何对应用进行调度,让云应用的执行效率能够较大.提高应用的执行效率,在某种程度上,可以看成是让应用的执行时间最小.
作为最广为使用的应用类型而言,IO密集型应用,当多个IO密集型应用同时运行时,这些IO应用共享IO资源.为了这些IO密集型应用更快的完成,即提高IO密集型应用的效率,对不同的IO应用分配不同的IO资源是一种可行的解决方法.对于比较小的IO应用,分配较多的IO的资源,让该应用尽快的完成,当应用完成后,把系统的IO资源集中分配给IO需求较大的应用,缩短其执行时间,以期让所有IO密集型应用都尽快完成,减少应用执行时间,提高应用执行效率.
与网络密集型应用一样,IO密集型应用也可以采取类似的处理的机制.在云环境中,带宽资源为所有应用所共享,对于网络密集型应用,根据其对网络带宽的需求,合理的分配资源,如对于网络带宽小的应用,可以分配相对充裕带宽资源,以缩短其执行时间.这样可以保证,在其执行完毕后,减少资源竞争,从而最终使得全部网络密集型应用都能够以尽可能小的时间完成,提高所有应用执行效率.
分析应用的本质,不难发现,对于网络密集型应用和IO密集型应用而言,其资源需求具有一定的类似性.如网络密集型需要通过网卡进行数据的发送与接收,这与IO密集型应用通过磁盘读写来处理数据相似.不管是网络带宽资源还是IO磁盘资源,网络密集型应用和IO密集型应用都是共享这些资源的.因此对于网络密集型和IO密集型应用,可以采用相同的调度处理策略,即通过感知应用对资源的需求,进行合理有效的调度.对于IO密集型应用而言,资源需求是应用需要读写的文件大小.而对于网络密集型应用而言,资源需求则主要是指通过网络发送/接收的文件大小.不管是网络密集型应用,还是IO密集型应用,通过资源使用情况,对带宽资源或IO资源进行优化,即对应用以不同的权重分配相应的带宽资源或IO资源,以缩短相应应用的执行时间,提升云中心应用的执行效率.
3.2 资源预测模型
经过上述分析,为了预测不同类型应用叠加时的执行时间,可以采用如下给出的模型进行预测:
(1)
对公式(1)进行化简得:
(2)
其中,各参数含义如下:
T:单个任务执行时间
C:任务需要的关键部件个数,对IO密集型任务而言,是磁盘数;对网络密集型任务而言,是网卡数
N:叠加任务数
Time:任务完成时间
在多个同种类型的应用被分配到相同的虚拟机上时,如果应用个数很少,此时应用的执行时间最短,但虚拟机资源不会被充分利用;当叠加的应用个数较多,会导致各个应用之间竞争资源,此时虽然资源会被充分利用,但是应用执行效率低下,应用的执行时间很长,因为很多时间浪费在资源竞争上.因此在充分利用资源和满足用户服务质量的前提下,如何确定合理的叠加的应用个数,是一个重要的问题.即确定一个合理的叠加个数的阈值,当叠加的应用个数小于这个阈值的时候,说明可以直接将应用放置在该虚拟机上.当放置的应用个数大于该阈值时,说明资源已经被充分使用,而且再添加应用会导致应用执行时间增加,使用于服务质量降低,因此,需要在新启一台虚拟机运行该应用.
用户的服务质量,在这里可以简化为应用的执行时间,根据上面建立的应用执行时间预测模型,我们可以确定出合理的叠加的应用个数.根据公式(2)可以求得叠加的应用个数:
(3)
此处的Time,我们可以根据用户服务质量确定,这里我们引入容忍系数α,即
Time=α×T,α≥1
(4)
将公式(3)和公式(4)合并,得:
(5)
根据公式(5),引入容忍参数α1,我们可以得到机器的状态公式:
(6)
当S=0的时候,应用的执行时间最短,但是这个时候资源并不能充分使用,造成了严重的资源浪费.当S=1时,虽然应用执行时间会有所增加,但是增加的并不多,还在可以接受的应用服务质量下,而且此时资源被充分利用.当S=2时,此时资源虽然充分利用,但是由于应用个数太多,各应用之间竞争激烈,导致应用执行时间会显著增长,服务质量会显著下降.因此,为了兼顾应用执行效率和用户服务质量,我们推荐机器处于状态1.
3.3 资源调度策略
对于IO密集型应用或者网络密集型应用,假设其应用共有N个,则各种资源的权重可按照如下方式计算:
对于所有应用,按照其资源使用需求,采用由小到大排序,得到应用的顺序为A1,A2,…,AN-1,AN,对应的应用大小为SizeA1,SizeA2,…,SizeAN-1,SizeAN.
(7)
权重归一化,得到应用Ai的最终资源权重WAi如下:
(8)
在计算每个应用的权重后,对于IO密集型和者网络密集型两类典型应用可以采用如下方法进行调度:
1)初始化、更新应用的资源需求权重列表,对于所有的应用而言,采用公式(7)计算其资源需求权重;
2)根据资源权重表和当前的资源对各个应用分配资源.对于IO密集型应用来说,根据资源权重表给各个应用分配IO读写资源;对于网络密集型应用来说,根据资源权重表给各个应用分配网络带宽资源;
3)当有应用执行完成,转向步骤4);否则转到步骤1),更新资源权重需求表;
4)算法结束,退出.
4 实验结果与分析
4.1 实验环境
本文的实验环境基于CloudStack5.0云计算平台,搭建了一个小型的云计算系统,其中有1个管理服务器Management,2个主机节点Host,和1个存储节点Storage.主机节点Host的操作系统为64位Redhat server5.5,处理器4核Intel I5 3470@3.60GHz,内存8GB DDR3,硬盘容量1TB.Host上的虚拟机,操作系统为64位Ubuntu14.04版本,处理器为1GHz*2,内存为2GB,网络带宽为150Mbps,磁盘为7200/分钟1TB.具体参数如表1所示.
表1 硬件配置参数
Table 1 Configurations of hardware
节点CPU内存硬盘磁盘转速管理I3 2130@3.4GHz4GB DDR31TB5400 r/m存储I5 3470@3.60GHz8GB DDR31TB5400 r/m主节点1I5 3470@3.60GHz8GB DDR31TB7200 r/m主节点2AMD IIX4 B97@3.2GHz4GB DDR3500GB7200 r/m
4.2 结果与分析
为了验证文中所提出的调度策略,针对IO密集型应用和网络密集型应用进行了实验验证.对于IO密集型应用采用linux环境下dd命令在本地生成大量不同大小的文件;而对于网络密集型应用则采用的是应用Socket进行各种不同大小的文件传输(客户端无需从磁盘读取数据,也不考虑磁盘IO对实验的影响).
1)IO密集型应用实验.通过采用在默认策略和文中提出的策略,在1核虚拟机上测试使用dd命令生成不同的文件,对所需的时间进行比较.虽然该应用也需要用到大量的CPU,但生成文件,主要需要产生大量的IO操作.该实验包括三部分,即生成256MB文件;生成256MB和512MB文件所用时间;生成256MB、512MB和1024MB文件所用时间.比较在不同情形下,两种策略完成应用所需的时间,具体实验结果如图1-图3.其中图1给出的是两种策略下生成256MB文件所需的时间;图2给出的是生成256MB和512MB文件所需的时间,图3给出的是生成256MB、512MB和1024MB文件所需的时间.
图1 创建256MB文件所需的时间Fig.1 Time for generation of 256MB file
图2 同时创建256MB和512MB文件所需的时间Fig.2 Time for generation of 256MB and 512MB files
图3 同时生成256MB、512MB和1024MB文件所需时间Fig.3 Time for generation of 256MB,512MB,1024MB files
从图1中可以看出,当只是创建单个文件时,文中所给出策略和默认策略,其所需的时间基本相当,这是因为不管是哪种策略,系统都只是处理单个任务, 资源消耗相当,时间与差不多.从图2从图中可以看出,当需要创建两个文件时,文中所提出的策略就有明显的优势,即创建完成2个文件时,本文所提出的方法除了处理在创建512MB文件比默认方法有几乎可以忽略的延长之外,创建256MB文件的时间和完成两个任务的总时间都大大降低.如创建256MB文件时,文中所提出的时间比较默认策略所需的时间降低了18%,而完成两个文件的创建的总时间,文中的方法也比默认策略降低了6%.这主要是本文所提出的策略,在多个应用到来的时候,总是有限将资源满足元小任务/执行时间更短的任务尽快完成,然后再去完成大任务/执行时间长的任务,这样调度的优势是,小任务可以在尽可能短的时间内完成,从而减少系统在不同任务之间的切换,因此,不仅可以加快小任务的执行速度,同时也可以降低所有任务的总时间消耗,从而达到节能的目的.当然,由于该策略是在有效考虑小任务,所以大任务的执行时间会比默认策略稍稍延长,但由于大任务本身的执行时间都比较长,因此,相对而言,对于大任务影响很小.这种性能的提升在任务多的情况下,体现更明显.如图3所示,创建256MB文件时,文中所提出的策略执行时间比默认策略降低31%;而创建的512MB文件,文中提出策略也比默认策略降低6%,三个文件创建完成的总时间比默认策略降低9%;而三个任务中最大的,创建1024MB文件采用文中提出策略相对于默认策略略有延长,执行时间仅增加1.3%.可见文中提出的策略对于多任务下的IO密集型应用的调度具有明显的优势,其原因与图2中的原因相同.
2)网络密集型应用实验.采用文中提出策略与默认策略,在1核虚拟机上测试使用Socket传输文件,比较两种策略的效率.该实验包括三部分,即传输256MB文件;传输256MB和512MB文件所用时间;传输256MB、512MB和1024MB文件所用时间.三种情形下,两种策略下所需的时间结果如图4-图6.其中图4给出的是两种策略下传输256MB文件所需的时间;图5给出的是传输256MB和512MB文件所需的时间,图6给出的是传输256MB、512MB和1024MB文件所需的时间.
图4 两种策略传输256MB文件所需的时间Fig.4 Time for transmission of 256MB file
图5 同时传输256MB和512MB文件所需时间Fig.5 Time for transmission of 256MB and 512MB files
图6 同时传输256MB、512MB和1024MB文件所需时间Fig.6 Time for transmission of 256MB,512MB,1024MB files
从图4中可以看出,当传输单个文件时,文中所给出策略和默认策略,其所需的时间基本相当,这是因为不管是哪种策略,系统都只是处理单个任务,通过网络进行传输,资源消耗相当,时间与差不大.从图5从图中可以看出,当传输256MB和512MB两个文件时,采用本文所提出的方法,除了传输512MB文件比默认方法增加了可以忽略的0.7%之外,传输256MB文件的时间比默认方法降低了21.6%,传输两个文件的总时间降低了9%.同样,图6的结果表明,采用文中所提出的方法,除了传输1024MB的文件时间比默认策略增加了大约2.4%外,传输256MB文件时间降低了约20%,传输512MB文件时间降低了约11%,且传输三个文件的总时间降低了约6%.可见,文中提出的策略对于网络密集型应用同样的能够大幅提升其应用的执行效率,提高资源的使用效率,降低数据中心能耗.其原因与IO密集型应用中的分析相同,因为该策略优先考虑了小任务的执行,从而减少了系统在不同任务之间的切换,因此,效率具有明显提升.
5 结 论
本文针对IO密集型应用和网络密集型应用进行分析,提出了针对这两种典型应用的资源优化策略,其基本思想是采用小任务优先处理,大任务后处理的策略,从而加速小任务执行,降低任务切换带来的额外开销,从而提高应用的执行效率.实验结果表明,文中所提出的策略不仅可以有效的提升IO密集型和网络密集型应用执行效率,提供云环境下的资源使用效率,而且,可以降低云数据中心的能量消耗,为以后提出更好的资源分配与调度提供了基础.