基于集群的MPI主从式并行文件传输系统的研究与实现
2008-07-22
作者:龚 梅1, 王 鹏2,1
摘 要: 研究并实现了一种基于PC集群系统" title="集群系统">集群系统的MPI主从式" title="主从式">主从式并行文件传输系统。通过引入一个监控节点实时监控当前各真实节点上的连接数、请求任务量以及各节点的实际处理能力,并衡量不同内容节点的负载,以实现集群内各节点负载均衡" title="负载均衡">负载均衡,从而更合理地实现并行文件I/O" title="I/O">I/O的任务分配。结果显示,该系统具有近似线性加速比,即文件I/O传输速度随着并行节点数量的增多而提高。
关键词: 集群 MPI 主从式 并行文件I/O
随着高性能微处理器、高速网络、高性能分布计算三种技术的标准工具的飞速发展[1-2],以及应用对计算性能的无止境需求和并行编程环境的不断成熟,集群系统已成为价格合理的并行计算工具,并得到了飞速的发展。在需要提供高度可靠的服务以及强大的计算能力的环境中,集群系统以廉价而又容易获取的硬件和免费或常用软件为支撑[1],发挥着越来越明显的优势。
并行计算是由运行在多个部件上的小任务合作来求解一个规模很大的计算问题的一种方法[3]。并行计算通过降低单个问题求解时间、增加问题求解规模、提高问题求解精度,进而提供更好的容错能力、更高的可用性、可扩展性 [1,4]。随着Internet的迅猛发展,人们对信息共享的速度和质量都有了更大的需求。传统的信息共享(文件传输等)是简单的多对一结构,即多个客户端" title="客户端">客户端向一台服务器发出请求,服务器根据请求分时做出应答。然而随着客户数连接请求的增多及网络带宽的限制,数据传输面临着极大的瓶颈,其主要表现为请求响应延缓、数据传输速度缓慢或根本无法和服务器成功建立连接等。为了解决这种局限问题,本文研究并提出基于PC集群的MPI主从式并行文件服务系统。该系统通过利用PC集群的强大功能、MPI消息传递接口的支撑以及并行算法的引入,充分地利用网络资源和廉价的PC机硬件资源,有效地解决了现有网络资源信息共享、大量频繁文件传输问题。经过实验证明,该系统能够在在多平台、多学科、异构的环境下协同工作。
1 集群MPI并行通信程序设计
MPI(Message Passing Interface)是一种与语言及平台无关、可以被广泛使用的编写消息传递程序的标准[4- 5]。MPI是目前应用最广、效率最高、超大规模并行计算最可信赖的平台,几乎被所有并行计算环境(共享和分布式存储并行机、集群系统等)和流行的多进程操作系统(UNIX、Linux、Windows NT)所支持[4],基于它开发的应用程序具有最佳的可移植性、功能强大、性能高、适应面广、使用方便、可扩展性好等优点。
MPICH是MPI1.2标准的一个完全实现,是应用范围最广的一种并行分布式环境[4,6]。它包含一套程序设计、并行程序设计、环境组件、并行性能可视化工具及正确性等运行环境,提供文件并行I/O,支持MPMD(Multiple Program Multiple Data)编程和异构集群等。通过MPICH可以非常容易地连接现有的计算机组建集群进行高性能集群计算。
MPI消息传递的并行编程主要是通过调用消息传递库MPI函数来进行的[6]。它实现了处理机间的数据交换、并行任务之间的同步和收/发数据的功能和接口[4],并提供同步算法和异步算法的完全支持。
2 系统实现
2.1主从式 PC集群拓扑结构的实现
计算机集群系统,简称集群,是互相连接的多个独立计算机的集合,整个集合作为一个单独、统一的计算资源来使用[1]。这些计算机可以是单机或多处理器系统(PC机或工作站),每个节点都有自己的存储器、I/O设备和操作系统。集群系统具有可扩展性好、开发周期短、对现有软硬件资源继承性好、编程性好以及投资成本小等特点。其中最大特点就是能够实现负载均衡[2,4,6]。
集群主要用于并行计算,在构建计算集群系统时,尽量让所有节点使用相同的硬件配置。本文实现的集群系统主要采用主从式架构来进行数据运算,如图1所示。
集群系统通常由若干计算机通过网络连接而成,有一台计算机作为主节点(Master Node),Master上面有两块网络接口卡(NIC),一块NIC拥有Public IP,与 Internet 连接,另一块NIC为Private IP,与集群机连接[2],对外负责提供集群的服务接口,对内负责集群的管理;其他计算机作为从节点(Slave Node),采用的是private IP。Master与slave以高速网络连接,一般使用者允许从Master以RSH登入其他Node。Master提供NIS服务,作为与各Node的账号分享[6],Node可与Master享有相同的账号数据库,以便于管理;Master还提供NFS服务,作为与各Node档案的分享,Node的系统尽量简化,专司其职,是计算服务的主要提供者[2,6]。
2.2 主从式并行文件I/O监控调度策略
在集群服务器系统中,各个节点需要协同工作来处理一个请求,请求的合理分配将决定对请求响应的质量,这就是集群系统中一个关键性的问题——负载均衡问题[7]。本文研究的集群系统中,有一个监控节点,主要负责监控集群系统各个节点的负载均衡情况,以便于主节点及时调控任务分配。在系统中,先给系统中各个节点赋予一个任务分配时的权值Wi。监控节点所监控的各节点内容如下:
(1)请求的大小。可以引入当前处理时间t,作为用一个标准节点处理对应请求时的处理时间[7]。t与请求文件的长度FileLength、请求的内容Type(如请求网页或文件的内容、类型)、请求所触发的操作等有关,即t=g1(Type, FileLength)。一个节点的当前负载可以表示为:当前请求节点上所有请求的处理时间之和与这个节点的权值的比值,即:
(2)由于集群系统不同的服务,对系统负载影响的参数也不同。对于Web服务、Ftp服务等,主要是文件传输的网络负载的影响最大;同时由于动态请求和频繁的文件I/O操作,影响也比较大,故节点的真实负载根据参考文献[2]为:
有关。故节点的真实负载也就和节点的权值、当前节点负载以及新到请求的当前处理时间有关。
通过监控节点对各个真实节点的网络使用情况、处理器使用情况和利用率以及内存使用情况等参量的实时监控和计算,让通信和每个节点的带宽使用情况关联起来,从而控制集群系统负载均衡,并将监控的信息显示提供给用户的视图中,以更合理地分配请求任务。
2.3 基于MPI的主从式并行文件传输的实现
如何协调各节点任务量,将任务均匀分配到各计算节点以及各节点如何进行通信是影响并行程序性能的主要因素。任务分配前,各节点的负载均衡问题由前面一节的监控调度策略控制,具体的任务分配和请求转发则由主节点控制,进程通信则可由MPI提供良好的支持。
2.3.1 程序结构
(1)主节点处理流程
①与用户的http、ftp、tcp等建立连接请求,并处理用户请求。
②从监控节点获取集群系统监控信息,掌握系统各节点的负载情况。
③进行负载均衡、任务分配以及汇总重组相关子节点信息等功能。
具体的处理流程图如图2所示。
实现时应注意,主节点会根据监控节点提供的信息,一方面显示性能数据视图,另一方面对当前各个子节点的负载情况进行编号,编号原则是以负载最轻编号最小,相同负载情况下,随机按序编号,编号越大,负载越大。这样在进行任务分配时,也是优先考虑编号小的节点,并将以文件块为单位的剩余块数分给这个小编号节点。
(2)子节点处理流程
子节点拥护有主节点的文件系统目录列表信息,可以提供相应的文件数据服务。它接收主节点的任务分配,并缓存到自己的任务队列中;同时向监控节点报告自己的负载的相关信息。当子节点的任务队列不为空时,就依次从该队列中取出任务,并与客户端建立连接,进行数据传输服务。具体处理流程图如图3所示。
实际操作时,当并行文件操作的各个子节点在向客户进行数据传输时,注意要合理地重组好文件,也就是在并行程序实现时,必须注意文件指针的操作问题。
2.3.2 任务分配
本集群系统中,主节点维护一个完整的面向缓存的文件系统目录列表、真实文件系统和数据信息。完成的功能有:
(1)面向具体的客户端:负责客户端请求连接与断开;同时当主节点接收到来自客户端的第一次文件传输请求时,就立即将本节点上的文件系统中所有的目录列表信息返回给客户。
(2)面向集群系统中各个子节点:如果主节点接收到的客户端信息为下载传输具体文件时,则根据监控节点的具体反馈信息,对子节点进行负载均衡,然后对客户请求进行任务分解和请求转发,动态调度各个子节点,由各个子节点并行提供数据服务。
(3)面向监控节点:主节点在对客户任务进行动态分解之前,首先根据监控节点反馈信息,了解各子节点负载情况,然后遵循集群系统中最轻负载节点优先调度的原则,进行任务分配和请求转发;同时将监控的信息以用户视图的形式动态显示出来。
为了缓解主节点和子节点之间的通信量,系统中其他子节点也同样拥有简化的轻量级的主节点文件目录索引表以及文件数据。子节点拥有一个任务队列,用于缓存分配到的各个任务,主节点也拥有一个面向客户端的请求队列和面向子节点的任务分配队列,用于并行化操作。同时系统中主节点根据监控节点的反馈信息,及时地对系统中的各个子节点按负载大小进行编号,用rank来表示。
本系统实现的是基于MPI的主从式并行文件传输,并行化操作具体到各个文件传输和I/O上,采用的任务分配策略为“块分配”策略,即将各个具体文件操作连续地分成若干任务块[4],集群中每个子节点负责一个块的操作。
假设一个文件大小为fileSize,集群子节点的个数为nodeNo。为了实现并行化文件操作,首先计算出各个子节点至少分配到的文件块大小AveFileSize,即:
如果子节点的个数不能整除文件大小,则有:
HeavyNodeSize=fileSize MOD nodeNo
将文件剩余为HeavyNodeSize大小的块分给集群系统中最轻量级负载的子节点,也即当前时刻系统中编号最小的那个子节点。这样编号为rank的子节点分得的文件块大小为:
有了各个节点分配的块大小,就可以进行任务分配。
3 性能测试
测试环境为具有六个CPU的集群服务器系统,其中一个作为主节点,一个作为监控节点,其余四个作为服务子节点。本系统选择了对MB以上文件请求的服务情况,测试结果如图4所示。
系统中,由于引入了负载均衡策略,系统能够动态地调度各子节点,进行任务分配和请求转发,最大程度地提高了系统资源利用率和服务器的性能。通过集群系统的并行化操作,大大缩短了传统多对一模式时对多个客户端请求大文件传输时的服务时间。利用MPI不连续发送功能和消息接口通信功能,有效缩减了系统通信量。同时随着系统服务节点数的增多,相应地减小了大文件的操作时间,提高了用户响应速率。
本文研究并实现了基于PC机集群系统的MPI主从式并行文件I/O系统。该系统中,某个节点如果出现故障,不会影响到系统其他服务,并由系统及时将故障部分任务重新分配,可靠性高。系统性能测试表明,本系统具有很好的可扩展性和很高的性价比。如何将计算智能用于本系统,以改进其调度的性能并增强系统的鲁棒性,将是下一步的研究内容。
参考文献
[1] DIETZ H. Linux parallel processing[J/OL]. v980105,5 January 1998.
[2] 章文嵩.Linux服务器集群系统[J/OL]. http://www-900.ibm.com/developerWorks/cn/linux/cluster/lvs/part1/.2002-04.
[3] HWANG K, XU Z. Scalable parallel computing: Technology, Architecture, Programming [M]. WCB/McGrawHill,NY,1998.
[4] SIMITCI H. Pablo MPI instrumentation user guide. Technical Report, University of Illinois Urbana at Urbana Champaign, 1996.
[5] 刘华,徐炜民,孙强.基于MPI并行程序的性能评测可视化工具[J]. 计算机工程, 2004,30(10).
[6] 王莹,屈一新. PC集群的建立与MPI并行环境的实现及其应用[J].北京化工大学学报, 2001,28(4).
[7] 任彦琦,彭勤科,胡保生.一种基于内容的Web集群服务器负载均衡算法[J].计算机工程, 2005,31(2).