一,Loading Balance 问题描述:有 m 台相同的机器及 n 个作业,其中 m={M(1),M(2),……M(m)}、n = {J(1),J(2),……J(n)}。每个作业都有一个处理时间,记为t。如,;t(j)表示作业 J(j) 的处理时间。任意机器在某个时刻只能处理一个作业;一旦某个作业被调度到机器上处理,它就不能被抢占,直至它被处理完才能处理下一个作业。问:如何分配作业,使得处理完所有的作业所需的时间最少?

由于该问题是NPC的,因此很难找到该问题的最优解(精确解),下面用贪心算法求解一个近似解。

二,Loading Balance问题的两倍贪心近似解

贪心策略:总是优先给当前机器中负载最小的机器分配作业

设BS(best solution)为Loading Balance问题的最优解。BS 表示处理完所有的作业所需的最少时间,则:

1)BS >= max{t(1),t(2)……t(n)}      耗时最长的作业总会在某台机器上执行,BS一定比某个单一作业的执行时间要长(可能相等,如机器数目大于作业数目)

2)BS >= (1/m)*[(t(1)+t(2)+……+t(n)]    BS大于等于平均处理所有作业的时间。[(t(1)+t(2)+……+t(n)]表示所有作业的总量,m 表示所有机器数目。

由于在最优的分配方案下得到的最优解是BS,设在最优方案下各台机器的负载(处理时间)为{L(1),L(2)……L(m)}   L(i) 表示第 i 台机器的负载。

显然

a):BS=max{L(1),L(2)……L(m)}  因为只有当最大负载的机器处理完之后,才能说所有的作业都被处理完了。

b): ∑mi=1 = ∑nj=1        即:L(1)+L(2)+……+L(m) = t(1)+t(2)+……+t(n)

b)式成立的原因如下:等式左边表示所有的机器处理工作的任务量,等式右边表示所有的任务需要处理的时间之和。显然是相等的,只不过是换了个术语表达而已,一个称负载,一个称处理时间。

贪心分析如下:

设作业J(j) 是最后一个被调度的作业,它被调试到第 i 台机器m(i)上。由贪心策略可知:在作业J(j)被调度时,第 i 台机器的负载是最小的(因为,总是优先将作业调度到负载最小的机器上)。设此时第 i 台机器的负载为 Lm(i), 显然有:Lm(i) <= ∑nj=1  (因为Lm(i) 表示机器负载的最小值,而等式右边表示的是负载的平均值)。
故作业J(j)调度到第 i 台机器上时,此时Lm(i) + t(j) <= 2BS (因为Lm(i) <= BS and t(j) <= BS)

Lm(i) + t(j) 表示最后一个作业被调度且执行完后,机器m(i)上的负载,它的值即为贪心算法求解Loading Balance的解。

小问题:一般而言,Lm(i) + t(j) 表示贪心算法的解。若它不是贪心算法的解,则说明还存在着一个更大的负载值,那么这个更大负载的值会更接近两倍最优解 2*BS。(可以通过画一个模型图来理解)

负载均衡的拓展:

若将待调度的作业按作业的运行时间从大到小排序,且总是优先将大作业分配到当前负载最小的机器上,则此时贪心算法求解 Loading Balance 问题可达到 (3/2)倍的近似解(one point five)

原因如下:

在该贪心策略下,最后一个被调度的作业为J(l),其长度(运行时间)t(l) <= (1/2)*BS

分两种情况来讨论为什么t(l) <= (1/2)*BS:

①作业数目小于机器的数目:此时最后一个被调度的作业为所有作业中长度最小的作业,任何算法得到的解即为第一个被调度的作业长度。该解满足1.5倍近似解范围。

②作业数目大于机器数目:由于作业是排好序的,故:t(1)>t(2)>……>t(m)>t(m+1)>…… 设J(l)是最后一个被分配的作业,则一定有:t(l)<=t(m+1)

因为作业的数目大于机器的数目,则一定有一台机器上运行了至少两个作业。假设J(l)分配到的机器已经运行了作业J(i),

则有:BS >=t(i)+t(l),又因为t(l)<=t(i),所以t(l)<=(1/2)*BS

用贪心算法近似求解 Loading Balance 问题(作业调度的负载均衡)的更多相关文章

  1. 一致性哈希算法(适用于分库分表、RPC负载均衡)转

    在分布式应用中,应该来说使用到hash最多的地方就是rpc负载均衡和分库分表,通常对于正式意义上的分布式应用来说,扩容和收缩是一个半自动化的过程,在此期间,应用基本上是可用的,所以不能发生大规模动荡的 ...

  2. 贪心算法求解活动安排<算法分析>

    一.实验内容及要求 1.要求按贪心算法原理求解问题: 2.要求手工输入s[10]及f[10],其中注意自己判断s[i]<f[i]: 3.要求显示所有活动及最优活动安排的i事件列表.二.实验步骤  ...

  3. 贪心算法:旅行商问题(TSP)

    TSP问题(Traveling Salesman Problem,旅行商问题),由威廉哈密顿爵士和英国数学家克克曼T.P.Kirkman于19世纪初提出.问题描述如下: 有若干个城市,任何两个城市之间 ...

  4. 个人总结-----非贪心算法的图的m着色判断及优化问题

    1.问题描述: 对于著名的图的m着色,有两个主要的问题,一个是图的m色判定问题,一个是图的m色优化问题,描述如下. 图的m色判定问题: 给定无向连通图G和m种颜色.用这些颜色为图G的各顶点着色.问是否 ...

  5. C/C++贪心算法解决TSP问题

    贪心算法解决旅行商问题 TSP问题(Traveling Salesman Problem,旅行商问题),由威廉哈密顿爵士和英国数学家克克曼T.P.Kirkman于19世纪初提出.问题描述如下: 有若干 ...

  6. Consistent Hashing算法-搜索/负载均衡

    在做服务器负载均衡时候可供选择的负载均衡的算法有很多,包括:  轮循算法(Round Robin).哈希算法(HASH).最少连接算法(Least Connection).响应速度算法(Respons ...

  7. Citrix Netscaler负载均衡算法

    Citrix Netscaler负载均衡算法 http://blog.51cto.com/caojin/1926308 众所周知,作为新一代应用交付产品的Citrix Netscaler具有业内领先的 ...

  8. Ribbon核心组件IRule及配置指定的负载均衡算法

    Ribbon在工作时分为两步: 第一步:先选择 EurekaServer,它优先选择在同一个区域内负载较少的Server: 第二步:再根据用户指定的策略,在从Server取到的服务注册列表中选择一个地 ...

  9. Ribbon提供的负载均衡算法IRule(四)

    一.Ribbon算法的介绍 Ribbon的源码地址:https://github.com/Netflix/ribbon IRule:根据特定算法中从服务器列表中选取一个要访问的服务,Ribbon默认的 ...

随机推荐

  1. Smarty 变量修饰器

    为了更方便的实现 功能与显示分离,通常会用 smarty 将功能代码中的数据 assign 到页面中,在页面中合理使用 smarty 的修饰方法,会使页面显示更美观! 一个数据可同时使用多个修饰函数, ...

  2. Java之修改文件内容:字符串逐行替换

    依赖包: <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</a ...

  3. Java之数组遍历

    package basic; //数组遍历方法 public class ForEach { public static void main(String[] args) { // 原始数组 Stri ...

  4. python之参数解包

    # 参数解包:将整个list当做参数传给函数 list = [1, 2, 4] def add_fn(a, b, c): return a + b + c sum = add_fn(*list) pr ...

  5. bram和dram的区别

    http://blog.csdn.net/jbb0523/article/details/6533760

  6. docker--Dockerfile--java

    # AlpineLinux with a glibc-2.26-r0 and Oracle Java 7FROM alpine:3.6 MAINTAINER Anastas Dancha <an ...

  7. aop 记录用户操作(一)

    转载: http://www.cnblogs.com/guokai870510826/p/5981015.html 使用标签来设置需要的记录 实例:@ISystemLog() @Controller ...

  8. day10 局部变量 全局变量 作用域前奏

    规则命名以及基本介绍 name="LHF" # 顶头写的全局都可以调用的就是全局变量,命名规则要求大写全局变量 def chang_name(): # global name # ...

  9. emWin 文字图形同时刷新导致图形显示异常

    @2018-7-10 实现目标 一 BUTTON 控制文字图形的刷新切换,具体为 BUTTON 初次按下,文字显示为 “开始” .填充圆显示为绿色,再次按下,文字显示为 “停止” .填充圆显示为红色 ...

  10. hdu 2577 How to Type(dp)

    Problem Description Pirates have finished developing the typing software. He called Cathy to test hi ...