资源任务调度算法实现(大数据云计算作业来的)

实验目的

  • 本实验将引导学生对云计算任务调度算法的相关研究现状进行深入分析和研究,从影响用户任务的执行效率和系统资源的使用效率的角度出发,在现有的云计算任务调度算法的基础上,进行理论创新,从模型高效和算法高效2个层面上设计云计算任务调度模型、算法并实现。

实验思路

  • 实验主要分为两大部分,虚拟服务器模拟处理任务和主服务器(主线程)模拟分发任务到各个服务器,从而实现任务调度。虚拟服务器怎么模拟处理任务,为此,我们本次实验采取虚拟服务器资源和虚拟服务器处理任务的多线程来实现任务分配。
    任务调度:任务生成是通过随机数生成的任务大小和执行时间。任务大小和执行时间会影响到虚拟服务单任务执行时间和资源消耗。比如:任务过大,超出任何一台服务器的最大的执行的能力,就会出现任务过载,本次实验,在任务分配前需要检测。一旦发现,强行作废,并打印告知管理员。其二,极端任务,本次实验对极端任务的定义是:极端任务是这个任务执行需要的资源(内存)在所有的虚拟服务器仅此有一台服务器最大空闲时能满足此要求,这就是极端任务,极端任务需要特殊处理,不需要参与到一致性hash算法的分配算法中,因为此物仅此只能一台服务器处理。为此,我们在定义每台的虚拟服务器资源,定义了每台服务器都有自己的任务队列,都在初始化(new Object())产生自己的内部 独立的任务分配线程,此任务分配线程只负责处理自己内部的任务队列,一旦有新的任务,就只锁上自己(通过内部标志位),直到为空时,恢复标志位。任务队列任务的添加靠主线程,一旦发现有极端任务,就会添加到对应的虚拟服务器的任务队列中。从而解决了因为单个极端任务,导致其他服务器空闲的情况( 这种极端任务处理机制大大降低的服务器空闲概率)。

实验算法

  • 本次实验采用了一致性hash算法并添加了权值,权值的改变根据虚拟服务器最大资源量和运行时每隔一段时间的资源使用率来决定权值大小,权值大小直接影响到虚拟服务器在h一致性环内的节点个数,个数越多,被分配到的概率就会也大,从而更好的实现了负载均衡。
    一致性Hash算法的应用:路由分配、ip分配、任务调度、散列随机数

实验结果

  • 极端节点特别多得情况(注:相对均衡率越小越均衡):


  • ;(注:此次试验截图故意让极端任务生成的概率大,因此就会有很多极端任务或过载任务,从而很大程度影响了相对均衡率,越小越均衡)

  • 下面是极端任务生成的概率低的情况:


  • 从图中可以看出,各个虚拟服务器的柱状图都很均匀,几乎都能处于很高的资源使用率的状况,并且最终的相对均衡率很小,出现的极端任务越小,任务处理的所需的资源越小,其相对均衡率就会越小。
    公式:相对均衡率:sum(|(服务器A执行总的任务数/总的分配任务)-(服务器A最大资源/所有服务器最大资源总数)| (取绝对值))/总服务器个数 A是指各个服务器别民,

最后附上java源代码

资源调度java实现代码

原文地址:https://www.cnblogs.com/guguobao/p/10178410.html