一,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. QQ互联登录提示redirect uri is illegal(100010)完美解决方法

    大概2015年3月低,腾讯QQ互联开发平台调整了有关QQ登录应用回调地址填写规则,用来修复QQ登录过程因回调地址的漏洞可能导致存在的安全问题. 博主接触这块较多,但也是四月才了解此事,从4月起,所有新 ...

  2. 多条件查询 仿淘宝URL传参方式

    ---恢复内容开始--- 最近项目在做一个电商网站,网站涉及到前后台交互的多条件查询,类似于淘宝的多条件查询,图片如下 此类查询主要涉及到的问题有: 1.如何记忆查询参数 2.如何前后台传值 3.中文 ...

  3. USDT(omniCore)测试环境搭建

    一.测试环境搭建. 注:由于window版本的omni出现同步不了的问题,推荐使用linux系统进行usdt测试链的搭建. 1.下载omnicore: wget https://bintray.com ...

  4. codeforces548B

    Mike and Fun CodeForces - 548B Mike and some bears are playing a game just for fun. Mike is the judg ...

  5. codeforces166E

    Tetrahedron CodeForces - 166E You are given a tetrahedron. Let's mark its vertices with letters A, B ...

  6. BZOJ4530[Bjoi2014]大融合——LCT维护子树信息

    题目描述 小强要在N个孤立的星球上建立起一套通信系统.这套通信系统就是连接N个点的一个树. 这个树的边是一条一条添加上去的.在某个时刻,一条边的负载就是它所在的当前能够 联通的树上路过它的简单路径的数 ...

  7. Laravel表单传值

    仔细阅读过Laravel官方文档的就不用看啦~ 整理下之前遇到的关于Laravel表单的一些小问题 表单传值无法传过去,因为laravel做了表单的防护 只需要将{{ csrf_field() }}放 ...

  8. hdu 5126 stars (四维偏序,离线,CDQ套CDQ套树状数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5126 思路:支持离线,那么我们可以用两次CDQ分治使四维降为二维,降成二维后排个序用树状数组维护下就好 ...

  9. 自学Aruba5.3.4-Aruba安全认证-有PEFNG 许可证环境的认证配置802.1x

    点击返回:自学Aruba之路 自学Aruba5.3.4-Aruba安全认证-有PEFNG 许可证环境的认证配置802.1x 1. 采用InterDB认证服务器完成802.1X认证 (Aruba650) ...

  10. SPI、I2C、UART三种串行总线协议的区别

    第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART(Universal Asynchronous R ...