摘要:本研究针对当前主流的OpenStack云计算平台,在OpenStack的资源调度策略基础上,提出了一种基于OpenStack的资源调度改进遗传算法。
关键词:OpenStack;云计算;资源调度;改进遗传算法
引言
云计算已经成为当前IT业界最为火热的主题之一,它给传统IT资源的管理和使用方式带来了巨大的变化。随着云计算的广泛使用,如何让整个云数据中心的资源得到充分均衡地利用,已经成为云计算环境中资源调度方面最重要的问题之一。近年来OpenStack作为一个优秀的开源云计算系统发展迅速,已经成为主流的云计算平台技术架构。
1.OpenStack云计算理论基础及传统调度算法
1.1云计算
云计算是一种可以提供按需收费,能够弹性伸缩的一种新型的计算模式。正所谓弹性可伸缩,即资源分配和部署可以根据用户的需求时时的改动。云计算的这种资源使用模式,为用户通过网络提供访问计算资源的可能。比如存储,应用服务,软件程序等[1]。从用户角度来讲,云计算有以下特征:(1)按需服务,云计算可以为用户快速提供可用资源可用服务,并且能够根据用户的需求对资源进行使用,释放,这样,云服务商可以根据用户需求调度各种云资源;(2)资源池,云计算通过虚拟化技术将存入资源进行虚拟并组成资源池,让多个用户根据需求共同利用资源池中的资源;(3)弹性伸缩,云服务商可以根据用户的需求,快速的,弹性的分配,释放,回收资源,这对于用户而言,代表资源是无限的,任何需求都能够及时得到满足;(4)按需付费,按需服务的基本眼球要求按需付费,云计算商按照用户是使用的资源进行按量计费,满足了用户的需求,当然,这些资源也是虚拟抽象出来的资源,比如CPU,内存,硬盘,带宽等。
1.2虚拟化技术
虚拟化技术是云计算IaaS层核心组成部分,虚拟化也可以理解为对物理资源的抽象化。其本质是隔离了软件和硬件的一种中间件技术,将物理底层进行屏蔽,并为上层提供统一的接口服务。虚拟化的对象可以划分为服务器的虚拟化,网络的虚拟化,存储的虚拟化等多种不同形式。本文的资源调度主要针对的是服务器的虚拟化。服务器虚拟化是把一台服务器抽象成为多台服务器,这样一台物理主机就可以变成多台虚拟机,并且多台虚拟机是互相独立的,是完全隔离的。这样保证了虚拟机的安全性与可靠性。服务器虚拟化主要是将物理的CPU,内存,硬盘,网络设备,I/O接口等资源进行抽象。其中CPU虚拟化会将物理的CPU虚化成多个虚拟的CPU。这样,多个虚拟的CPU可以提高物理CPU的利用率。内存虚拟化将物理内存抽象成多个虚拟内存,内存空间完全隔离;网络设备和I/O接口虚拟化,就是将真实的物理设备抽象为多个虚拟设备,为多台虚拟机进行I/O请求,提供服务[2]。
目前,较为流行的虚拟化管理软件有KVM,Xen,vSphere,本文研究的OpenStack云计算对KVM提供很好的支持。KVM是基于Linux内核对虚拟机进行管理的,所以它要求底层硬件必须都支持虚拟化。
1.3传统遗传算法
遗传算法按照自然界的生存法则,将具体问题抽象化,把需要解决的问题虚拟成为染色体,接着把这些染色体进行选择,交叉和变异,直到得到目标最优解。具体的算法过程按照以下描述,随机产生初始化种群后,通过不断地的选择,交叉,变异来优化,调度,扩大下一代种群搜索空间。并利用适应度函数对已经编码的种群进行优胜劣汰,留下适应度较高的个体,淘汰掉适应度较低的个体。筛选完个体之后,由新的个体产生新的种群。
2.改进资源调度遗传算法
2.1改进资源调度遗传算法
传统的遗传算法,采用0,1的编码方式对染色体完成编码,但是资源调度的问题是有不同的分配方案的,需要明确每一个任务在每一个资源节点执行,传统的编码方式不能覆盖全部信息。本文采用一种间接编码方式,规定任务的数量就是染色体的长度。染色体的每一位表示一个任务,对应一个资源。比如染色体(3,5,2,6,8,7)表示染色体长度是6,需要执行6个任务,第一个任务被分配到节点3,第二个任务被分配到节点5,以此类推[3]。
2.2适应度函数
适应度函数表示个体被度量的函数,用来计算个体被选中的概率。适应度越大,个体越好,被选中概率越大,保证特性得到遗传。适应度函数的选择能够决定是否可以得到最优解,所以选择合适的是适应度函数非常重要。
满足用户QoS的需求有四个指标,分别是时间、可用性、成本、安全性。这四项指标能够满足用户的需求,决定最优解。目标函数值越大,代表优化效果越好,也代表算法性能高。因此本文选用目标函数的平方当做适应度函数。QoS四项指标按照权重系数来影响适应度函数。权重系数由资源的刚性和弹性偏好决定。也可以根据用户自身需求进行调节。
2.3改进遗传算法操作过程
遗传算法主要有三部分组成,选择,交叉,变异。这三个部分直接影响到遗传操作的效果。
2.3.1选择
选择是为了通过对当代种群的筛选,利用适应度函数对个体进行评价,完成对种群的不断优化。因为适应度函数的大小决定了个体被筛选的概率,所以可以将优良的个体通过评价筛选后遗传到下一代。本文采用的选择方法是赌轮选择法。当个体的适应度值比较大的时候,被选择的可能性也越大。
2.3.2交叉
交叉算子可以使我们的搜索空间扩大,是遗传算法中的基因重组,具有核心作用。交叉是指两个父体结构进行替换,重新生成两个新个体。交叉概率的选取非常重要,取值偏大会导致良好的结构被破坏,取值偏小会影响个体的产生速度。本文设施了一种自适应方式,避免交叉概率偏大或者偏小。调整公式1如下:
(公式1)
favg代表种群的品均适应度,fmax代表种群最大的适应度,f 代表交叉双方适应值比较大的一方。k1和k2在(0,1)之间取值,从公式中可以看出,个体适应度值接近最大适应度值的时候,交叉概率就小,而当适应度值和最大适应读值相等的时候,交叉概率等于0。
2.3.3变异
变异可以为算法找到最优解提供条件,可以丰富种群的多样性。变异操作可以使算法向着最优解的方向收敛。并且保持多样性,变异概率设置太大,不会加速寻找最优解,反而会破坏变异基因位[4]。本文设计了一种自适应的方式选取变异概率。调整公式2如下:
(公式2)
其中,favg代表种群的品均适应,fmax代表种群最大的适应度,代表变异双方适应值比较大的一方。k3和k4在(0,1)之间取值。从公式中可以看出,当变异个体的适应值接近最大的适应值的时候,变异概率就小,而适应度值与最大适应读值相同的时候,变异概率等于0。
综上所述,本文的交叉算法有更强的全局搜索能力,而本文的变异算法可以提高局部的搜索能力。通过选择交叉变异三种操作,遗传算法可以扩大全局搜索范围,提高局部搜索能力,使得问题可以加速并保证精准的寻求和接近最优解。
3.总结
综上,基于OpenStack云计算的资源调度改进遗传算法,可以有效的提高资源利用率,降低运营成本,更好的发挥了遗传算法的智能性作用,并且可以最大程度满足用户满足感。
参考文献:
[1] 郑路路. 基于OpenStack的资源调度算法研究[D]. 北京工业大学,2014.
[2] 程龙. 基于OpenStack的动态资源调度方法的研究与实现[D]. 西北大学,2014.
[3] 张梦. 基于OpenStack云平台的虚拟机资源调度方法研究[D]. 2017.
[4] 刘曙铭. 基于OpenStack的计算资源调度算法研究[D]. 2016.
论文作者:袁健明
论文发表刊物:《电力设备》2018年第31期
论文发表时间:2019/5/6
标签:资源论文; 算法论文; 种群论文; 个体论文; 概率论文; 函数论文; 用户论文; 《电力设备》2018年第31期论文;