"Smedge를 이용한 네트워크 분산 렌더링방식의 이해"


글. 이성찬
Nthma Production Team
Render Part TD
Nthma Production Team (http://www.nthma.com)


노 트 : 이 튜토리얼은 Smedge 2.33.1 버전과 Alias Maya 5.0 버전에서 테스트 되었다.

▣ 시작하면서

예전 신문에서 이런 기사를 읽은적이 있다. "일반 가정용 PC 또는 회사의 PC들을 활용함에 있어서 하루중 그 PC의 CPU가 동작해서 일을 수행하는 시간은 얼마나 될까?" 라는 질문이었는데, 그 대답으로 나온 것이 일반적으로 우리가 마우스를 클릭하여 어떤 작업에 대한 일을 수행하는 것은 일반적으로 30초에 한번꼴 이라는 것이다. 이것은 정말 일반적인 얘기이고, 하루중 컴퓨터가 켜있는 동안에 CPU가 그 능력을 발휘하는 시간은 컴퓨터가 켜있는 시간보다 휠씬 더 미비하다는 결론이다. 이 말에서 우리는 무엇을 배울 수 있는지 생각해 보자.

결국은 우리가 비싼값을 주고 산 CPU가 하루 종일 거의 놀고 있다는 얘기가 되는데, 이 얼마나 아까운 것인가? 우선 일반적인 예를 들어 얘기해 보았다. 그렇다면 컴퓨터 그래픽이라는 것을 하는 우리에게 있어서 이 CPU란 놈을 놀지 않게 하고 열심히 부려먹을 수 있는 방법은 없는 것인가? 필자가 이 번호에 말하고자하는 내용과 깊은 연관이 있다. 컴퓨터 그래픽, 특히 3D 프로그램을 이용한 애니메이션을 만드는 공정을 하는 작업이라면, 반드시 Rendering이라는 과정을 거쳐 결과물을 얻어야 한다. 하지만 이 Rendering이 라는 것이 장면에 따라, 크기에 따라, 컴퓨터의 성능에 따라 지대하게 영향을 받는다.

그래서 등장한 것들이 여러개의 컴퓨터를 연결해서 여러 시퀀스들을 뽑아내는 과정의 네트워크 렌더링이라는 것들이 개발 되었다. 그러나 과거의 비싼 컴퓨터 사정에 따라 개인 1인 1대 소유의 컴퓨터에 따라 그 제약을 크게 받았다. 네트워크 렌더링이라는 것이 결정적으로 2대 이상의 PC나 CPU를 요구하기 때문이다. 그렇다면 현재는 어떠한가? 컴퓨터의 가격은 성능대비 가격대가 정말 많이 내렸고, 또한 2대 이상의 컴퓨터를 소유하게된 가정도 심심치 않게 발견할 수 있다.

그렇다면 작게는 개인 작업자의 가정에서 또는 소규모 애니메이션 업체에서, 넓게는 렌더팜을 이용한 기업에서의 네트워크 렌더링에 대한 방법이 어떤 것이 있는 것인지? 또한 그 방법은 어떻게 사용하여야 유용하게 쓰일 수 있는 것인지에 관해 최고의 네트워크 분산렌더링 프로그램이라 불리워지는 Smedge를 가지고 지금부터 알아 보도록 하자.

(노트: 여기에 소개된 Smedge에 대한 소개는 Uberware사의 Smedge 매뉴얼에 대한 번역을 바탕으로 만들어 졌음을 밝혀두고, 실무 테스트는 극장용 애니메이션 Pre-Production 단계에서 사용가능을 충분히 검토 하였음을 밝혀 둔다.)

▣ 소 개

■ 네트워크 분산렌더링이란? 그리고 왜 필요한 것인가?

: 3차원 그래픽 가속기는 컴퓨터 내에서 3차원 화면을 구현할 때 그래픽 연산 능력을 증가 시켜 CPU에 걸리는 일의 양을 줄임으로써, 결과적으로 시스템 전체의 성능을 증가시키는 장치다. 현재 널리 쓰이고 있는 그래픽 가속기는 일반 PC에 기반을 둔 단일 그래픽 가속기로써 게임 등의 3차원 화면 렌더링을 위해서 주로 쓰이고 있다. 하지만 일반 PC 기반의 단일 그래픽 하드웨어를 과학 분야나 의료 분야 등에서 사용하기에는 적절하지가 않다.

이와 같은 분야에서 필요로 하는 것은 대화면 구현 능력과 기가바이트 이상의 데이터 처리 능력인데, 이는 PC 기반의 단일 그래픽 가속기에서는 처리가 불가능하다. 보통 이런 대화면, 대용량의 처리를 위해서는 서버용 그래픽 하드웨어가 사용된다. 하지만 그 비용이 워낙 고가이기 때문에 널리 사용되는데 많은 제약점이 되고 있다. 따라서 현재는 저렴한 단일 그래픽 가속기를 사용하여, 과학이나 영화산업, 의료분야 등에서 사용 가능한 고성능의 처리환경을 구축할 수 있는 분산 렌더링에 대한 연구가 활발히 진행되고 있다

G Humphreys, M. Eldridge, I. Buck, G. Stoll, M. Everett, and P. Hanrahan. WireGL: A Scalable Graphics System for Clusters. Proceedings of SIGGRAPH 2001. pp 129 - 140

Greg Humphreys, Mike Houston, Ren Ng, Randall Frank, Sean Ahern, Peter D. Kirchner, James T. Klosowski, Chromium: a stream-processing framework for interactive rendering on clusters, ACM Transactions on Graphics Volume 21 , Issue 3 Pages: 693 - 702, July 2002

: 분산 렌더링은 네트워크를 통해 연결된 여러 대의 렌더링 머신을 병렬적으로 동작시킴으로써 보다 높은 성능을 구현하는 방법이다. 각각의 렌더링 머신은 일반 PC기반의 하드웨어를 그대로 사용하기 때문에 서버급 그래픽 하드웨어나 보드레벨의 병렬 구조 그래픽 카드에 비해서 비교적 저렴하게 구현될 수 있으며, 후에 성능 증가를 위한 업그레이드 비용도 비교적 저렴하다.

필요에 맞게 각 렌더링 머신의 CPU나 단일 그래픽 카드, 네트워크 카드 등만을 교체하는 방식으로 업그레이드가 이루어지기 때문에, 대형의 서버를 유지하는 것보다 저렴하게 성능을 향상시키면서도 3개월 단위로 바뀌는 현재의 컴퓨터 환경에 보다 유연하게 대처할 수 있다. 하지만 이 분산 렌더링 기법은 네트워크의 전송량에 따라 시스템 전체의 성능이 크게 좌우된다는 큰 단점이 있다.

분산 렌더링 기법은 기본적으로 네트워크에 연결된 렌더링 유닛을 사용하여 렌더링을 하기 때문에 이 렌더링 유닛들 간에 필요한 데이터를 주고 받는 과정이 필연적이다. 현재의 네트워크 환경이 과거와 비교해서 많이 빨라졌다고는 하지만, 아직까지는 컴퓨터 내부의 전송 속도와는 비교할 수 없을 만큼 느리다. 따라서 단일 렌더링 유닛에서 충분한 연산 성능을 발휘하더라도, 처리에 필요한 데이터를 받지 못하거나, 처리가 끝난 결과 값을 전송할 수가 없어서 결과적으로 시스템 전체의 성능이 저하되는 현상이 발생한다. 이를 극복하기 위해선 여러 방안이 있겠지만, 본질적으로 네트워크를 통해 전송되는 데이터의 양을 감소시키는 것이 가장 좋은 방법이다.

: 보통 영화용 필름 한 장(한프레임)의 렌더링 시간은 약 2시간에서 길게는 10시간정도 걸리게 된다. 또한 이러한 영화는 초당 24프레임으로 재생됨으로 1시간 30분 분량의 영화를 제작하기 위해서는 수 만시간의 렌더링 시간이 요구된다. 결론적으로 3D CG 제작에 필요한 렌더링 작업을 빠른 시간에 처리하기 위하여실제 Rendering을 수행하는 복수의 Workstation 혹은 Server들은 네트웍 장비 등을 이용하여 하나의 대형 시스템으로 통합되고, 작업자는 마치 한 대의 시스템을 사용하는 것처럼 손쉽게 전체 시스템 및 작업을 컨트롤할 수 있는 통합 시스템을 만들어 사용할 수 있겠끔 하기 위해 네트워크 분산렌더링을 위한 프로그램인 Smedge와 같은 제품을 사용하는 것이다.


: 네트워크 분산 렌더링을 위한 프로그램

- http://www.uberware.net Smedge (마야, 맥스, 쉐이크등 지원)

- http://www.vvertex.com Muster

- http://wwwrendercorp.com RenderMax Server

- http://www.stationx.com Spider (라이트웨이브 렌더링 툴)-현재 마야 지원

: 기본적인 네트워크 렌더링에 대한 개념을 알기 위해 간략하나마 설명해 보았다. 이번에는 실제적으로 네트워크 분산렌더링을 구현할 수 있는 Smedge에 대해 알아보자.

▣ Pre-Smedge Checklist

1. 렌더 클라이언트에 마야 인스톨 하기

- 각 클라이언트로 사용될 컴퓨터에 마야를 설치한다.

- Ex) Program FilesAliasWavefrontMaya 5.0

2. 공유된 프로젝트 공간 설정

- 모든 클라이언트 컴퓨터의 네트워크 드라이브를 동일 볼륨하에 연결한다.

- Ex) 네트워트 드라이브 설정 nthma-serverd$ (Z:)

3. 렌더 클라이언트에 Smedge 설치하기

- 각 클라이언트로 사용될 컴퓨터에 Smedge를 설치한다

4. 렌더를 위한 Smedge 설정


- Ex) 렌더러로 Maya를 선택했을 경우 실행할 수 있는 경로 지정

C:Program FilesAliasWavefrontMaya5.0binRender.exe

- 라이센스를 확인했는가를 최종 확인

5. 테스트 하기

: 위의 1-5번의 과정은 후에 설명하겠지만 전용서버를 기본 모델로 클라이언트가 세팅이 되어있는 형태의 과정이다. 이 다섯과정은 네트워크 분산렌더링을 하기 위한 기본이 되므로 반드시 선행적으로 이루어져야 한다. 또한 이 과정을 보여 주기 위해 Maya의 Scene을 예를 들기 위해 설정했지만 Maya 이외에도 3D Studio Max, Softimage, Lightwave, Shake등의 렌더도 모두 지원하므로 테스트 해 보기 바란다. 그럼 이제 Smedge의 인스톨 과정부터 시작해서 심도있게 알아보도록 하자.

▣ Installing Smedge

- Smege 안에는 인스톨 프로그램이 딸려있다. 그러나 Smege는 또한 자체적으로 어떠한 컴퓨터 환경에서도 Smege.exe를 실행함으로써 설치할 수 있다. Smedge를 실행하기 위해 필요한 5개의 파일이 있다.

Smedge.exe
The executable itself

Smedge.exe
A supporting appliction for crash protection

Platform.dll
A library of Win32 network functions

Smedge.hlp
The help file

Smedge.cnt
The contents file for the help system

- 이 외의 파일들은 Smedge를 구동시키는데 직접적으로 필요한 파일들은 아니다.

- Smedge를 실행한 후에 우리는 Smedge.exe 파일로 만들어진 같은 디렉토리를 개인의 컴퓨터 상에서 볼 수 있을 것이다. 이것들은 debugging log 파일들이다. 파일의 이름들은 우리에게 어떠한 컴퓨터가 이러한 log 정보를 만들어내는가를 알려줄 것이다. 또한 우리는 언제나 이 파일들을 삭제할수 있다. 문제가 생긴다면 그것들을 기술 지원팀에 log 파일을 보내어 기술적인 지원을 받을 수 있다. 이 파일은 Smedge에서 발생된 것에 관한 정보와 그것이 하려고 했던 것에 관한 모든 정보를 포함하고 있기 때문에 기술적인 지원을 통해 문제해결을 받을 수 있다.