仝伯兵
摘要:集群式渲染系统已成为国内外电影、动画制作的重要组成部分。对当前主流的集群渲染系统结构进行了分析,其中主要涉及渲染任务管理、节点管理、任务调度等方面。从系统建构的角度,重点分析了集群渲染系统中网络性能、节能控制、负载均衡等方面的优化技术与实现手段。
关键词:集群渲染;任务调度;节能控制;负载均衡
DOIDOI:10.11907/rjdk.143672
中图分类号:TP319
文献标识码:A 文章编号文章编号:16727800(2015)001008903
0 引言
渲染是一种计算机图形图像生成技术[1],它以存储在计算机中的几何场景模型为基础,经过附加色彩、纹理及材质,并根据设定的光照条件及场景光照关系,计算生成具有高真实度的视景图像。其关键技术包括场景模型的简化和管理、光照模型、纹理映射、材质设置、渲染算法等方面。渲染计算已成为多个产业领域的基础需求[2],特别是在3D动漫电影产业领域。而随着现代动漫电影制作对产品质量的不断提升,4K电影的产生使渲染计算量进一步增大,计算时间也越来越长,渲染已成为动漫电影产业发展的一个瓶颈。随着计算机网络技术和中间件技术的发展,集群系统的应用不断扩张,将渲染技术与集群系统结合的渲染集群系统成为动漫电影渲染的主要方式。
1 集群渲染系统
集群渲染系统又称渲染农场,是一种“分布式并行集群计算系统”,它指在集群渲染管理软件的统一调配下,将许多运行渲染软件的计算机协调工作以并行方式完成所分配的渲染任务。农场的管理分为人工手动管理和系统自动管理两种。其中人工手动管理方式在渲染农场中普遍存在管理效率低下、能源浪费严重等问题,不适合大型农场。系统自动管理方式的农场通过管理服务器上的管理软件将渲染任务分发给渲染节点,并对渲染节点进行统一调度,可以很好地利用计算资源,有效地提高了管理效率,适于大型农场。
1.1 国内外应用现状
目前,主流的渲染集群管理系统包括Axceleon Enfuzion、PipelineFX Qube和Virtual Vertex Deadline等[1,3]。在国外,集群渲染系统已经在很多商业影片中得到应用。如在美国电影《变形金刚》中,采用了Mental Ray和Render Man渲染软件,对创作的所有机器人图像进行了集群渲染。工业光魔公司在2002年组建了强大的集群渲染系统Death Star,为《星战前传三部曲》提供渲染服务,该系统拥有750个渲染节点,共1 500颗AMD Athlon 1 600 CPU,每个节点配备2G内存。此外迪士尼、梦工厂、二十世纪福克斯等公司都有自己的大规模渲染集群,使得每年都有大量优秀影片产出。
在市场需求和国家政策的带动下,国内的渲染集群近年来也得到迅速发展。如中央电视台运用的并行集群渲染体系由100台HP主机构建,采用的操作系统是Turbo Linux,通过Enfuzion与Platform LSF集群管理软件进行任务的调度与管理。上海多媒体公共服务平台在立体式制作软件方面使用Maya、3dsMax与Softimage/XSI等,在渲染软件方面使用Mental Ray,集群渲染系统采用Muster分发软件,能够制作并渲染所有的立体动画,同时也使用了清华同方的基于GPU的集群渲染系统。由赞奇科技与中国惠普共同开发的渲云系统,是国内领先的图像云集群渲染服务平台,该系统在Linux和Windows平台下使用3dsMax、Maya结合Mental Ray、VRay等软件进行渲染,取得了很好的渲染效果。
1.2 渲染集群管理系统架构
通过对当前各种集群渲染管理软件的分析,文献[4]归纳出集群渲染系统需要由客户端、管理节点、计算节点以及共享文件系统构成,图1所示为赞奇科技所研发的渲云系统模块交互图。用户在客户端完成3D场景,将场景文件输入到共享文件存储系统中;然后通过管理软件接口将该文件提交给渲染集群管理节点(图1中为运维);接着启动渲染管理软件,通过管理节点查找空闲节点,通过任务分发器把渲染任务分配到空闲渲染节点上;空闲渲染渲染节点接收到任务后,利用自己的渲染引擎开始渲染工作,并将工作情况报告给渲染管理节点;渲染管理节点把收到的负载、资源利用率等信息反馈给管理软件,同时按用户需求进行信息反馈;整个场景渲染完成后,将结果再输出到文件服务器中,用户得到所需的渲染结果图像序列。
图1 渲云模块交互
完整高效的集群渲染系统涉及多个方面的需求[45],主要包括渲染任务管理、节点管理、任务调度、文件存储和可扩展性等,具体为:
(1) 渲染任务管理。接受用户提交的有效渲染任务进行渲染,用户可以对其所提交的任务进行控制包括提前终止、临时暂停或者恢复暂停的任务,集群渲染软件必须提供相应功能而不是靠人工手动执行。
(2) 节点管理。节点管理是集群系统的基本管理功能,管理人员可以增加或删除节点,并且可以对节点进行禁用、恢复、关机、唤醒和查看日志等操作。
(3) 任务调度。任务调度是集群渲染系统的核心功能,对用户提交的渲染任务拆分成单个或多个子任务,并将子任务信息转换成节点渲染软件识别的命令行参数,根据一定的调度算法指定节点进行渲染,实现系统负载均衡。
(4) 共享存储。场景文件在共享服务器中存储,文件服务器在进行添加时,集群管理系统需对节点磁盘挂载状态进行检测,并且在共享存储添加、删除、更改成功后自动进行文件服务器挂载。
(5) 可扩展性。系统架构处理需考虑功能合理性外还应考虑可扩展性,如在集群规模下负荷超出处理能力时则需修改框架,以及支持增加新的业务模式、运行模式等。
2 集群渲染系统优化分析
随着集群渲染系统的逐步完善,集群渲染系统的优化研发应主要集中在网络性能、节能控制、负载均衡等几个方面。
2.1 网络性能
由于集群渲染系统利用以太网将多台计算机连接组成一种分布式并行集群系统,在工作过程中,集群渲染管理软件的统一调度以及场景文件的传输保存等都需要考虑网络的性能。在不同的PC集群环境下,其网络性能有很大差异,文献[6]在千兆以太网PC集群上进行了基于通用OpenGL和MPI的三维图像并行渲染仿真测试,给出了数据及分析结果。实验表明,千兆局域网的网络速度不是恒定的,不同配置的网络集群网络速度差异很大。在网络系统规划中,服务器的性能以及负载容错能力,路由器及交换机的配置和兼容性以及网络传输过程中信道使用率和吞吐量对网络的整体性能都有至关重要的影响。因此,通过提高网络性能对优化集群渲染系统十分必要。
2.2 节能控制
近年来,集群渲染中的能耗问题越来越受到重视。由于渲染集群耗电量极大,采用合理的节能控制降低集群能耗不仅可以节约能源,而且可以延长机器寿命,因此节能控制显得格外重要。文献[7]讨论了嵌入式集群平台前端和后端的节能策略,提出一种针对嵌入式Web集群服务器的能耗节约方案,并将该方案用于基于Linux的嵌入式Web集群服务器平台。文献[8]认为嵌入式集群的总耗能主要由CPU的能耗决定,其它部件的能耗所占比例较小。文献[9]介绍一种将神经网络预测算法引入渲染集群节能控制的研究,提出基于多步预测的自动开关机控制算法,并验证了其有效性。研究认为关闭部分节点而使其余节点处于较高工作频率比全部节点处于较低工作频率有助于降低能耗,并且在此基础上合理运用预测算法将任务对资源的需求进行预测动态管理节点的开启与关闭,从而达到节能的目的。目前,节能控制的研究仍存在很多不足,如何对集群渲染系统进行合理规划达到节能控制的目的对合理利用资源具有重要意义。
2.3 负载均衡
集群渲染系统负载平衡是为了解决渲染过程中出现的不平衡问题,使得集群渲染系统能够充分利用每个工作节点,来提高渲染集群管理系统的工作效率,任务的分配和节点的调度是系统的核心,常见的调度算法主要有FCFS、LSF、SPT等。其中先来先服务(FCFS)最大的优点是易于高效实现,而且作业的执行顺序可以预见,保证了系统的公平性,但同时也牺牲了系统的吞吐率和利用率,造成了资源浪费。最小空闲时间优先算法(LSF)能够按照被调用的急切程度对任务进行调度,但它增加了系统开销,且任务间的频繁切换易造成颠簸现象。短作业优先(SPT)能提高作业吞吐率,降低短作业等待时间,然而执行时间长的作业等待时间过长。以上皆为静态调度算法,不必考虑系统运行时状态机目标节点的负载信息变换,优点是系统开销小且实现简单。然而多数情况下,用户请求是多样的,且多个处理器的工作负载会随着计算的进度而变化,为此提出了动态调度策略。动态负载均衡允许任务随着系统负载分布的变化进行迁移来保持系统的均衡,目前已成为研究的重点。任务调度算法往往根据任务的时间属性或者价值确定任务的优先级,而优先级随着任务的调度动态变化。任务调度的频繁切换会出现颠簸现象,对此常用方法是引入抢占阈值调度方法。文献[10]提出了基于动态调整抢占阈值思想的改进算法,该算法在抢占阈值调度方法中,每个任务除了分配一个基于空闲时间的优先级外,还为每个任务动态设定一个抢占阈值。在文献[11]结合速度单调算法(RM)、LSF和多参数调度策略优势,从调度策略中调度优先级确认和动态生成抢占阈值的方法出发,给出了动态调整策略的算法,调度策略优先级为:
j=α*X(t,s)+β*Y(t,s)(1)
其中j表示任务优先级,X(t,s)为RM算法优先级权重,Y(t,s)为LSF算法优先级权重,α,β为参数值。而对于抢占阈值的计算给出一个线性方案:
h=γ*j(0)+(M-γ*j(0)*(j-j(0))/(M-j(0))(2)
其中M为优先级的最大值,γ为一个系数常量,j(0)表示初始优先级。文献[12]采用全局集中式负载均衡策略,结合反馈控制的思想实现集群系统消息的快速传递、数据处理任务的实时调度和实时分配,实验证明其性能良好。在负载均衡方面,以上是从任务调度方面进行分析,另外任务执行过程中,节点资源利用率的负载均衡也很重要。文献[13]采用一种基于负反馈控制的负载均衡算法,该算法将节点Si的处理能力C包括CPU数量ni、CPU主频C(Ci)、内存容量C(Mi)、磁盘I/O速率C(Di)、网络吞吐量C(Ni)4个指标,再通过一个函数将这4个指标加权求和,得到整个节点的计算能力,见式(3)。其中k-{k1,k2,k3,k4}为各项指标的权重参数,来强调某一类计算对各项指标的依赖程度。
C(Si)=[k1,k2,k3,k4]niC(Ci)C(Di)C(Mi)C(Ni),i=1,2,...,n;∑41kj=1(3)
同时由于渲染任务每一帧场景表现都不一样,在进行负载均衡计算时还要考虑渲染任务的权值,并采用测试进化的方式对任务权值进行估算。从以上分析可以看出,负载均衡的研究重点主要包括任务调度和系统资源两个方面,通过实现负载均衡保证系统稳定性和任务的实时性,并充分提高系统资源利用率,这也将成为集群渲染系统最主要的研究方向。
3 结语
自2007年IBM和Google提出云计算的概念后,云计算得到了快速发展,部分技术已经进入商业应用。云计算将“云”中的各种软硬件抽象为各种资源对外提供服务。图形学的快速发展使得当前世界对于计算机图形渲染能力的要求越来越高,将对计算能力敏感的应用程序扩展到云,是云计算发展过程中一个新的发展方向,而3D渲染则是其中的典型代表[14]。因此,对于渲染云的研究具有很重要的现实意义,国内赞奇科技的渲云系统在该方向的研究已取得一定成果。本文对集群渲染系统的国内外发展现状进行概括,对集群渲染系统的框架概况以及集群系统在研究中面临的问题进行了优化分析,并对集群渲染系统未来的研究方向进行了展望,以供相关技术发展和研究者参考。
参考文献:
[1] 戴敏利,陆峰,王敏.集群渲染系统及其应用现状研究[J].软件导刊,2009,18(4):6769.
[2] 蔡靖.动漫平台集群渲染系统的研究与实现[D].成都:电子科技大学, 2013.
[3] 王永宾,石民勇,洪志国.网络环境下集群渲染技术综述[J].微电子学与计算机,2008,25(9):8183.
[4] 罗秋明,孙宏云.集群渲染管理软件的构建技术与框架设计[J].计算机工程,2008,34(11):249251.
[5] 李樱,王永滨,王珂,等.广域网环境下分布式动漫渲染研究[J].微电子学与计算机,2009,26(8):2537.
[6] 彭帅,李冬梅,李朝晖.基于PC集群的三维图形并行渲染性能分析[J].计算机应用,2010,30(2):547550.
[7] 刘峥.嵌入式Web集群服务器节能机制的研究与实现[J].计算机工程,2007,33(13):138140.
[8] ELNOZAHY E N, KISTLER M, RAJAMONY R. Energyefficient server cluster[C].Proc. of Workshop on Poweraware Computer Systems,2002:133136.
[9] 张立敏.渲染集群节能控制研究与实现[D].长沙:湖南师范大学,2008.
[10] 张亭.一种改进的集群系统的任务调度算法[J].实验室科学,2013,16(3):8284.
[11] 傅游,李丽丽,花嵘.渲染集群管理系统负载平衡算法的研究与实现[J].计算机研究与发展,2011,21(7):9497.
[12] 马海银.智能集群渲染管理软件分析与设计[D].济南:山东大学,2013.
[13] 齐杰,高春鸣.面向集群渲染的反馈控制负载均衡算法[J].计算机工程,2008,34(16):129134.
[14] 王总辉,史梳酥,陈文智.基于虚拟化硬件3D图像加速的渲染云框架[J].电信科学,2012(10):7379.