用贪心算法近似求解 Loading Balance 问题(作业调度的负载均衡)
一,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 问题(作业调度的负载均衡)的更多相关文章
- 一致性哈希算法(适用于分库分表、RPC负载均衡)转
在分布式应用中,应该来说使用到hash最多的地方就是rpc负载均衡和分库分表,通常对于正式意义上的分布式应用来说,扩容和收缩是一个半自动化的过程,在此期间,应用基本上是可用的,所以不能发生大规模动荡的 ...
- 贪心算法求解活动安排<算法分析>
一.实验内容及要求 1.要求按贪心算法原理求解问题: 2.要求手工输入s[10]及f[10],其中注意自己判断s[i]<f[i]: 3.要求显示所有活动及最优活动安排的i事件列表.二.实验步骤 ...
- 贪心算法:旅行商问题(TSP)
TSP问题(Traveling Salesman Problem,旅行商问题),由威廉哈密顿爵士和英国数学家克克曼T.P.Kirkman于19世纪初提出.问题描述如下: 有若干个城市,任何两个城市之间 ...
- 个人总结-----非贪心算法的图的m着色判断及优化问题
1.问题描述: 对于著名的图的m着色,有两个主要的问题,一个是图的m色判定问题,一个是图的m色优化问题,描述如下. 图的m色判定问题: 给定无向连通图G和m种颜色.用这些颜色为图G的各顶点着色.问是否 ...
- C/C++贪心算法解决TSP问题
贪心算法解决旅行商问题 TSP问题(Traveling Salesman Problem,旅行商问题),由威廉哈密顿爵士和英国数学家克克曼T.P.Kirkman于19世纪初提出.问题描述如下: 有若干 ...
- Consistent Hashing算法-搜索/负载均衡
在做服务器负载均衡时候可供选择的负载均衡的算法有很多,包括: 轮循算法(Round Robin).哈希算法(HASH).最少连接算法(Least Connection).响应速度算法(Respons ...
- Citrix Netscaler负载均衡算法
Citrix Netscaler负载均衡算法 http://blog.51cto.com/caojin/1926308 众所周知,作为新一代应用交付产品的Citrix Netscaler具有业内领先的 ...
- Ribbon核心组件IRule及配置指定的负载均衡算法
Ribbon在工作时分为两步: 第一步:先选择 EurekaServer,它优先选择在同一个区域内负载较少的Server: 第二步:再根据用户指定的策略,在从Server取到的服务注册列表中选择一个地 ...
- Ribbon提供的负载均衡算法IRule(四)
一.Ribbon算法的介绍 Ribbon的源码地址:https://github.com/Netflix/ribbon IRule:根据特定算法中从服务器列表中选取一个要访问的服务,Ribbon默认的 ...
随机推荐
- [CNBETA]Intel CPU底层漏洞事件完全详解:全球手机/电脑无一幸免[转帖]
http://www.cnbeta.com/articles/tech/685897.htm 由Intel CPU漏洞问题衍生出来的安全事件已经波及全球几乎所有的手机.电脑.云计算产品,ARM确认 C ...
- Jquery ajax 表单.serialize() 和serializeArray()序列化$.param()
.serialize() 方法创建以标准 URL 编码表示的文本字符串.它的操作对象是代表表单元素集合的 jQuery 对象. 表单元素有几种类型: <form> <div>& ...
- mysql登录密码相关
设置root登录密码 方法一:用root 进入mysql后 mysql>set password =password('你的密码'); mysql>flush privileges; 方法 ...
- Java之Array(数组)说明
代码说明: package array; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** ...
- selenium之安装和登陆操作举例
安装selenium: python -m pip install selenium-3.4.3-py2.py3-none-any.whl 下载对应浏览器版本的驱动,且在环境变量PATH中指定驱动程序 ...
- caffe中的lr_policy
// The learning rate decay policy. The currently implemented learning rate // policies are as follow ...
- @classmethod 与 @staticmethod 区别
- ceph 搭建nginx负载3个对象网关
nginx.conf user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid ...
- Enum 扩展
项目中,用到枚举值,并且增加中英文描述. 一般的[Description]属性,无法满足中英文,所以进行了简单扩展. 继承DescriptionAttribute,增加了英文描述description ...
- LightOJ - 1074 Extended Traffic(标记负环)
题意:有n个城市,每一个城市有一个拥挤度ai,从一个城市u到另一个城市v的时间为:(au-av)^3,存在负环.问从第一个城市到达第k个城市所话的时间,如果不能到达,或者时间小于3输出?否则输出所花的 ...