首页 | 邮件资讯 | 技术教程 | 解决方案 | 产品评测 | 邮件人才 | 邮件博客 | 邮件系统论坛 | 软件下载 | 邮件周刊 | 热点专题 | 工具
网络技术 | 操作系统 | 邮件系统 | 客户端 | 电子邮箱 | 反垃圾邮件 | 邮件安全 | 邮件营销 | 移动电邮 | 邮件软件下载 | 电子书下载

操作系统

Windows 9X | Linux&Uinx | Windows Server | 其它操作系统 | Vista | FreeBSD | Windows 7 |
首页 > 操作系统 > Linux&Uinx > 基于Linux的集群系统(三) > 正文

基于Linux的集群系统(三)

出处:赛迪网 作者:赛迪网 时间:2006-10-12 10:36:00

 关键技术分析之 进程的放置和迁移

  通过对本系列前面二篇文章的学习,您对于集群系统应该已经有了一个整体的认识。从本篇开始作者将对集群系统进行更深入的探讨。本篇作为《关键技术分析》的第一篇将向我们讲述进程放置和迁移的一些关键技术。

  1. 进程的放置

  在集群系统中,进程的到达时间和新到达进程所需的资源量都是不可预测的,因此进程的放置和迁移是非常重要的问题。由于集群系统中的不可预测性,进程有时就会被放置在不合适的机器上,进程迁移就给了系统一个弥补这样的错误的机会。通过较好的算法将新创建的进程放置到合适的节点上执行,并且对某些进程进行迁移可以缩短任务的平均执行时间,因此从整体上提高了系统的性能。

  进程的放置问题是非常复杂的,因为集群中的资源是异构的,如:内存、CPU、进程间通讯等等。衡量这些资源耗费的方法也是不同的:内存的单位是字节,CPU的单位是循环、通讯资源的单位是带宽。

  进程的放置策略分为静态放置策略和动态放置策略。静态放置策略通过预先定义的规则对新创建的进程进行分配,它不使用运行时的信息。而动态放置策略则根据系统状态的变化将进程重新放置到最适宜的节点上。

  常见的静态放置策略由三种:Round Robin(RR)、Best-Fit(BF)、Round Robin Next-Fit (NF)。

  Round Robin将新创建的进程以轮转的形式放置到集群中的各节点上。这种方法的缺陷在于如果新创建的进程所需的内存量大于将要分配到其上的节点的可用内存大小,则会导致算法的失败。

  一种改进的方法是使用Best-Fit方法,进程将被放置到具有最大可用内存的节点上。

  Round Robin Next-fit以Round Robin的方式扫描各节点,并且将进程发送到第一个有足够大内存的节点上。它的缺点就是可能会导致负载不均衡地分配到各个节点。

  三种进程放置策略的性能如图1-1所示。(进程的平均大小是16MB)

  从该图可以看出,NF算法能够最充分地利用内存资源。当集群中的节点数增加时,BF算法和RR的算法的性能也随之有明显的下降,之所以产生这种情况是因为当节点数增加时,集群中的内存总量也随之成比例地增加,而且新增加的节点也会创建新的进程,这也就意味着大进程的数量也会随之增多,这些大进程对于BF算法和RR算法而言是很难放置的,因此会导致它们的性能的下降。

  一种动态的进程放置策略叫做MS(Migrate the Smallest process),它以Round Robin的形式扫描所有的节点,并且将新进程放置到下一个节点上。与Round Robin不同的是,如果要放置的节点的内存不足以提供给新来的进程使用,则MS算法将迁移走一个进程。将要被迁移的进程是该节点上所有进程中最小的一个但是迁移走它刚好能满足新进程所需内存,而且也有其它的节点能够容纳这个将被迁移的节点,这种方法有较小的网络开销,如果不存在这样的节点,如其它的所有节点都没有足够大的内存空间,则算法失败。MS算法和NF算法的比较如下图所示。当进程的平均大小为1M时,两种算法都取得了将近100%的内存利用率,但是如图1-2所示当进程的平均大小为16M时,MS 算法比NF 算法高了20多个百分点。

  以上各种算法都是集中式的进程放置策略,都需要使用全局信息来决定放置策略,不利于可扩展性,不能有效地在拥有多个节点的集群上执行。一种基于MS的分布式进程放置算法(Windowed MS)是这样实现的:它将迁移的进程放置到从信息窗口中选出的具有最大可用内存的节点上。所谓信息窗口指的是一个缓冲区,里面保存着其它节点的可用内存的信息。每隔一定的时间就会将其它各节点的内存信息收集到信息窗口中,并对信息窗口进行更新。

  


  图1-1 进程放置策略性能比较图



  


  图1-2 进程放置策略性能比较图
  2. 进程的迁移

  早在20世纪80年代,人们就开始了进程迁移的研究。大多数的研究主要着眼于如何用更好的方法在机器之间传送进程的状态。同构的进程迁移指的是进程迁移的原始和目标机器的体系结构相同,而异构的进程迁移指的是不同体系结构的机器之间的进程迁移。同构的进程迁移系统的例子有:V Charllote 、DEMOS/MP、 Sprite、 Condor、 Accent ;异构的进程迁移系统有:Tui、Emerald、HMF(Heterogeneous Migration Facility )等。进程迁移主要用于以下几种情况下。

  当失效的机器修复了错误,重新进入集群系统时,需要将某些该机器上原来运行的进程重新迁移回来。

  在集群系统中进行负载共享。为了让一个进程使用尽可能多的CPU时间,需要将它迁移到能提供大部分指令和I/O操作的机器上执行。但是有时候负载共享也有缺陷,因为大部分的进程只需一少部分的CPU时间,考虑到进程迁移的开销,如果对那些简单的可以在本地运行的进程进行迁移是得不偿失的,但是对于那些需要大量的处理时间的程序如仿真程序,迁移进程是非常有效的。

  提高通讯性能。如果一个进程需要与其它进程频繁地进行通讯,这时将这些进程放置得近一些就会减少通讯的开销。具体的迁移方法就是将一个进程迁移到其它进程所在的CPU上。

  可用性。当网络上的某台机器失效时,通过进程迁移可以将进程迁移到其它机器上继续执行,这样就保证了系统在遇到灾难时的可用性。
  
  重新配置。当对集群进行管理时,有时需要将服务从一个节点移到另一个节点,透明的进程迁移可以在不停机的情况下迁移服务。

  使用集群中的某些机器的特殊能力。如果某个进程能够从集群中的某台特定机器上受益,它就应该在那台机器上执行。如进行数值计算的程序能够通过使用数学协处理器或超级计算机中的多个处理器来大大缩短程序执行时间。

  尽管进程迁移已经在实验环境中成功地实现了,但是它还没有被广泛地接受。一个原因是占主流的平台如MSDOS、 Microsoft Windows以及许多种类的UNIX操作系统都没有对进程迁移的支持。另一个原因是因为进程迁移开销可能比不迁移进程时的开销还要大。但是当前,两种新的计算领域又促进了进程迁移的发展,一个是移动计算,另一个是广域计算。移动计算指的是那些便携式的小型计算机的计算问题。而广域计算是指广域网中的机器的计算问题。

  进程迁移将一个正在执行的进程从一个节点迁移到通过网络连接的另一个节点上(也就是说,不使用本地共享内存机制)。进程所在的原始节点上的操作系统应该将进程的所有状态都包装起来,这样目的机就可以继续执行此进程。

  要完成进程迁移需要迁移进程的状态,尤其是进程的地址空间,对其它进程的访问(如套接口、管道等),代码(可以组成地址空间的一部分)以及执行状态(寄存器、堆栈等)。除了这些,还需要将那些对原始的进程所有访问都重新链接到新的进程拷贝上,不然迁移就不是无缝的,就会导致错误。整个进程迁移操作必须是原子操作,这样才能避免进程的丢失或者是有两个拷贝。

  为了进行进程迁移需要再进行以下的修改:

  必须对文件系统进行一定的修改使每个机器看到相同的名字空间。

  必须传送足够的状态从而确保正常的核心调用能够在远端机器上正常执行。

  一些特殊的核心系统调用如gettimeofday 、getpgrp应该发回到原始节点执行。

  下面通过一个异构进程迁移的例子来说明进程迁移的整个过程。图1-3说明了进程是如何在Tui进程迁移系统中从一个机器上迁移到另一个机器上的。

  首先是对一个程序进行编译,针对Tui支持的四种体系结构,将程序分别编译四次。

  程序在原始机上以普通方式执行。(如命令行方式)

  当选定一个迁移的进程时,migrout程序首先为进程设置检查点,然后挂起进程,然后进行内存映像,接着扫描全局变量、堆栈和堆来定位所有的数据。再把所有的这些都转化为一种中介的格式传送给目标机。最后,杀死原始机器上的进程。

  在目标机上,migrin程序取得中介值并创建新的进程,由于程序已经根据目标机的体系结构进行了编译,因此正文段的信息和数据报的类型信息都是可用的。然后通过重新创建全局变量、堆和堆栈,程序从检查点处继续执行。

  经过统计,选择空闲主机并且开始一个新的进程需要0.1秒的时间,平均迁移时间是330毫秒。通过进程迁移可以将性能提高近5倍。

  
图1-3 进程迁移过程示意图
  计算机系统的可靠性用平均无故障时间(MTTF)来度量,即计算机系统平均能够正常运行多长时间,才发生一次故障。系统的可靠性越高,平均无故障时间越长。可维护性用平均维修时间(MTTR)来度量,即系统发生故障后维修和重新恢复正常运行平均花费的时间。系统的可维护性越好,平均维修时间越短。计算机系统的可用性定义为:MTTF/(MTTF+MTTR) * 100%。由此可见,计算机系统的可用性定义为系统保持正常运行时间的百分比。

  计算机产业界通常用如下表所示的"9"的个数来划分计算机系统可用性的类型。

  


  通过硬件冗余或软件的方法都可以从很大程度上提高系统的可用性。硬件冗余主要是通过在系统中维护多个冗余部件如硬盘、网线等来保证工作部件失效时可以继续使用冗余部件来提供服务;而软件的方法是通过软件对集群中的多台机器的运行状态进行监测,在某台机器失效时启动备用机器接管失效机器的工作来继续提供服务。

  一般来说,需要保证集群管理器的高可用性和节点的高可用性。Eddie、Linux Virtual Server、Turbolinux、Piranha和Ultramonkey 都采用了类似于图1的高可用性解决方案。


  集群管理器的高可用性

  为了屏蔽集群管理器的失效,需要为它建立一个备份机。主管理器和备份管理器上都运行着heartbeat程序,通过传送诸如"我活着"这样的信息来监测对方的运行状况。当备份机不能在一定的时间内收到这样的信息时,它就激活fake程序,让备份管理器接管主管理器继续提供服务;当备份管理器又从主管理器收到"我活着"这样的信息时,它就使fake程序无效,从而释放IP地址,这样主管理器就开始再次进行集群管理的工作了。

  节点的高可用性

  节点的高可用性可以通过不断监视节点的状态以及节点上的应用程序的运行状态来实现,当发现节点已经失效时,可以重新配置系统并且将工作负载交给那些运行正常的节点来完成。如图1所示,系统通过在集群管理器上运行mon精灵程序来监视集群中的实际服务器上的服务程序的运行状况。例如使用fping.monitor 以一定的时间间隔来监视实际服务器是否还在正常运转;使用http.monitor 来监测http服务,使用ftp.monitor来监测ftp服务等等。如果发现某个实际服务器出了故障,或者是其上的服务已失败,则在集群管理器中删除有关这个实际服务器的所有规则。反之,如果不久以后发现系统已经重新能够提供服务,则增加相应的所有规则。通过这种方法,集群管理器可以自动屏蔽服务器和其上运行的服务程序的失效,并且当实际服务器正常运转时能将它们重新加入到集群系统中。
相关文章 热门文章
  • 基于Linux的集群系统(五)
  • 基于Linux的集群系统(四)
  • 基于Linux的集群系统(二)
  • 基于linux的集群系统(一)
  • linux的基本操作(上)
  • Linux系统下应用知识大荟萃
  • GNU GRUB启动管理器
  • 制作基于软盘的Linux系统
  • 网络配置文件快速解读
  • linux的基本操作(下)
  • 剖析Linux系统启动过程
  • DameWare让局域网管理不再繁琐
  • 在Redhat 9下实现双机热备和集群功能
  • LINUX守护进程介绍
  • Redhat advance server 2.1集群的安装与管理
  • Linux必须学会的60个命令-文件处理
  • 自由广告区
     
    最新软件下载
  • SharePoint Server 2010 部署文档
  • Exchange 2010 RTM升级至SP1 教程
  • Exchange 2010 OWA下RBAC实现的组功能...
  • Lync Server 2010 Standard Edition 标..
  • Lync Server 2010 Enterprise Edition...
  • Forefront Endpoint Protection 2010 ...
  • Lync Server 2010 Edge 服务器部署文档
  • 《Exchange 2003专家指南》
  • Mastering Hyper-V Deployment
  • Windows Server 2008 R2 Hyper-V
  • Microsoft Lync Server 2010 Unleashed
  • Windows Server 2008 R2 Unleashed
  • 今日邮件技术文章
  • 腾讯,在创新中演绎互联网“进化论”
  • 华科人 张小龙 (中国第二代程序员 QQ...
  • 微软推出新功能 提高Hotmail密码安全性
  • 快压技巧分享:秒传邮件超大附件
  • 不容忽视的邮件营销数据分析过程中的算..
  • 国内手机邮箱的现状与未来发展——访尚..
  • 易观数据:2011Q2中国手机邮箱市场收入..
  • 穿越时空的爱恋 QQ邮箱音视频及贺卡邮件
  • Hotmail新功能:“我的朋友可能被黑了”
  • 入侵邻居网络发骚扰邮件 美国男子被重..
  • 网易邮箱莫子睿:《非你莫属》招聘多过..
  • 中国电信推广189邮箱绿色账单
  • 最新专题
  • 鸟哥的Linux私房菜之Mail服务器
  • Exchange Server 2010技术专题
  • Windows 7 技术专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • ISA Server 2006 教程专题
  • Windows Vista 技术专题
  • “黑莓”(BlackBerry)专题
  • Apache James 专题
  • 分类导航
    邮件新闻资讯:
    IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮
    电子邮箱 | 反垃圾邮件|邮件客户端|网络安全
    行业数据 | 邮件人物 | 网站公告 | 行业法规
    网络技术:
    邮件原理 | 网络协议 | 网络管理 | 传输介质
    线路接入 | 路由接口 | 邮件存储 | 华为3Com
    CISCO技术 | 网络与服务器硬件
    操作系统:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | 其它操作系统
    邮件服务器:
    程序与开发 | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    金笛邮件系统 | 其它 |
    反垃圾邮件:
    综述| 客户端反垃圾邮件|服务器端反垃圾邮件
    邮件客户端软件:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | 雷鸟 | Eudora |Becky! |Pegasus
    IncrediMail |其它
    电子邮箱: 个人邮箱 | 企业邮箱 |Gmail
    移动电子邮件:服务器 | 客户端 | 技术前沿
    邮件网络安全:
    软件漏洞 | 安全知识 | 病毒公告 |防火墙
    攻防技术 | 病毒查杀| ISA | 数字签名
    邮件营销:
    Email营销 | 网络营销 | 营销技巧 |营销案例
    邮件人才:招聘 | 职场 | 培训 | 指南 | 职场
    解决方案:
    邮件系统|反垃圾邮件 |安全 |移动电邮 |招标
    产品评测:
    邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端
    广告联系 | 合作联系 | 关于我们 | 联系我们 | 繁體中文
    版权所有:邮件技术资讯网©2003-2010 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备05009143号