关于之前cloudsim的研究,之前主要集中在云计算任务调度算法,后来又陆续扩展到云计算数据中心虚拟机资源调度算法中,从规模到算法的复杂度都十分的复杂,不仅需要考虑单数据中心,同时也需要考虑到跨区域的多数据中心间的调度问题,涉及到网络拥塞、数据可靠性等等方面的问题,整个过程延续了半年多,在此做一个小小的总结,后续陆续完善。
cloudsim可以对云计算中的任务调度和虚拟机资源调度进行仿真,这两种调度问题可以用下图进行阐述:
这两种调度问题有很多值得我们思考的地方,但是由于云计算系统比较庞大,所以有时候需要根据用户的需求或者站在不同的角度来考虑调度问题,clousim提供了能耗感知和非能耗感知的调度模型,cloudsim的整体框架可做如下划分:
在实际做的过程中,内容很多,LZ就主要摘取关键部分:
虚拟机资源调度,能耗模型定义:
负载评估模型定义:
改进最高潜能迁移算法 |
输入:热点主机列表 输出:迁移虚拟机列表 BEGIN 获取热点主机列表 For 热点主机列表中的每一个热点主机 获取热点主机 已部署虚拟机列表 ; 计算热点主机上每个虚拟机的负载关联度 ; 将虚拟机按照负载关联度 降序排列; For 已排序虚拟机列表的每一个虚拟机 If迁移当前虚拟机解除了所在热点主机的超载状态 标记虚拟机 ,并将其加入 ; Else 标记虚拟机 ; If 的个数不为0 For 的每个虚拟机 计算虚拟机的迁移能耗差 ; 寻找当前最大 ,并将虚拟机标记; 迁移已标记虚拟机; Else While(热点主机仍处于超载状态) 按顺序迁移已排序虚拟机; END |
云计算任务调度:
遗传蚁群算法 |
输入:虚拟机序列VM,云计算任务序列J 输出:云计算任务分配方案 BEGIN 初始 化遗 传算 法的变 异概率Pm、交 叉概率Pc、种 群规 模 大小、进 化代 数等 参 数; 初 始 化虚拟机资 源集合J及蚁群算法中蚂蚁数量m、启 发因 子 、期望启发因子 及 信 息素挥 发系 数 的 最大 值、信 息素强度Q等参数; While(nc<进 化代 数){ 分 别对 进 行二进 制编码; 选 择个 体进 行交 叉; 分 别 进 行多 点变 异; 对 进 行解 码; While(所 有蚂 蚁是 否已 完 成任 务分 配){ 将 m只蚂 蚁随 机分 配到虚 拟机 序J上; 初 始化每 只蚂 蚁的禁 忌表,每 只蚂 蚁可 能路径 上的信 息素 初始 化; While(所 有任 务是 否已分 配完){ For 每 只蚂 蚁 do 记 录已分 配虚 拟机; 利 用式(4-2) 和已解 码 的初 步生成 待 分 配虚 拟机概 率; 用轮 盘赌 的方 式选 择任 务执 行的虚 拟机; 计 算每 个蚂 蚁的多 维约 束函 数值 ; 利 用式(4-3)进 行局 部更 新; 存 储当 前蚂 蚁任 务调 度方 案; 记 录当 前最 好的解,以 及 的 值; } 计 算每 只蚂 蚁约 束函 数值; 记 录当 前最 佳调 度方 案; 记 录当 前最 好的 解,以 及 的 值; 全 局更 新; 禁 忌表 清 零; nc+ +; } } END |
最终虚拟机调度仿真结果:
任务调度:
多算法之间的比较:
在实际过程中,虚拟机资源调度和任务调度分别定义了评价指标,同时在能耗感知方面,首先利用以往的数据,对能耗做了十组回归预测,通过建立以上模型对调度策略进行合理的评价。