当前位置: 首页 > 信息分类 > 技术文章 > 首页技术 > 正文
网格中的带宽管理
hc360慧聪网通信行业频道 2004-05-08 16:24:29
    在一组计算机之间分配工作时的一个问题是跟踪工作的分配可能会很困难,而分配不当会导致带宽问题。这里指的并不是网络性能意义上的带宽,尽管那也可能是一个问题,这里说的带宽是向客户机和提供者分配工作、网格的整体带宽性能、工作的分配方式以及进行分配的服务器。Martin C. Brown 详细介绍了如何使网格的性能达到最佳。
    
     在本文中,我们将分析在网格中分配工作时如何对它进行跟踪和管理。这涉及管理在各个计算机和分配工作的服务器上的工作负载。我们还将分析如何调度工作使得工作块和单元可以及时地完成。
    
     让网格无约束地运行
    
     要理解为什么带宽管理这么重要,我们需要看一下为什么让网格无约束地运行 -- 没有任何形式的带宽管理 -- 会有问题。带宽(bandwidth)这一术语实际上包含了所有网格中的两个重要内容:
    
     CPU 占用。包括单个提供者/客户机级别和网格级别。网格的 CPU 带宽是网格可以操作的最大速率。
    
     网络占用。网格可用的带宽和网格正常操作时使用的带宽。更大的带宽可以让我们构建更复杂的、更强大的网格以处理像图像渲染这样的任务。
    
     这两个元素影响大量不同的系统,让它们取得正确的平衡很重要,否则就有可能得到无法处理其负载的低效网格,或者客户机会长期处于过度使用其可用资源的状况。
    
     客户过于频繁地访问服务器。如果所有的提供者都同时开始向代理(broker)请求工作,那么您很可能会出现带宽问题 -- 也许是网络、也许是服务自己的 CPU 性能,使它不能向客户机提供工作单元。
    
     客户机工作过载。除非一直关注网格中客户机的性能,否则就可能让某个客户机工作过载。对这个问题有几种解决方案,包括只允许客户机执行一个工作单元。
    
     客户机缺少工作。如果网络带宽或者服务器过载,那么有可能客户机会缺少工作。
    
     服务器缺少工作。这看起来是一个奇怪的问题,但是如果没有正确地管理工作,那么就可能向客户机分配过多的工作,而使服务器闲置。
    
     服务器错误分派工作。不用说需要很好地记录以保证知道哪个提供者正在处理哪一个单元。
    
     通过管理服务器(将作业提交给网格的工作代理)和客户机(所需资源的提供者)的带宽,应当能够使网格环境的性能达到最大化,同时防止过度使用网络、CPU 和其他资源。
    
     不管是何种网格类型,带宽管理都是要对若干个变量进行调整以支持系统并使网格性能带宽最大化,同时减少对网络或者 CPU 带宽的影响。例如,改变工作的分配方式可能会减少网络带宽,而代价则是 CPU 的性能。有两种主要的控制整体效果的方法,我们将在下面进行分析。
    
     控制工作负载 -- 分布式计算
    
     最终,管理带宽的问题归结为如何管理网格中的工作负载。而对工作负载的管理又归结为所支持的网格类型。
    
     如果网格是一个将个别的计算和可计算的组件分配给客户机的计算平台,那么通常可以将工作划分为几个独立的工作单元。如果是在开始分配工作 之前,而不是在客户机发出请求时在服务器上进行划分,那么就可以更容易地管理个别的工作单元。
    
     如何存储工作单元和包含单元分配信息的元数据取决于如何看待发送给客户机的单元。必须可以让多个用户访问这个管理系统。SQL 或者其他的数据库系统可以很好地做到这一点,不过也可以通过像文件系统这样的简单方式实现它。XML 也是一种可能性,但是保持信息的更新可能会很复杂。
    
     使用 SQL 时,可以创建一个相当简单、只带有两个表的系统。一个 WorkQueue 表包含系统中的所有工作单元及它们的状态(如等待、分配给客户机或者已完成)的信息。第二个表 ActiveUnits 包含哪个客户机得到哪个单元的信息。如果愿意,可以增加第三个表 CompletedUnits,以包含已经完成的工作的信息。
    
     从控制分配工作的方式的角度看,需要开发一种根据客户机的可用性向它们分配工作的系统。做到这一点最容易的方式是让客户与代理联系并请求工作 -- 要么是在完成工作之前,要么在完成待处理的工作后。
    
     带宽受到几个因素的影响,虽然没有简单的公式告诉您有哪些因素,但是很可能是以下因素之一:
    
     网格中的客户机数量。
    
     每次分配的工作单元数量。
    
     处理每一个单元所需要的周期。
    
     工作单元大小(源和响应)。
    
     例如,如果有 20 个客户机,每一个有 20 个工作单元,而每一个工作单元(源和响应)大小为 100KB,那么在服务器上的带宽需求峰值就是 20x20x100KB (400000KB)。这是相当大的数据量,在向客户机分配每一块工作后都要传输。事实上,服务器需要在本地管理大量的信息,更不用说在网络上分配的信息了。
    
     当然,计算系统很少对每一个单元使用完全一样的周期长度。如果一个单元的最短计算周期为一分钟,最长时间为 10 分钟,那么客户机很可能每过 20 分钟到 200 分钟向服务器请求更多信息。平均法则意味着在这种情况下整个网络和服务器需求显著减少了。我们可以假定一个客户每过 10 分钟向服务器请求一次工作、每次传输大约 2000 KB,这并不很多,即使是对于相对较慢的拨号连接来说也是如此。
    
     不过,增加公式中的客户数量会遇到同样的基本问题。将客户机数量加倍,就会加倍网络需求或者频率减半,即变为每 5 分钟 2000KB 或者每 10 分钟 4000KB。
    
     有效管理它的最容易的方法是非常密切地监视并控制分配给客户的工作单元数量。这可以有两种方法:先经过试验后手工设置一个数值 -- 就像这里的例子一样 -- 或者动态管理系统。
    
     在动态系统中,必须让客户机或者服务器监视个别客户的性能 -- 即每分钟/小时(取最合适的时间间隔)处理的工作单元数。然后根据这些数值和最大负载调整分配。
    
     不过还需要当心。不要将给每一个客户机的工作单元的数量调整为在同一周期内处理不同的单元块,或者让服务器过载。还要记住网格的总负载。例如,一个有 1000 个工作单元和 10 个客户机的网格,如果每一个客户机和工作单元都是不同的,则不应当简单地对每一个客户分配 100 个单元。相反,将每一块工作按比例分配给每一个客户机。
    
     控制工作负载 -- 分布式资源
    
     在一个资源网格中,如在特定时刻需要指定的 CPU 资源的网格(如基于网格的 Web 应用程序)或者用磁盘或内存存储信息的网格,代理对信息的实际记录更为重要。在基于网格的存储系统中,代理需要准确知道在需要时,可以从网格中保存的哪些数据中取回信息。
    
     这里,带宽管理就是监视网格中客户机或者提供者的当前性能、并只向同时具有能力和所需性能的客户机指派工作。这使网格系统更复杂,但是管理也更容易,因为您有具体的数据可以决定将工作安排到什么地方。
    
     调度和跨网格协作
    
     对于时间或者顺序敏感的网格项目,服务器需要更密切地掌握每一个客户机的能力、负载和其他参数。例如,IBM WebSphere 产品结合了一个在网格中的服务器中分配工作的网格系统以更快地响应用户请求。在这种情况下,将请求重定向到已经处于满负载状态的网格提供者是不行的。
    
     相反,需要让客户机提供比已完成的工作更多的信息。在某些情况下,甚至需要使客户机除了与服务器通信外,还要彼此通信。这样就可以减少所有级别上的带宽,不过还是在向具有不同的 CPU 和/或网络带宽的客户机上分配工作时最有效。
    
     协作系统在需要处理时间或者顺序敏感的元素时最有利,不过即使只希望使网格能够实现最佳性能,它也同样有帮助。对于服务器驱动的系统,惟一实现这一级别控制的方法是使提供者和工作单元代理之间有定期的双向通信,并让每一个提供者每一次处理一个工作单元。这样,代理就可以将下一个单元转发给下一个空闲的可用客户机。
    
     这种解决方案在网格大小增加、或者处理每一个单元所需要的时间减少时会出现问题。不管是哪种情况,发送给代理的请求数量都会增加,这样增加了代理上的负载和整个网络的负载。对于客户端,系统是低效的,因为交换的工作单元数量增加了,它所占用的时间本来可以让客户机用于处理工作单元。
    
     使用协作网格时,每一个客户机都可以度量自己的性能,然后处理用两种方法之一收集到的负载信息。
    
     第一种方法是向代理报告性能信息,这样代理就可以在下一次分配时向客户重新提供合适数量的工作单元进行处理。这使得工作可以有效地分配给客户机,并使您可以将工作调度给提供者以得到结果。可以在图 1 中看到它是如何工作的例子 -- 服务器给 Client1 分配的单元数量与给 Client2 的不一样,因为 Client1 更慢一些。
    
     图 1. 使用动态服务器的协作计算
    
    
    
     为了让这种方法有效地工作,需要在客户机上记录性能,也就是处理一个单元所花费的时间,然后用一种机制将这种信息提供给代理。在代理端,需要可以对客户机进行排序并跟踪分配给它们的工作单元。然后当客户机请求工作时,它可以确定客户机可以处理的工作单元数量并发送给客户机进行处理。如果是代理直接向客户机分配工作,也可以使用同样的过程。
    
     第二种方法更复杂一些,并需要客户机除与服务器通信外,还可以彼此通信。在这种情况下,分配给每一个客户机的工作单元数量是一样的。除了工作单元,每一个客户机还会收到其他客户机和它们的工作单元的记录。如果一个客户机先完成了其单元,那么它可以与其他客户机联系以确定它们是否有未完成的单元、并将它们下载到自己的工作队列中。其工作结构就像图 2 所示,其中客户机与其他客户机和服务器通信以取得工作。
    
     图 2. 使用直接通信的协作计算
    
    
    
     这个系统更接近于共享文件和资源的点对点系统。尽管它的开发和管理更复杂,但是它提供了某种自治性,对于代理系统非常繁忙的网格网络会很有用。除了从服务器直接分配工作,通过在客户机之间分配工作,减少了代理服务器的负载,因而减少了这台计算机及其网络连接的带宽。不过,这增加了客户机上的负载,并且虽然可能改进了系统的效率,但是它可能是以性能为代价的。因为增加的负载,这个系统可以在客户机提供者之间存在连接的网格环境中工作得非常好。 
     
    
信息来源:中宽网 
 

相关信息
·让网格关照IT(2004-04-08 14:20:24)
·网格计算及其在数字城市中的应用(2004-03-03 09:59:05)
·网格计算的数字城市空间信息应用(2004-02-26 14:24:44)
·WDM改变城域网格局(2004-02-03 23:03:06)
·网格技术及应用一览(2004-01-29 16:11:02)
发表评论
标  题
署  名
联系方式
内  容
确  定
请您注意:
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本网留言板管理人员有权保留或删除其管辖留言中的任意内容
·您在本网留言板发表的作品,本网有权在网站内转载或引用
·参与本留言即表明您已经阅读并接受上述条款