任务分配与负载平衡
6.1 任务分配 (task allocation)
若干个模块构成一个任务,一个任务是单一的处理实体。
任务分解:把一个提交的任务划分成若干个独立的,具有最小IMC的模型。
IMC:每对模块间的数据传递。
IPC:处理机间的通信。
任务划分:粒度大,降低并行度,粒度小,进程切换和通信的开销就会增加。
划分方法:
水平或垂直划分:在给定的任务优先图中水平或垂直划分。关键路径(最长路径)
通信延迟最小划分:把通信频繁的节点归成一类。
任务复制:在各个处理机节点上复制任务来降低通信开销。
任务分配:把这些模块分配给处理机,使得它们由于处理机间的通信引起的开销最小。
一般算法假设:
存储容量无限
每个处理机节点有相同的处理能力
忽略网络拥塞
CPU的利用率最大化,平均响应时间最小化
基于图论的分配策略
0- 1程序设计策略
合一 ---- 阈值 启发式分配算法
进化算法(演化)
遗传算法求解方法
1 编码方法(Encoding)
用一个n+1位的二进制串来表示。
00000 11111
2 初始化群体
用过程Initialize来实现,方法是随机生成初始化的串群体。在串群体中,串长度都是相同的,串长为需要分配的文件数。群
体的大小根据需要(要求的分配时间等),按经验或实验给出。
分布均匀的二进制串能使算法更加有效。
3 选择 (Selection)
借用达尔文的生物进化论中的自然选择(NaturalSelection)思想,
按照“适者生存”的原则对串进行复制。用适应度函数计算每个串的适应值,选择适应值高的串,生成下一代,去掉适应值差的串。
4 交叉 (Crossover)
交叉是两个串按照一定的概率
(交叉概率Pc)从某一位开始逐位
互换。这里先在串群体中,随机
的选择两个串,成为一对串,
变成多对串后,对每对串随机的
选择一个交叉点,例如串长为
n+1,则可选择一整数i,0≤i ≤n,i为交叉点,对两个串从
第0位到第i位进行互换,形成两个新串。是否发生交叉操作,
还要受交叉概率的控制,选择好一对串后,在0、1之间产生
一个随机数,若
该随机数大于Pc则发生交叉,否则保持原状。Pc也是根据经验
或实验确定,一般可为0.5左右。
1010 0101 1110 0111
1011 1111 1011 1101
1010 0101 1011 1101
1011 1111 1110 0111
5 突变 (Mutation)
二进制串的某一位按照一定的概
率(突变概率Pm)发生反转,
0变1,1变0。这里Pm较小,
Pm可小于0.001.
6 适应度函数(Fitness Function)
这里我们用Evaluation过程来
实现。
7 停止条件
可以是以下几种或其组合:
(1) 规定进化代数,也就是最大
迭代次数。
(2) 群体中某个解的适应值达到
某一预先规定的范围内。
(3) 连续若干代,群体中的个体
不再变化。
8 相应的遗传算法描述
Procedure GA Program
Begin
Initialize;
Evaluation;
While (nottermination-condition) do
Begin
Selection;
Crossover;
Mutation;
Evaluation
End
End.
方法有以下几个优点:
(1) 具有一定的规律和随机性,不确定性。为了处理这种特性引入了概率分析。
(2) 适用于变化的环境。
(3) 能得到多个解,即可得到多个分配方案可供选择。
(4) 算法具有良好的并行性,进化
过程中的群体是一个可行解
的集合。适合于并行计算。
6.2 负载平衡
负载
CPU队列的长度(比如进程的数目)
某段时间内CPU队列的平均长度
可用内存的大小
上下文切换的速率
系统调用的速率
CPU的利用率
对系统中的负载情况进行动态调
整,以尽量消除或减少系统中
个场点负载不均匀的现象。
由于任务到达的随机性,各节点处理能力上的差异,当系统运行一段时间后,就会出现某些节点上还有很多任务没有完成,而另外一些节点处于空闲。
目的:
发挥系统冗余资源
提高资源利用率
防止软件并行性和硬件并行性之间失配
负载平衡算法分类:
局部和全局
静态和动态
动态的算法增加了系统的调度开销。
动态的算法适应了应用程序可变化、可伸缩等特点的需要,静态的算法由于在编译时可以完成调度,对于大型应用程序的性能提高也起着一定的作用。可以结合使用。
最优和次优
近似和启发式
集中和分散式
协作和非协作的
针对单个应用程序 和 多个应用程序的
抢占式和非抢占式的
自适应和非自适应的
负载平衡算法的组成:
1 转移策略 T1 T2
2 选择策略
3 定位策略
4 信息策略
收集信息的方式:集中式(多对一,一对多)和分布式(多对多的指令)
收集的时机:周期或非周期
收集的范围:全局还是局部(CPU可以划分为大小为K的一些不同的组)
收集的负载信息内容:节点机的负载信息。在运行的静态和动态阶段所收集的负载信息内容应该是不同的。
负载平衡使用的参数
系统大小: 如处理机的个数,
处理机多,系统容易找到负载轻的节点,但系统消息传输量大。
系统负载
一般用 CPU 队列长度来衡量系统负载。
系统通信速率:各个处理机上任务的到达率
移动阈值
任务大小
一般说:移动一个太小的任务是不合适的,对于一个太大的任务,或者涉及到大量数据和文件的任务,也最好在本地处理机节点上执行。
决定任务的大小难。
一般是:对资源的要求、任务类型(I/O多,还是CPU多)、存储要求、数据文件要求等。
管理成本
CPU当前负载的测量、CPU决策用的负载信息、决策发生的位置、CPU间的任务传递。
矛盾:应该从足够多的CPU间寻找,但是寻找过多,通信成本太高。
响应时间
可选择的目标节点
资源要求
负载不平衡主要有:
1 某些算法的迭代大小不是固定的,
但迭代的大小在编译时却可以求得。
2 某些算法的迭代大小不是固定的,
但迭代的大小依赖于被处理的数据,
在编译时无法求得。
3 即使迭代大小是固定的,也会有
许多不定因素导致计算速度的差异。
动态负载平衡算法(影响效率的3
个主要因素):
1 算法
2 网络拓扑结构 结点的度数
Davg= ∑ D(I,j)/N(N-1)
3 执行动态负载平衡代码的频率
(确定负载平衡的粒度)
负载平衡中其他相关因素
编码文件和数据文件
比如地理上分布的系统,移动所需的代价。
系统的稳定性
系统体系结构
总线连接系统中传递文件的成本比超立方体的要高。
Linux Virtual Server ( LVS )
Linux虚拟服务器,负载调度是在
Linux内核中实现的。
一组服务器通过网络连接,它们的前
端有一个负载调度器(load balancer)。
负载调度器将网络请求调度到真实
的服务器上。
负载调度算法:
负载调度是以连接为粒度的。
1 轮询调度(Round-Robin Scheduling)
依次将请求调度到不同的服务器上。
假定:所有服务器处理性能相同,请求服务时间变化不大。
2 加权轮询调度
(Weighted Round-Robin Scheduling)
用相应的权值表示服务器的处理性
能,服务器的缺省权值为1。
可以解决服务器间性能不一致的情况。
3 最小连接调度
(Least-Connection Scheduling)
把新的连接请求分配到当前连接
最小的服务器。
假定:所有服务器处理性能相同。
4 加权最小连接调度
(Weighted Least-Connection Scheduling)
用相应的权值表示服务器的处理性能。
5 基于局部性的最少连接调度
(Locality-Based Least Connections Scheduling )
将相同目标IP地址的请求调度到同
一台服务器,提高各台服务器
的访问局部性和主存Cache命中率,
从而提高这个集群系统的处理能力。
6 带复制的基于局部性最少连接调度
( Locality-Based Least Connections with Replication Scheduling)
将相同目标IP地址的请求调度到同
一组服务器。
7 目标地址散列调度
(Destination Hashing Scheduling)
通过一个散列(Hash)函数将一个
目标IP地址映射到一台服务器上。
8 源地址散列调度
(Source Hashing Scheduling)
根据请求的源IP地址,从静态分配的
散列表中找出对应的服务器。
应用于:
可伸缩的web服务、可伸缩的媒体
服务(音频视频)、
可伸缩的邮件服务 @ B.COM.CN
@ B2.COM.CN @ B3.COM.CN
RedHat(www.readhat.com),
从6.1版,包含LVS代码。
TurboLinux有Linux集群产品。
第七章 分布式文件系统
7. 1 允许用户程序直接存取
远程文件而不需要将它们拷贝到本
地场点
它支持以下部分或全部的透明性
存取透明性
位置透明性
并发存取透明性
故障透明性
性能透明性
复制透明性
迁移透明性
7.2 分布式文件系统的组成
1 展开文件服务
2 目录服务
3 客户组件
7.3 设计策略
7.4 接口
Read(File, i, n)
从文件i位置开始读出n个数据
项。
Write(File, i, data)
把data数据项从i位置开始,按
顺序写入
文件。
Creat()
Truncate(File, l)
Delete(File)
GetAttributes(File)
SetAttributes(File, Attr)
7.5 文件系统的实现技术
文件组结构
权限和存取控制
文件服务:文件系统提供给客户内
容的详细说明。
文件服务器:是运行在某台机器上
的一个有助于实现文件服务 的进程。
分布式系统中用于文件和目录命
名的三种常见方法:
(1) 机器+路径
(2) 安装远程文件系统到本地文
件分层结构
(3) 一个在所有机器上看上去都
一样的单个名字空间
任何大型分布式系统都需要用带
有多个位置解析服务器的分布式
解决方案,每个服务器负责所有名
字集合的特定子集。
用一个服务器位置映射表来查询,
以确定系统中哪个服务器负责
哪组名字集合的解析。
操作系统可以用各种方式来存储文
件。
非结构化文件:以连续的字节流来
存放文件,在文件中没有内在的
结构。
结构化文件: 以记录结构来表示
数据。
对共享文件的修改:
1 立即通知:对文件的每次修改,立即对拥有该文件拷贝的所有参与者可见。
2 关闭时通知:对将文件进行修改的参与者关闭文件,即终止对文件的访问时,其他参与者才被通知已修改文件。
3 事务完成时通知:在事务完成时,通知系统中的成员。
文件共享语义
(1) Unix语义
(2) 会话语义
(3) 不可更改文件
(4) 事务
被测文件系统的特性
(1) 大多数文件比较小(小于10K)
(2) 对文件的读操作多于对文件的写操作
(3)对文件的读写是顺序进行的,随机访问非常少
(5) 大多数文件寿命比较短
(6) 文件共享非常少
(7) 一般进程只是使用某几个文件
(8) 用不同的属性区分文件类型
设计实例:
目录操作:
创建目录
删除目录
重命名目录
列出目录内容
管理目录的访问权限
改变目录的访问权限
移动目录
遍历目录结构
文件操作
创建文件
删除文件
重命名文件
移动文件
查找文件
复制文件
分布式文件系统的新技术
内存文件系统
文件服务器可以配置几十个GB的内存,这样文件系统可以永久储留在内存,而不需要磁盘。
每个文件在内存中是连续存放的,而不是将它们打散成若干块,连续存储文件易于跟踪和网络传输。
掉电丢失
UPS
NVRAM
不断备份
Cache管理
通过cache可以提高系统的性能,解决一致性
分布式文件系统的系统结构
实际系统中
客户和服务器没有区别,任何机器都可以为其他机器提供文件服务
具体实现上客户和服务器往往是不同的。
文件和目录服务结构
一样:既处理目录也处理文件
分开:可以提高系统的灵活性,但是如果有多个目录服务器,则要参与多次路径名查找,开销较大。
文件、目录、其他服务器是否要维持客户的状态信息。
服务器没有状态的
服务器在客户请求之间维持它们的状态信息。
容错,请求消息短