基于C++的云计算资源调度优化算法源码数据及报告
云计算是在互联网技术、先进信息处理技术的基础上,对分布式处理、并行处理和网格计算的进一步延伸,可将其视为对以上科学概念的商业实现。区别于以上概念,云计算的主要特点体现在,通过使计算任务分布于地理位置分散的数据中心,让用户以支付即使用的透明方式进行资源租用,实现资源按需分配及大规模资源的全局共享。资源调度是指在特定的应用场景中,根据制定的资源使用规则,在不同资源使用者之间进行资源分配与重调整的过程。
资源下载地址:https://download.csdn.net/download/sheziqiong/86820683
资源下载地址:https://download.csdn.net/download/sheziqiong/86820683
1.云计算资源调度问题概述
云计算是在互联网技术、先进信息处理技术的基础上,对分布式处理、并行处理和网格计算的进一步延伸,可将其视为对以上科学概念的商业实现。区别于以上概念,云计算的主要特点体现在,通过使计算任务分布于地理位置分散的数据中心,让用户以支付即使用的透明方式进行资源租用,实现资源按需分配及大规模资源的全局共享。
资源调度是指在特定的应用场景中,根据制定的资源使用规则,在不同资源使用者之间进行资源分配与重调整的过程。资源使用者提交多样化的计算任务(例如虚拟解决方案、仿真实验、数据分析等),数据中心接收到任务后通常有两种途径实现计算任务的资源调度:
(1)调整分配给计算任务的资源使用量;(2)调整分配给计算任务的资源。一个好的资源调度方案需要综合考虑负载均衡、资源利用率、运行时间、所耗费用等多方面的因素。当前资源调度研究多集中于对单个目标的优化,考虑的约束难以满足云计算实际的运营环境,导致应用过程中存在很大的瓶颈。本文对云计算资源调度经典算法进行分析,比较各算法的优缺点及其所适用的资源类型、任务类型。基于各算法的不足提出相应的改进策略。
2.数学模型
表 1 问题涉及到的表示符号
问题的数学模型如下:
其中公式(1)表示每个任务只能被分配到一台机器上;公式(2)表示问题求解的目标是最小化 makespan(即最小化整个任务集的结束时间)。
3.经典算法介绍
以下介绍几种求解异构环境下资源调度的经典启发式算法。包括算法的基本思想、实现步骤。问题假设如下:
(1)有 T 个待分配任务;
(2)P 台可用机器;
(3)每个任务只能分配到一台机器上执行;
(4)第 j 个任务在第 i 台机器上的执行时间为 Time(i,j)。
3.1Min-Min
算法简述:Min-min 算法将任务 Task 分配到执行时间最短的资源上,同时保证总的执行时间最短。但是这样导致处理能力强的资源一直处于工作状态,而其他资源一直处于空闲状态,反而不能体现分布式处理的优势。而且这样也会倒是处理能力强的资源损耗较快。
时间复杂渐进度:O(PT)
3.2Min-Max
算法简述:Max-Min 算法非常类似于 Min-Min 算法。同样要计算每一任务在任一可用机器上的最早完成时间,不同的是 Max-Min 算法首先调度大任务,任务到资源的映射是选择最早完成时间最大的任务映射到所对应的机器上。
时间复杂渐进度:O(PT)
3.3RelativeCost
算法简述:此算法通过计算 relativecost,将 relativecost 较小的任务先分配。
此算法改善了负载不平衡的问题,但是相对复杂也更耗时。时间复杂渐进度:O(PT2)
3.4Sufferage
算法简述:此算法将最优资源和次优资源相差最大的任务先分配给最优资源。
时间复杂渐进度:O(PT2)
3.5PenaltyBased 算法简述:
此算法先分配所有任务给其最优资源,但是容易造成负载不均衡,所以随后判断是否可以将最大负载的资源中的任务调度到最小负载资源再进行调整。可以调整的条件是任务在最小负载上的预计完成时间小于最大负载的资源预计完成时间与最小负载上的预计完成时间的平均时间,按照
时间复杂渐进度:O(TP+T^2)
3.6ListSufferage
算法简述:此算法基于 3.4Sufferage 算法,但是算法所耗时间更少,关键是计算 priority 然后将此值由小到大进行排序,根据排序后的顺序分配任务。
priority 计算方法如下:如果 p 是 t 的最优资源:
否则:
时间复杂渐进度:O(PTlogT)
3.7TPB
算法简述:此算法基于 3.5PenaltyBased 算法,同样是解决负载不均衡的问题,先将任务分配给执行最快的资源。先将任务分配给最优资源,然后根据任务在其他各个资源预计完成时间升序排序,若预计完成时间小于执行最快的资源预计完成时间,则将任务分配给负载最小资源。
时间复杂渐进度:O(PT^2)
4.算法实现
根据各个算法的时间复杂度可以看出,Min-Min 算法和 Min-Max 算法耗时较小。本文对 Min-Min 算法进行具体分析并编码实现。
4.1 算法流程
Step1:判断任务集合 T 是否为空,不为空,执行(2);否则跳到步骤(7)。Step2:对于任务集中的所有任务,求出它们映射到所有可用机器上的最早完成时间。
Step3:根据(2)的结果,找出最早完成时间最小的那个任务 t 和所对应的机器 p。Step4:将任务 t 映射到机器 p 上;并将该任务从任务集合中删除。
Step5:更新机器 p 的期望就绪时间。
Step6:更新其它任务在机器 p 上的最早完成时间;回到(1)。
Step7:此次映射事件结束,退出程序。
4.2 代码实现
4.3 实验结果分析
由折线图可以清楚的看出,在一定范围内的数据执行时间差异不大,但是当数据量到达某个极限时,时间激增。
5.课程总结
七个算法各有优劣,可以大致分为三类:第一类,是算出数值再比较处理(如:RelativeCost\ListSufferage 算法);第二类,是 Min-Min 和 Min-Max 算法;第三类,是先分配给最优资源造成负载不平衡后再做调整(如:Sufferage\PenaltyBased\TPB 算法)。但是都存在几个明显的问题.
从编码上来看:(1)当数据十分大的时候,算法无法解决空间使用过大的问题。用内存数组处理不是很妥当,虽然可以将大数据分组处理,但是占用了太多的内存。同时占用空间太大,处理掉的数据的空间无法清除。(2)现实环境总是各异的,具体问题具体分析,所有算法都是理想化的,只是现实问题的一个精华,但是并不能解决错综复杂的现实问题。关于这个问题,我也试图解决。通过全局变量和文件读写的方式,每次只做一个任务,任务完成后即删除,可以大大节省空间,但是之后发现,文件的多次打开关闭更加浪费时间,具体解决方法也没有找到,这个方法出发点是好的,然而并不是很成功。但是此思想也许可以为进一步研究所借鉴。
从算法上来看:(1)系统角度,公平性:每个资源(不论优先级)都有机会被运行;较大的吞吐量。而算法一定程度上导致负载不均衡。用户角度,及时性:响应速度要快;较短的周转时间:不应当让用户等待时间过长。而算法只考虑到了最终时间的长度。所以,云计算资源调度还有待进一步研究。
资源下载地址:https://download.csdn.net/download/sheziqiong/86820683
资源下载地址:https://download.csdn.net/download/sheziqiong/86820683
更多推荐
所有评论(0)