2. 集群协议V I A
I n t e l、微软和康柏已经制订了集群系统通信的一项新技术,称为虚拟接口体系结构(V I A)。尽管这个名字无法激发人们的想象,但这项技术对于集群计算也许是极其重要的。V I A的总体思想是避免传统数据网络协议处理的过度开支和延迟,代之以能完成以下功能的网络通信系统:
•为每个用户产生一个专用的I / O端口地址。
•为传输功能保留系统内存。
•实现简单的基于队列的系统-系统的传输机制。
•使用指向内存位置的指针重组、发送、接收和分发消息。V I A中的“虚拟”是指,每个应用有一个专门的虚拟I / O端口用于通过网络发送和接收数据。
与虚拟内存类似,V I A提供了虚拟抽象层,它能使应用程序访问网络资源而不用考虑系统内存访问。这是通过V I A设备驱动程序和应用层函数实现的,其中应用层函数为V I A操作分配所需要的系统内存。
V I A内存通过驱动程序和网络适配器管理的队列来分配。支持V I A的应用程序使用这些队列在系统之间读写数据。应用程序在其控制的内存产生指向数据存储位置的指针列表后,V I A消息可以在后台产生。而传统的协议不是这样处理代码的,它们在数据通过网络协议栈时做多个数据的物理备份。设计这种引用数据的目的,是在通信处理时减少了内存操作的数量,以此来节约时间。
V I A的内存操作,包括发送应用指定接收应用存放数据的位置,这允许一个系统更新另一系统的内存。注意这并不允许通过操作系统或任何其他应用程序写入系统内存。但是这的确提供了应用程序之间极有效和高速的传输。这种能力称为远程D M A。
1) 实现V I A的要求
V I A并不是免费的,不能通过从I n t e r n e t上下载V I A驱动程序来得到。在V I A能够在集群中工作之前,需要进行下面几项重要的开发:
•设计和生产支持V I A的网络硬件。
•开发指定的V I A设备的驱动程序以提供V I A服务。
•开发支持V I A的应用程序以利用硬件和设备驱动程序提供的V I A函数。
•测试V I A系统和组件。
注意,实现V I A可能并不需要改变操作系统。这完全取决于操作系统管理内存的方式。如果操作系统允许设备驱动分配足够多的内存,并且限制其他应用程序和系统服务对这部分内存的访问,则不需要改变操作系统即可实现V I A。
不要低估实现V I A所需要的应用程序更新。应用程序需要被更改为使用特殊的V I A的内存映射I / O。这也许需要应用程序厂商对他们的代码做重大改变,对大型应用,这可能需要几年的时间。
也许上面列出的要求中最困难的部分是产品测试。厂商们要对每一种V I A软硬件产品的组合进行测试。这种测试很重要。对于一项服务的测试,如分布式锁管理器,需要在多种集群和系统配置下进行。“在某种最差负载时是否存在系统数目的临界点,使得锁管理器开始崩溃?”,这个问题表明即使只是确定测试的范围也很困难,实际的测试过程和方法要简化得多。
2)VIA中的消息优先级
支持V I A的网络系统,能够根据消息对集群的重要性赋予消息优先级。这意味着心跳和锁信息可以得到比L A N或S A N通信更高的优先级。由于这些都是短消息,这对其他传输的影响可以很小,然而对于一个大型或者繁忙的集群来说,延迟发送这些消息可能造成问题。
阅读(464) | 评论(0) | 转发(0) |