ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Incredibuild - 네트워크 분산 빌딩시스템
    프로그래밍/프로그래밍 관련 2008. 3. 12. 17:48
    IncrediBuild 가 무엇이냐?

    IncrediBuild VC++ 의 느린(?) 컴파일 속도를 개선하기 만들어진 네트워크 분산 빌딩시스템 입니다. 큰 프로젝트를 Full Build 하면 컴파일 & 링크 시간이 오래 걸리는 것을 알 수 있을 것이다. C/C++ 언어만이 가지고 있는 장점이자 단점이기도 합니다. 이런 단점을 보완하기 위해 네트워크(TCP/IP)를 통해 한 프로젝트를 여러 PC에 분산해 컴파일 & 링크 하는 유틸리티입니다.

     

    IncrediBuild 의 최대 장점은 빠른 컴파일 & 링크 속도와 TCP/IP 만 된다면 원격지의 PC도 작업에 참여 시킬수가 있습니다. 그리고 VC++ 6.0 .NET을 지원하며, VC++ IDE 환경에 통합됩니다..

    설치 프로그램은 간단하다.

    [Coordinator]

    IncrediBuild 를 설치하기 위해서는 우선 코디네이터 서버를 설치 해야 합니다. 코디네이터란 것은 여기저기 흩어진 PC 들을 TCP/IP 를 통해 누군가 컴파일 & 링크 작업을 할 때 작업을 분산시켜 주는 역할을 합니다. 말 그대로 Coordinator 입니다. ㅡㅡ;
    [Agent]

     

    각각의 PC 에는 Agent(클라이언트) 모드로 설치를 하면 모든 준비가 끝납니다. 그리고 사용하면 됩니다.

    IncrediBuild 구성(Coordinator & Agent 관계에 대해서…)

     

    Agent (Client : Visual Studio IDE Add In)

    사용자 삽입 이미지


     

    Visual Studio IDE Add On 된 화면

    (우리가 많이 사용하는 DevPartner 처럼 툴바와 메뉴가 있습니다.^^)

    사용자 삽입 이미지


    IncrediBuild을 이용해서 컴파일을 하면 위 화면 보는 것과 같이 분산 네트워킹 컴파일 되는 과정을 볼 수 있습니다.

    프로젝트 탭을 선택하면 MSVC에서 컴파일 될 때(output 윈도우) 보는 화면과 동일한 화면을 볼 수 있습니다.

    사용자 삽입 이미지
     

    Summary 탭에서는 현재 컴파일에 사용되는 모든 Agent들을 Summary해서 보여줍니다.

    (19개의 Agent와 총 16개의 CPU 42.2GHz를 사용해서 컴파일 하고 있습니다. 와 거의 소형 슈퍼컴퓨터 수준 같습니다. *^^*)

    (설마 진짜 Apache Web 서버 컴파일 하는 모습일까요? 경고가 172개나 있는데 --;;;)

    사용자 삽입 이미지
     

    Coordinator(Server)

    각각의 Agent 상태를 확인할 수 있습니다

    사용자 삽입 이미지

    각각 Agent들에 통계치를 볼 수 있습니다.

    (Leopold Agent를 지운 것 같습니다. 이 화면을 통해서 Agent 지운 사람도 찾을 수 있습니다. ㅡㅡ;;;)

    사용자 삽입 이미지

    각각 Agent들의 네트워크 상태를 확인할 수 있습니다. 당연히 네트워크 상태가 좋을수록 컴파일 속도를 빨라 질 것입니다.

    Performance Increasement

    12 개 이상의 Agent 는 성능향상이 미미하다.

    [이유는 Multi CPU 컴퓨터에서 일정 수 이상의 CPU는 서로간의 데이터Coherency를 유지하는 비용이 증가하는 것과 같다고 생각됩니다. ^^;;;]

     

    그 외 특이사항

    -         Script를 지원한다. 이것을 이용해서 Build Machine를 구성하면 된다.

    -         각각의 Agent는 동일한 컴파일러와 환경을 구축해 놓아야 한다.(에이전트에 컴파일러가 없으면 당연히 컴파일이 안됩니다. *^^*)

    -         Agent <-> Agent, Agent <-> Coordinator 와의 네트워크 속도가 좋을수록 성능이 향상된다.

    -         컴파일 후 Link과정에서 시간이 기존 독립 컴퓨터에서 컴파일 할 때 보다 약간 더 걸린다. -> 왜냐하면 네트워크를 통해서 다른 컴퓨터(Agent)컴파일 된 라이브러리 파일을 가지고 와야 할 수가 있다.

    -         Agent HyperThreading CPU이면 Logical Processor는 사용하지 말고 Physical Processor 를 사용하도록 권고함. Default Setting CPU1개로 설정되어 있음

    ( Hyperthreading CPU는 두 개의 Logical CPU가 각각 입력 Queue를 가지고 하나의 Schedule Queue 통해서 Execution Core를 수행하는 구조(Trace Cahce도 공유)이므로 컴파일 과정에서 두 개의 Logical CPU 내부에서 데이터를 일치하기 위한 경쟁이 발생해서 HyperThreading을 적용 안하는 것이 빠른 것이라고 생각됩니다. ^^;;; )

    제가 실제 적용했던 프로젝트 경험

    1)      참고로 제가 예전 3D 클라이언트 엔진 프로젝트를 컴파일 하는데 그냥 한대의 컴퓨터에서 MSVC를 이용해서 Full Build 할 때 는 30분 정도 소요되던 시간이 IncrediBuild를 이용해서 1대의 Coordinator7대의 Agent를 설치해 컴파일을 해보니 약 7분 만에 컴파일이 완료 되었습니다.

    2)      트리니티 프로젝트 Full Build는 지금 약 2시간 30분 걸리는데 IncrediBuild를 이용하면 약 40분 정도 걸릴 것으로 예상됩니다.

    3)      IncrediBuild 제작사 홈페이지 주소 http://www.xoreax.com/main.htm

    댓글