一,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. mysql distinct 去重

    在使用MySQL时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录,但是实际中我们往往用distinct来返回不重复字段的条数(count( ...

  2. windows上面链接使用linux上面的docker daemon

    1. 修改linux 上面的 docker的 配置文件. vim /usr/lib/systemd/system/docker.service 注意 这个是centos的路径 发现ubuntu的路径不 ...

  3. 通过反射来读取XML格式的ControlTemplate

    在之前的一个WPF项目中,由于设置控件模板在前台xaml中读取失败,由此想到了通过反射的形式来读取该模板,首先将该模板写入一个xml文件中,然后再读取该xml文件,在这里首先介绍一下:资源和嵌入式资源 ...

  4. linux运维掌握不熟练命令用法记录

    rename   :批量修改文件名 [root@Dannyserver test]# ls .txt .txt .txt .txt [root@Dannyserver test]# rename 't ...

  5. 好消息,Manjaro Linux 18 已正式发布!

    导读 Manjaro Linux 18 已正式发布!Xfce 版本仍然是旗舰,Manjaro 为其提供了优雅且领先的集成体验.这一版本搭载 Xfce 4.13. 这一版本主要专注于在桌面和窗口管理器上 ...

  6. asp.net 连接SQL Server 数据库并进行相关操作

    asp.net 连接数据库,操作数据库主要需要两个类,一个是SqlConnection,一个是SqlCommand SqlConnection用于连接数据库,打开数据库,关闭数据库. 连接数据库需要特 ...

  7. Uva821-Floyd

    计算所有页面的平均距离. 用floyd求距离,再求平均 #include <algorithm> #include <cstring> #include <ctype.h ...

  8. 【ZOJ2278】Fight for Food(dp)

    BUPT2017 wintertraining(16) #4 F ZOJ - 2278 题意 给定一个10*10以内的地图,和p(P<=30000)只老鼠,给定其出现位置和时间T(T<=1 ...

  9. 【BZOJ2484】[SDOI2011]打地鼠(暴力)

    [BZOJ2484][SDOI2011]打地鼠(暴力) 题面 BZOJ 洛谷 题解 看到数据范围这题就应该是一个暴力题了. 先考虑假如我们知道了锤子的大小\(R*C\),那么显然只需要从左上角开始从左 ...

  10. 洛谷 P2764 最小路径覆盖问题 解题报告

    P2764 最小路径覆盖问题 问题描述: 给定有向图\(G=(V,E)\).设\(P\) 是\(G\) 的一个简单路(顶点不相交)的集合.如果\(V\) 中每个顶点恰好在\(P\) 的一条路上,则称\ ...