浩南 发表于 七 17, 2010
渲染农场[专题系列2] – 系统和软件
作者:浩南兄,张宏鑫 单位:浙大CAD&CG实验室
以下内容来自浩南兄,张宏鑫,由浩南兄撰写完成。版权声明:文章版权归原作者所有,转载时请以超链接形式标明文章原始出处和作者信息。
在开始前
- 主要问题:自己在搭建渲染农场的时候,如果选择管理软件。
- 主要介绍内容:从渲染器自带的工具到专业集群管理软件介绍。 附带介绍:浙大CAD&CG实验室开发的DRFarm渲染农场管理系统。
- 关于合作:如果你对开发和设计渲染农场管理软件有兴趣,也可以联系,或Email:yjl424@gmail.com,我们非常欢迎合作和交流。
无论是自己架设渲染农场,还是提供远程服务,内部总是一个计算机集群存在,有集群就需要渲染农场管理软件。除了自行开发的内部系统,国内使用比较多的专业集群渲染管理软件有如下四个:Axceleon Enfuzion、PipelineFX Qube、Virtual Vertex Muster、Frantic Film Deadline。这些集群渲染软件的基本特征是支持多种渲染器,不限定于特定创作环境,下文讲分别介绍和分析这几种软件。
Axceleon Enfuzion
Enfuzion从1996年就开始开发,主要面向高性能计算。其服务领域不仅是渲染,例如金融、能源、生物也都涉及。此外,它还是国内最早建立集群渲染的管理软件,中央电视台在Enfuzion的内核上自己开发了中文图形界面,并一直使用。Axceleon公司的广泛的业务包括了所有能够做任务分配计算,当然渲染是一个典型的应用。
EnFuzion的基本特点包括:
- 操作系统的支持,Linux、Mac、Windows、Irix
- 底层硬件的兼容,32位或64位的Intel、AMD、PowerPC、Spark芯片
- 通用渲染器的支持,3DMax、Maya、Affter Effect、Cinema 4D等等
Enfuzion的使用版本在官方网站注册之后,能够下载到,试用版最多支持5个节点。

上图是EnFuzion给用户看的逻辑图。可能是因为开发年代的问题,Enfuzion的架构比较简洁。系统需要一个控制节点,提供服务接口,用户可以在Web接口和单机应用程序GUI接口上进行远程操作。渲染需要的场景通过局域网共享的方式获取,可以应用在混搭的Linux和Windows和Mac的网络中。Node节点每次启动时,会执行一段启动脚本,来设置共享文件配置。

对于用户而言,登录、提交任务、监控进度、查看结果是主要的任务流。任务有很多中,例如3DMax、Maya、After effect等,具体的任务提交,需要填写的信息是不同的。EnFuzion的缩略图查看功能,非常值得称道,很方便的快速查看结果。

Enfuzion提供一个简单的网络接口,主要用来远程查看工作进度。
从软件实现角度分析,Windows版本的Enfuzion的界面,用MFC支持,比较简陋,且UI响应较慢。程序的各个部分做成控制台的独立部分,并有丰富的命令行调用方式,这样的接口提供方式,可以在原先软件的基础上进行二次开发,加入自己的程序界面,拓展功能。
Enfuzion还提供了各种创作环境的插件,方便直接调用,Maya插件的示意如下:

直接从场景中提交任务的好处在于,能够自动的读取出场景中的参数,不必在外部进行额外设置。虽然上文提到的Render Rocket已经具备了外部分析.mb文件(Maya的三维格式)的能力,但这种方式更容易实现。
小结,平台支持全面,更新及时,稳定性好,文档齐全,架构较老,用户体验一般。
Virtual Vertex Muster
Muster于2000年开始开发,早期开发团队据说只有5个人。2004年之后,重新开发新的版本,也就是现在使用的5.X系统,改进了重要的多操作系统支持、容错、64位平台支持等功能。Muster是较早拥有图形化界面进行任务分发管理的软件之一,最先凭借GUI界面获得客户好感。目前,通过中国代理购买,一套正版的Muster的授权使用价格在2W人民币左右。

Muster的架构和其他渲染农场结构大同小异,其中Dispatcher Service、Render client Service是必要的部分,Muster将这两个重要程序做成了系统服务,但也可以安装为控制台程序,手动启动。特别一提的是,在安装时,Render client端的安装程序会自动检测已经安装过的软件,例如检测Maya、3DMax的安装路径等等,这样便无须再手动的添加软件路径和版本。
和其他的Render Farm管理软件一样,Muster提供了GUI用户界面。主界面的元素包括:查看渲染节点的状态,任务完成状态,右侧是一个任务提交面板,可以选择任务类型,和VS2003的风格相似。

Muster的任务提交做的比较细致,例如Maya任务的additional选项将很多Maya命令行能够控制的内容都加入了进来,虽然一般都是在场景内部设置,但这样的确在不更改场景的前提下,的确提供了不少选择。

对于渲染节点,有一个特别的工具Client Management Console来管理,扫描网络,发现新的节点,如果某个节点出现意外,可以强制节点重启系统服务。机器是可以分组管理的,称做Pool。

Muster也提供了插件,目前只为Maya提供,这样能直接从Maya中提交任务。Muster架构中特别的一个地方是有Notificator,它会成为一个托盘图标,提醒任何有关用户和任务的信息。
Muster的跨平台功能不是很完善,主要的界面GUI只是在Windows下开发的,分发服务器也必须是Windows平台。分析使用版本中的文件关联,GUI部分,只有Service Contol的的管理工具是QT实现的。为了支持多平台,Muster的分发系统和渲染节点都是做成系统服务的,实现方式就是用跨平台库做成控制台程序。不过,Muster有一个Web界面,除了查看任务运行情况之外,还可以提交任务。

对于单帧图像,Muster也支持图像分割的渲染方式,当然要看渲染器支持程度。
小结,GUI用户界面丰富,跨平台支持一般,软件架构新,性能据称一般。
Frantic Film Deadline
Deadline是著名的Frantic Films电影特效制作公司开发的。Deadline是在制作公司成长起来的最贴近用户的方案,其用户除了Frantic Films自己以外,还有著名的暴雪游戏公司。
和其他渲染农场软件一样,Deadline也是采用局域网络共享的方式进行文件共享。有别于其他一些软件的是,Deadline只有一个Server,兼作管理和文件共享,不需要额外的设置文件服务器和任务分发管理服务器。

Monitor部分的界面如上,可以看到主题界面中,上部分是任务查看,下部分是计算节点的状态,右上角有关于细分任务(Task)的具体信息,包括:哪个任务的哪一帧,在何时被哪台机器所计算完毕,这台机器计算过程中的资源利用率如何。
值得一提的是,Deadline的任务提交是用Python脚本实现的,这样的好处是自己可以配置新的渲染器支持,上图
中的所有的提交按钮都有配置脚本文件。

如图所示,每一个任务提交的面板有都这样的定义支持,包括了执行路径、图标、初始化选项、参数还有Python脚本文件。这样的脚本生成的脚面如下(以Maya为例):

可以看出,除了任务的一般描述之外,这里还有一套任务的选项,主要是选择使用哪些机组(Deadline也将机器分组管理,以提高使用效率)、超时时间、完成任务行为等。渲染器自身的选项,各个任务提交界面之间是不尽相同的,一些特殊的功能,会有高级选项来单独设置。
对于任务提交,Deadline做了完善的脚本支持,凡事能够使用脚本的创作环境,都有对应的支持。例如Maya、3DMax等。

一些其他的细节问题,例如可执行路径的问题,这里没有做自动扫描检测,而是手工设定。界面如下:

小结:界面友好,功能完善,使用Python脚本,提供很多接口,不使用Web界面。
PipelineFX Qube
2001年,square USA组建了1500颗CPU的render farm系统,并且开发了管理工具用于渲染动画电影《最终幻想》和《骇客帝国》。随后发行了管理软件的商业版本,就是现在的Qube。Qube已经在《最终幻想》和《蚂蚁雄兵》、《怪物史莱克》等动画电影得到应用。PipelineFX自称投入12人年,耗资250万美元用于这个软件的开发。
Qube独特的地方是一个“动态划分”技术,渲染器只加载场景文件一次,然后不断的送入新的单个帧到各个渲染机器上,直到任务全部完成。这个过程不需要重新启动渲染器,加载场景。目前市场上的同类产品中没有一种拥有类似于运行在Qube上的这一引擎。
和Deadline一样,Qube也有自己的API系统,这样加入新的渲染器,应用到新的作业上去方便很多,不需要二次开发。此外,因为Qube已开始就开发用来管理数千CPU的集群系统,所以其大规模集群下的可扩展性,是经受测试的。

Qube的主界面如上图所示,上半部分主界面是关于任务信息,下半部分是细分任务(Task)的帧渲染信息。右边的窗口则显示图形统计、控制台输出内容等等。界面和DeadLine基本布局类似。
在最新的版本中,Qube对提交任务的种类进行了分门别类,还增加了Maya、3DMax、After Effect、XSI、Nuke的插件支持,这样就可以创作环境内部提交任务。
从上图也可以看到,Qube有Cmdline Job提交类型,支持自定义的渲染器。事实上,Qube在整个业务流程,任务定义方面做的非常细致,从其详尽的文档中可以看得出来。Qube从一开始,就做成了能够被调用,被开发的系统,提供了SDK,有自己的C++、Perl、Python的API函数库。

Qube整个界面系统是用Python脚本实现,动态加载,跨平台运行。每一个界面部分都是可以配置的,例如要新增加一个任务提交对话框,只要复制修改一个旧的就可以实现。
从任务提交,参数设置到日志管理,每一个功能Qube都提供了完善的结构定义和脚本操作命令。这样的底层的接口曝露,一方面给专业用户带来了详细的控制权,另一方面在一般用户入手方面造成了一定的难度。

上图是Qube界面设计提示。第二部分是一个过滤器,筛选不同类的Job。第四部分是Task详情,一个Tab上显示task的主要完成情况,另外一个Tab显示task的运行机器的状态。第五部分是属性和信息,第六部分是GUI的信息反馈。

Qube另外一个主界面是渲染结点状态,同样也有一个过滤器,如第二部分。特别一提的是第四部分,有一个图形化的节点状态示意。
Qube并没有对机器做显示的分组(Pool),不过自己有一套特定的任务调度机制,可以充分利用机器资源。此外,其渲染指令中,还能够明确的指定某个任务最多使用渲染机器,甚至可以指定使用那几台。所以,在底层控制命令上,Qube还是提供了足够的灵活度的。
其它
除了这些商业的专门的渲染农场管理软件,还有许多其他的软件可以用,开源的有DrQueue和SPIDER。创作环境或者渲染器自带的有Backburner、Vray distributed、MentalRay satellite等等,不过这些软件都不能兼容其他创作环境的场景。国内不常用到的集群渲染管理软件还有Alfred、LSF、ROYALRENDER等,其中LSF目前只是一个网格计算数据库,并没有专门对渲染农场的工具。
DRFarm集群系统
DRFarm是浙大CAD&CG实验室2008年开始独立开发的国产集群绘制管理系统软件,经过数个测试版本的洗礼,目前在江南最大的卡通公司中南卡通进行深入测试和调试。DRFarm的设计,吸取了诸多开发商的经验和未来的渲染趋势的需求,重要的支持内容包括了:
- 多平台支持。DRFarm的系统可以搭建混合集群上,例如Linux服务器和Windows计算节点端。这样能够极好的兼容某一些限定平台的渲染器和其他需要并行计算的软件。
- 多渲染器支持。多渲染器支持是商业集群管理软件的基本要素,一般的公司和工作室,还有渲染服务提供商,都会使用一个以上的系统来做渲染和合成。
- 多样用户界面。丰富的用户界面,能够给用户提供更多的选择,例如不同的操作系统下都可以可以方便的登录管理集群,此外移动中的用户可以通过移动版本来查看任何,监控集群状态。

上图是DRFarm控制端的某开发版本的截图。中文语言支持,堪称不习惯英文界面的用户的福音。基本的任务提交,进度查看,节点管理都能在主界面完成。此外,软件还提供了一个非常便利的渲染结果查看控件。

这是DRFarm的任务提交窗口,目前DRFarm支持一定程度的智能场景分析功能。用户可以批量上传任务,软件会自动分析出场景的基本信息,最重要的有开始帧,终止帧等。批量上传功能大大的解决了从前的系统中需要逐个配置任务的烦恼,算是软件人性化特色之一。
渲染管理系统一方面要智能,减少用户的参与量,另一方面要能够在大规模的环境下进行稳定的,容错的计算。这些部分当然是从用户界面中无法了解的。从目前的测试和设计文档看来,DRFarm在这方面的工作也是非常用心的:
- 暂停和停止
- 重渲选选项
- 节点端电脑崩溃的检测
- 断帧预防
- 超时处理
- 检查集群状态
- 强制重新启动
- 非激活节点剔除
- CPU温度管理
- …
DRFarm现在由浙大CAD&CG实验室维护和进一步研发,祝愿他们在关键技术上,能够有更多突破!






我只是搞笑一下而已
这。。。。。。。。。。。。。
在测试新功能。没想到这次RSS抓的这么快~~